Может ли кто-нибудь помочь мне с переменной инвентаря в 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, только короче;) то же самое