2024-01-26 23:54:13 +00:00
|
|
|
#!/usr/bin/python
|
|
|
|
|
|
|
|
from __future__ import absolute_import, division, print_function
|
|
|
|
|
|
|
|
__metaclass__ = type
|
|
|
|
|
|
|
|
DOCUMENTATION = r"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
EXAMPLES = r"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
RETURN = r"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
from ansible.module_utils.basic import AnsibleModule
|
|
|
|
import traceback
|
|
|
|
|
|
|
|
try:
|
|
|
|
import requests
|
|
|
|
except ImportError:
|
|
|
|
HAS_REQUESTS = False
|
|
|
|
REQUESTS_IMPORT_ERROR = traceback.format_exc()
|
|
|
|
else:
|
|
|
|
REQUESTS_IMPORT_ERROR = None
|
|
|
|
HAS_REQUESTS = True
|
|
|
|
|
|
|
|
|
2024-01-27 20:11:36 +00:00
|
|
|
def bootstrap_acl(api_url):
|
|
|
|
# Your ACL bootstrap logic goes here
|
|
|
|
# You can use the 'requests' library to make HTTP requests to the Consul API
|
|
|
|
# For example:
|
|
|
|
# response = requests.post(api_url + '/v1/acl/bootstrap')
|
|
|
|
# Check the response and handle it accordingly
|
|
|
|
|
|
|
|
# For demonstration purposes, we assume the ACL bootstrap is successful
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
2024-01-26 23:54:13 +00:00
|
|
|
def run_module():
|
|
|
|
module_args = dict(
|
|
|
|
api_url=dict(type="str", required=True),
|
|
|
|
)
|
|
|
|
|
|
|
|
result = dict(changed=False, state="")
|
|
|
|
|
|
|
|
module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
|
|
|
|
|
2024-01-27 20:11:36 +00:00
|
|
|
api_url = module.params["api_url"]
|
|
|
|
|
|
|
|
try:
|
|
|
|
if not HAS_REQUESTS:
|
|
|
|
module.fail_json(
|
|
|
|
msg="Requests library is required but not installed. {}".format(
|
|
|
|
REQUESTS_IMPORT_ERROR
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
# Perform ACL Bootstrap
|
|
|
|
acl_bootstrap_result = bootstrap_acl(api_url)
|
|
|
|
|
|
|
|
if acl_bootstrap_result:
|
|
|
|
result["changed"] = True
|
|
|
|
result["state"] = "ACL Bootstrap successful"
|
|
|
|
else:
|
|
|
|
result["changed"] = False
|
|
|
|
result["state"] = "ACL Bootstrap failed"
|
|
|
|
|
|
|
|
module.exit_json(**result)
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
module.fail_json(
|
|
|
|
msg="An error occurred during ACL Bootstrap: {}".format(str(e))
|
|
|
|
)
|
|
|
|
|
2024-01-26 23:54:13 +00:00
|
|
|
|
|
|
|
def main():
|
|
|
|
run_module()
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|