mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Add 'tower_settings' module for managing Ansible Tower Settings (#43933)
* add the tower_settings module
This commit is contained in:
parent
22d5f5d97f
commit
884c74a6c5
3 changed files with 123 additions and 0 deletions
|
@ -0,0 +1,102 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
# coding: utf-8 -*-
|
||||||
|
|
||||||
|
# (c) 2018, Nikhil Jain <nikjain@redhat.com>
|
||||||
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
|
|
||||||
|
from __future__ import absolute_import, division, print_function
|
||||||
|
__metaclass__ = type
|
||||||
|
|
||||||
|
|
||||||
|
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||||
|
'status': ['preview'],
|
||||||
|
'supported_by': 'community'}
|
||||||
|
|
||||||
|
|
||||||
|
DOCUMENTATION = '''
|
||||||
|
---
|
||||||
|
module: tower_settings
|
||||||
|
author: "Nikhil Jain (@jainnikhil30)"
|
||||||
|
version_added: "2.7"
|
||||||
|
short_description: Modify Ansible Tower settings.
|
||||||
|
description:
|
||||||
|
- Get, Modify Ansible Tower settings. See
|
||||||
|
U(https://www.ansible.com/tower) for an overview.
|
||||||
|
options:
|
||||||
|
name:
|
||||||
|
description:
|
||||||
|
- Name of setting to get/modify
|
||||||
|
value:
|
||||||
|
description:
|
||||||
|
- Value to be modified for given setting.
|
||||||
|
extends_documentation_fragment: tower
|
||||||
|
'''
|
||||||
|
|
||||||
|
RETURN = ''' # '''
|
||||||
|
|
||||||
|
EXAMPLES = '''
|
||||||
|
- name: Set the value of AWX_PROOT_BASE_PATH
|
||||||
|
tower_settings:
|
||||||
|
name: AWX_PROOT_BASE_PATH
|
||||||
|
value: "/tmp"
|
||||||
|
register: testing_settings
|
||||||
|
|
||||||
|
- name: Set the value of AWX_PROOT_SHOW_PATHS
|
||||||
|
tower_settings:
|
||||||
|
name: "AWX_PROOT_SHOW_PATHS"
|
||||||
|
value: "'/var/lib/awx/projects/', '/tmp'"
|
||||||
|
register: testing_settings
|
||||||
|
|
||||||
|
- name: Set the LDAP Auth Bind Password
|
||||||
|
tower_settings:
|
||||||
|
name: "AUTH_LDAP_BIND_PASSWORD"
|
||||||
|
value: "Password"
|
||||||
|
no_log: true
|
||||||
|
'''
|
||||||
|
|
||||||
|
from ansible.module_utils.ansible_tower import TowerModule, tower_auth_config, tower_check_mode
|
||||||
|
|
||||||
|
try:
|
||||||
|
import tower_cli
|
||||||
|
import tower_cli.utils.exceptions as exc
|
||||||
|
|
||||||
|
from tower_cli.conf import settings
|
||||||
|
except ImportError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
argument_spec = dict(
|
||||||
|
name=dict(Required=True),
|
||||||
|
value=dict(Required=True),
|
||||||
|
)
|
||||||
|
|
||||||
|
module = TowerModule(
|
||||||
|
argument_spec=argument_spec,
|
||||||
|
supports_check_mode=False
|
||||||
|
)
|
||||||
|
|
||||||
|
json_output = {}
|
||||||
|
|
||||||
|
name = module.params.get('name')
|
||||||
|
value = module.params.get('value')
|
||||||
|
|
||||||
|
tower_auth = tower_auth_config(module)
|
||||||
|
with settings.runtime_values(**tower_auth):
|
||||||
|
tower_check_mode(module)
|
||||||
|
try:
|
||||||
|
setting = tower_cli.get_resource('setting')
|
||||||
|
result = setting.modify(setting=name, value=value)
|
||||||
|
|
||||||
|
json_output['id'] = result['id']
|
||||||
|
json_output['value'] = result['value']
|
||||||
|
|
||||||
|
except (exc.ConnectionError, exc.BadRequest) as excinfo:
|
||||||
|
module.fail_json(msg='Failed to modify the setting: {0}'.format(excinfo), changed=False)
|
||||||
|
|
||||||
|
json_output['changed'] = result['changed']
|
||||||
|
module.exit_json(**json_output)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
2
test/integration/targets/tower_settings/aliases
Normal file
2
test/integration/targets/tower_settings/aliases
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
cloud/tower
|
||||||
|
shippable/tower/group1
|
19
test/integration/targets/tower_settings/tasks/main.yml
Normal file
19
test/integration/targets/tower_settings/tasks/main.yml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
- name: Set the value of AWX_PROOT_SHOW_PATHS
|
||||||
|
tower_settings:
|
||||||
|
name: "AWX_PROOT_SHOW_PATHS"
|
||||||
|
value: "'/var/lib/awx/projects/', '/tmp'"
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- "result is changed"
|
||||||
|
|
||||||
|
- name: Set the value of AWX_PROOT_BASE_PATH
|
||||||
|
tower_settings:
|
||||||
|
name: AWX_PROOT_BASE_PATH
|
||||||
|
value: "/tmp"
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- "result.value == '/tmp'"
|
Loading…
Reference in a new issue