===== 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"
}