Назад | Перейти на главную страницу

Инвентарь Ansible

Может ли кто-нибудь помочь мне с переменной инвентаря в Ansible?

У меня есть сервер, на котором вход root через ssh не разрешен, и я использовал для входа на сервер с обычным пользователем (MYUSER), а затем su - стать root. У меня есть аутентификация на основе ключей ssh ​​с пользователем (MYUSER). Теперь я хочу выполнить что-то вроде ниже.

ansible --private-key /PATH/TO/PRIVATE/KEY.KEY -i INVENTORY -m shell -a "whoami" all

Но я получаю вывод как MYUSER.

Я хочу войти на сервер с моими ключами ssh под пользователем MYUSER, а затем выполнить некоторые команды, используя модуль оболочки на сервере через пользователя root: ПРИМЕЧАНИЕ. У меня есть пароль root, который нужно указать в инвентаре. Ниже представлен инвентарь, который я создал. (^ ^) Я знаю, что это неправильно.

test-web.example.com ansible_ssh_host=X.X.X.X ansible_ssh_user=MYUSER ansible_become_method=su ansible_become_user=root ansible_become_pass=Xjdt@mdaj12

Исполнение:

[root@server ansi]# ansible --private-key /root/MASTER/audit/key.key -i test -m shell -a "whoami" all
test-web.example.com | SUCCESS | rc=0 >>
MYUSER 

Как я могу заставить это работать?

Ansible не станет привилегированным пользователем, пока вы явно не попросите об этом.

Там есть -b включите для этого доступные интерфейсы командной строки. Пытаться:

ansible all -b --private-key /root/MASTER/audit/key.key -i test -m shell -a "whoami"

Как сказал Константинг, переключатель -b или --become правильный.

в playbooks вы также можете добавить в каждую задачу или глобально

become: yes

и, возможно, дополнительно, если вы не хотите становиться root

become: yes
become_user: user2 

Строка вашего хост-файла выглядит нормально

однако я думаю, если вам не нужно указывать ansible_become_method = su (я думаю, что ansible будет использовать sudo или su по умолчанию, только если вы хотите, чтобы он принудительно использовал su, вам нужно указать его)

а также не ansible_ssh_host, если имя инвентаря является действительным доменом, привязанным к IP: test-web.example.com

также вам, вероятно, не нужно указывать:

ansible_become_user=root

только если вы не хотите, чтобы поведение по умолчанию было переключением на корневой каталог по умолчанию, а на другого пользователя, созданного вами вручную.

поэтому мои строки выглядят немного короче, больше похоже на это, если имя хоста является реальным адресом домена !:

www.domain.com ansible_user = nonrootuser ansible_become_pass = ROOTPASSWD

btw: ansible_user то же самое, что и ansible_ssh_user, только короче;) то же самое