Server IP : 85.214.239.14 / Your IP : 3.133.134.190 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /lib/python3/dist-packages/ansible_collections/theforeman/foreman/plugins/modules/ |
Upload File : |
#!/usr/bin/python # -*- coding: utf-8 -*- # (c) 2019 Christoffer Reijer (Basalt AB) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. from __future__ import absolute_import, division, print_function __metaclass__ = type DOCUMENTATION = ''' --- module: user version_added: 1.0.0 short_description: Manage Users description: - Create, update, and delete users author: - "Christoffer Reijer (@ephracis) Basalt AB" options: login: aliases: - name description: - Name of the user required: true type: str firstname: description: - First name of the user required: false type: str lastname: description: - Last name of the user required: false type: str mail: description: - Email address of the user - Required when creating a new user required: false type: str description: description: - Description of the user required: false type: str admin: description: - Whether or not the user is an administrator required: false default: false type: bool user_password: description: - Password for the user. - When this parameter is set, the module will not be idempotent. required: false type: str default_location: description: - The location that the user uses by default required: false type: str default_organization: description: - The organizxation that the user uses by default required: false type: str auth_source: description: - Authentication source where the user exists required: false type: str timezone: description: - Timezone for the user - If blank it will use the browser timezone. required: false type: str choices: - 'International Date Line West' - 'American Samoa' - 'Midway Island' - 'Hawaii' - 'Alaska' - 'Pacific Time (US & Canada)' - 'Tijuana' - 'Arizona' - 'Chihuahua' - 'Mazatlan' - 'Mountain Time (US & Canada)' - 'Central America' - 'Central Time (US & Canada)' - 'Guadalajara' - 'Mexico City' - 'Monterrey' - 'Saskatchewan' - 'Bogota' - 'Eastern Time (US & Canada)' - 'Indiana (East)' - 'Lima' - 'Quito' - 'Atlantic Time (Canada)' - 'Caracas' - 'Georgetown' - 'La Paz' - 'Puerto Rico' - 'Santiago' - 'Newfoundland' - 'Brasilia' - 'Buenos Aires' - 'Greenland' - 'Montevideo' - 'Mid-Atlantic' - 'Azores' - 'Cape Verde Is.' - 'Dublin' - 'Edinburgh' - 'Lisbon' - 'London' - 'Monrovia' - 'UTC' - 'Amsterdam' - 'Belgrade' - 'Berlin' - 'Bern' - 'Bratislava' - 'Brussels' - 'Budapest' - 'Casablanca' - 'Copenhagen' - 'Ljubljana' - 'Madrid' - 'Paris' - 'Prague' - 'Rome' - 'Sarajevo' - 'Skopje' - 'Stockholm' - 'Vienna' - 'Warsaw' - 'West Central Africa' - 'Zagreb' - 'Zurich' - 'Athens' - 'Bucharest' - 'Cairo' - 'Harare' - 'Helsinki' - 'Jerusalem' - 'Kaliningrad' - 'Kyiv' - 'Pretoria' - 'Riga' - 'Sofia' - 'Tallinn' - 'Vilnius' - 'Baghdad' - 'Istanbul' - 'Kuwait' - 'Minsk' - 'Moscow' - 'Nairobi' - 'Riyadh' - 'St. Petersburg' - 'Tehran' - 'Abu Dhabi' - 'Baku' - 'Muscat' - 'Samara' - 'Tbilisi' - 'Volgograd' - 'Yerevan' - 'Kabul' - 'Ekaterinburg' - 'Islamabad' - 'Karachi' - 'Tashkent' - 'Chennai' - 'Kolkata' - 'Mumbai' - 'New Delhi' - 'Sri Jayawardenepura' - 'Kathmandu' - 'Almaty' - 'Astana' - 'Dhaka' - 'Urumqi' - 'Rangoon' - 'Bangkok' - 'Hanoi' - 'Jakarta' - 'Krasnoyarsk' - 'Novosibirsk' - 'Beijing' - 'Chongqing' - 'Hong Kong' - 'Irkutsk' - 'Kuala Lumpur' - 'Perth' - 'Singapore' - 'Taipei' - 'Ulaanbaatar' - 'Osaka' - 'Sapporo' - 'Seoul' - 'Tokyo' - 'Yakutsk' - 'Adelaide' - 'Darwin' - 'Brisbane' - 'Canberra' - 'Guam' - 'Hobart' - 'Melbourne' - 'Port Moresby' - 'Sydney' - 'Vladivostok' - 'Magadan' - 'New Caledonia' - 'Solomon Is.' - 'Srednekolymsk' - 'Auckland' - 'Fiji' - 'Kamchatka' - 'Marshall Is.' - 'Wellington' - 'Chatham Is.' - "Nuku'alofa" - 'Samoa' - 'Tokelau Is.' locale: description: - The language locale for the user required: false type: str choices: - 'ca' - 'de' - 'en' - 'en_GB' - 'es' - 'fr' - 'gl' - 'it' - 'ja' - 'ko' - 'nl_NL' - 'pl' - 'pt_BR' - 'ru' - 'sv_SE' - 'zh_CN' - 'zh_TW' roles: description: - List of roles assigned to the user required: false type: list elements: str extends_documentation_fragment: - theforeman.foreman.foreman - theforeman.foreman.foreman.entity_state - theforeman.foreman.foreman.taxonomy ''' EXAMPLES = ''' - name: Create a user theforeman.foreman.user: name: test firstname: Test lastname: Userson mail: test.userson@example.com description: Dr. Test Userson admin: false user_password: s3cret default_location: Test Location default_organization: Test Organization auth_source: Internal timezone: Stockholm locale: sv_SE roles: - Manager locations: - Test Location organizations: - Test Organization state: present - name: Update a user theforeman.foreman.user: name: test firstname: Tester state: present - name: Change password theforeman.foreman.user: name: test user_password: newp@ss ''' RETURN = ''' entity: description: Final state of the affected entities grouped by their type. returned: success type: dict contains: users: description: List of users. type: list elements: dict ''' from ansible_collections.theforeman.foreman.plugins.module_utils.foreman_helper import ( ForemanTaxonomicEntityAnsibleModule, ) # List of allowed timezones timezone_list = [ 'International Date Line West', 'American Samoa', 'Midway Island', 'Hawaii', 'Alaska', 'Pacific Time (US & Canada)', 'Tijuana', 'Arizona', 'Chihuahua', 'Mazatlan', 'Mountain Time (US & Canada)', 'Central America', 'Central Time (US & Canada)', 'Guadalajara', 'Mexico City', 'Monterrey', 'Saskatchewan', 'Bogota', 'Eastern Time (US & Canada)', 'Indiana (East)', 'Lima', 'Quito', 'Atlantic Time (Canada)', 'Caracas', 'Georgetown', 'La Paz', 'Puerto Rico', 'Santiago', 'Newfoundland', 'Brasilia', 'Buenos Aires', 'Greenland', 'Montevideo', 'Mid-Atlantic', 'Azores', 'Cape Verde Is.', 'Dublin', 'Edinburgh', 'Lisbon', 'London', 'Monrovia', 'UTC', 'Amsterdam', 'Belgrade', 'Berlin', 'Bern', 'Bratislava', 'Brussels', 'Budapest', 'Casablanca', 'Copenhagen', 'Ljubljana', 'Madrid', 'Paris', 'Prague', 'Rome', 'Sarajevo', 'Skopje', 'Stockholm', 'Vienna', 'Warsaw', 'West Central Africa', 'Zagreb', 'Zurich', 'Athens', 'Bucharest', 'Cairo', 'Harare', 'Helsinki', 'Jerusalem', 'Kaliningrad', 'Kyiv', 'Pretoria', 'Riga', 'Sofia', 'Tallinn', 'Vilnius', 'Baghdad', 'Istanbul', 'Kuwait', 'Minsk', 'Moscow', 'Nairobi', 'Riyadh', 'St. Petersburg', 'Tehran', 'Abu Dhabi', 'Baku', 'Muscat', 'Samara', 'Tbilisi', 'Volgograd', 'Yerevan', 'Kabul', 'Ekaterinburg', 'Islamabad', 'Karachi', 'Tashkent', 'Chennai', 'Kolkata', 'Mumbai', 'New Delhi', 'Sri Jayawardenepura', 'Kathmandu', 'Almaty', 'Astana', 'Dhaka', 'Urumqi', 'Rangoon', 'Bangkok', 'Hanoi', 'Jakarta', 'Krasnoyarsk', 'Novosibirsk', 'Beijing', 'Chongqing', 'Hong Kong', 'Irkutsk', 'Kuala Lumpur', 'Perth', 'Singapore', 'Taipei', 'Ulaanbaatar', 'Osaka', 'Sapporo', 'Seoul', 'Tokyo', 'Yakutsk', 'Adelaide', 'Darwin', 'Brisbane', 'Canberra', 'Guam', 'Hobart', 'Melbourne', 'Port Moresby', 'Sydney', 'Vladivostok', 'Magadan', 'New Caledonia', 'Solomon Is.', 'Srednekolymsk', 'Auckland', 'Fiji', 'Kamchatka', 'Marshall Is.', 'Wellington', 'Chatham Is.', "Nuku'alofa", 'Samoa', 'Tokelau Is.', ] # List of allowed locales locale_list = [ 'ca', 'de', 'en', 'en_GB', 'es', 'fr', 'gl', 'it', 'ja', 'ko', 'nl_NL', 'pl', 'pt_BR', 'ru', 'sv_SE', 'zh_CN', 'zh_TW', ] class ForemanUserModule(ForemanTaxonomicEntityAnsibleModule): pass def main(): module = ForemanUserModule( foreman_spec=dict( login=dict(required=True, aliases=['name']), firstname=dict(required=False), lastname=dict(required=False), mail=dict(required=False), description=dict(required=False), admin=dict(required=False, type='bool', default=False), user_password=dict(required=False, no_log=True, flat_name='password'), default_location=dict(required=False, type='entity', resource_type='locations'), default_organization=dict(required=False, type='entity', resource_type='organizations'), auth_source=dict(required=False, type='entity'), timezone=dict(required=False, choices=timezone_list), locale=dict(required=False, choices=locale_list), roles=dict(required=False, type='entity_list'), ), entity_key='login', ) with module.api_connection(): entity = module.lookup_entity('entity') if not module.desired_absent: if 'mail' not in module.foreman_params: if not entity: module.fail_json(msg="The 'mail' parameter is required when creating a new user.") else: module.foreman_params['mail'] = entity['mail'] module.run() if __name__ == '__main__': main()