Я пытаюсь создать сборник рассказов, который будет работать в моей текущей рабочей среде. Я захожу на сервер как пользователь "myuser", используя ssh-ключи. Мне никогда не давали пароль, поэтому я его не знаю. Большинство команд, которые я запускаю, выполняются от имени другого пользователя, не являющегося пользователем root, например «appadmin». Я становлюсь этими пользователями через "sudo su - appadmin", поскольку у меня также нет паролей для этого пользователя.
Различные варианты, которые я пробовал, либо жалуются на "sudo: требуется пароль", либо истекло время ожиданиячерез 12 секунд. Я покажу этот второй пример.
Playbook очень прост:
---
- hosts: sudo-test
gather_facts: False
remote_user: myuser
become: yes
become_user: appadmin
tasks:
- name: who
shell: whoami > qwert.txt
Моя запись на хосте выглядит следующим образом:
[sudo-test]
appserver.example.com ansible_become_method=su ansible_become_exe="sudo su"
Это ошибка, которую яget:
pablo@host=> ansible-playbook test_sudo.yml
PLAY [sudo-test] ****************************************************************************************************
TASK [who] **********************************************************************************************************
fatal: [appserver.example.com]: FAILED! => {"msg": "Timeout (12s) waiting for privilege escalation prompt: "}
to retry, use: --limit @/home/pablo/ansible_dir/test_sudo.retry
PLAY RECAP **********************************************************************************************************
appserver.example.com : ok=0 changed=0 unreachable=0 failed=1
На данный момент я согласен, что playbook и инвентарь настроены правильно. Я считаю, что проблема в том, что / etc / sudoers не позволяет моему пользователю «appadmin» работать так, чтобы я мог использовать способность ansible стать другим пользователем. В этой теме описан похожий сценарий - и ограничения.
Соответствующий раздел / etc / sudoers выглядит следующим образом:
User myuser may run the following commands on this host:
(root) NOPASSWD: /bin/su - appadmin
Кажется, мне нужно иметьсистемный администратор изменит это на:
User myuser may run the following commands on this host:
(root) NOPASSWD: /bin/su - appadmin *
Это звучит правильно?