===== Ad Hoc команды ===== C помощью Ad-hoc команд — мы можем запускать различные действия из командной строки. Это самый простой и быстрый способ использования Ansible. ==== Проверить существование нового пользователя, создать нового пользователя если он не существует ==== В данном случае такой пользователь есть поэтому изменения в состоянии "changed": false. werwolf@werwolf-System-Product-Name:~/ansible-demo$ ansible -i hosts.ini -m user -a "name=werwolf state=present" demo 127.0.0.1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "append": false, "changed": false, "comment": "werwolf", "group": 1000, "home": "/home/werwolf", "move_home": false, "name": "werwolf", "shell": "/bin/bash", "state": "present", "uid": 1000 } В данном случае такого пользователя нет, но для создания нового пользователя нехватает прав sudo, выскакивает ошибка. werwolf@werwolf-System-Product-Name:~/ansible-demo$ ansible -i hosts.ini -m user -a "name=werwolf2 state=present" demo 127.0.0.1 | FAILED! => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "msg": "useradd: Permission denied.\nuseradd: cannot lock /etc/passwd; try again later.\n", "name": "werwolf2", "rc": 1 } ==== Передаем параметры для выполнения команды под sudo ==== Передаем параметры для выполнения команды под sudo '' -b '', и запрос пароля '' -K '' werwolf@werwolf-System-Product-Name:~/ansible-demo$ ansible -i hosts.ini -m user -a "name=werwolf2 state=present" -b -K demo BECOME password: 127.0.0.1 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": true, "comment": "", "create_home": true, "group": 1001, "home": "/home/werwolf2", "name": "werwolf2", "shell": "/bin/sh", "state": "present", "system": false, "uid": 1001 } Удаляем пользователя. werwolf@werwolf-System-Product-Name:~/ansible-demo$ ansible -i hosts.ini -m user -a "name=werwolf2 state=absent" -b -K demo BECOME password: 127.0.0.1 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": true, "force": false, "name": "werwolf2", "remove": false, "state": "absent" } ==== Передаем параметры sudo через переменные среды ==== Передаем параметры sudo через переменные среды ''-e "ansible_become=true ansible_become_password=123"'' werwolf@werwolf-System-Product-Name:~/ansible-demo$ ansible -i hosts.ini -m user -a "name=werwolf2 state=present" -e "ansible_become=true ansible_become_password=123" demo 127.0.0.1 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": true, "comment": "", "create_home": true, "group": 1001, "home": "/home/werwolf2", "name": "werwolf2", "shell": "/bin/sh", "state": "present", "stderr": "useradd: warning: the home directory /home/werwolf2 already exists.\nuseradd: Not copying any file from skel directory into it.\n", "stderr_lines": [ "useradd: warning: the home directory /home/werwolf2 already exists.", "useradd: Not copying any file from skel directory into it." ], "system": false, "uid": 1001 } werwolf@werwolf-System-Product-Name:~/ansible-demo$ ansible -i hosts.ini -m user -a "name=werwolf2 state=absent" -e "ansible_become=true ansible_become_password=123" demo 127.0.0.1 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": true, "force": false, "name": "werwolf2", "remove": false, "state": "absent" } ==== Передаем параметры sudo через inventory файл ==== hosts.ini [demo] 127.0.0.1 ansible_user=werwolf ansible_port=2222 ansible_become=true ansible_become_password=123 werwolf@werwolf-System-Product-Name:~/ansible-demo$ ansible -i hosts.ini -m user -a "name=werwolf2 state=present" demo 127.0.0.1 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": true, "comment": "", "create_home": true, "group": 1001, "home": "/home/werwolf2", "name": "werwolf2", "shell": "/bin/sh", "state": "present", "stderr": "useradd: warning: the home directory /home/werwolf2 already exists.\nuseradd: Not copying any file from skel directory into it.\n", "stderr_lines": [ "useradd: warning: the home directory /home/werwolf2 already exists.", "useradd: Not copying any file from skel directory into it." ], "system": false, "uid": 1001 } werwolf@werwolf-System-Product-Name:~/ansible-demo$ ansible -i hosts.ini -m user -a "name=werwolf2 state=absent" demo 127.0.0.1 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": true, "force": false, "name": "werwolf2", "remove": false, "state": "absent" }