Ansible и "sudo su -" - PullRequest
       1

Ansible и "sudo su -"

0 голосов
/ 01 ноября 2019

Я пытаюсь создать сборник рассказов, который будет работать в моей текущей рабочей среде. Я захожу на сервер как пользователь "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 *

Это звучит правильно?

1 Ответ

0 голосов
/ 01 ноября 2019

Я не нахожу никаких проблем с yaml, фактически я проверил это в моей среде ansible2.8.

---
- hosts: node1
  gather_facts: False
  remote_user: ansible
  become: yes
  become_user: testuser
  tasks:
    - name: who
      shell: whoami
      register: output

    - debug: var=output

и инвентарь:

[node1]
node1.example.com ansible_become_method=su ansible_become_exe="sudo su"

вывод:

TASK [debug] ****************************************************************************************************************************
ok: [node1.example.com] =>

Я бы попросил вас увеличить таймер ssh (раскомментируйте строку тайм-аута и установите ее равной 60, независимо от того, сколько секунд вы хотите) в файле ansible.cfg и просмотрите этот сценарий.

# SSH timeout
#timeout = 300
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...