diff --git a/lib/ansible/modules/web_infrastructure/ansible_tower/tower_settings.py b/lib/ansible/modules/web_infrastructure/ansible_tower/tower_settings.py new file mode 100644 index 0000000000..b3d07f99b1 --- /dev/null +++ b/lib/ansible/modules/web_infrastructure/ansible_tower/tower_settings.py @@ -0,0 +1,102 @@ +#!/usr/bin/python +# coding: utf-8 -*- + +# (c) 2018, Nikhil Jain +# 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()