Изменение Ansible становится командой

#bash #ansible #ansible-2.x

#bash #ansible #ansible-2.x

Вопрос:

В нашей организации у нас строгие правила для наших пользователей Linux. В нашем случае у нас есть пользователь, который может выполнить sudo su — myuser без пароля. Но как только мы добавим -c за командой su, это недопустимо.

Проблема в том, что Ansible добавляет -c при выполнении команды «стать», чтобы установить переменные среды.

My становится переменными:

 become: yes
become_user: myuser
become_method: sudo
become_flags: 'su - '
  

Ansible выполняет следующее:

 sudo su - myuser -c '"'"'"'"'"'"'"'"'/bin/sh -c '"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-lksjasdhksldjfhsdklhfshsklhkljsh; /usr/bin/python /tmp/ansible-tmp-1602838989.23-135651442029159/setup.py
  

И эта ошибка вызвана:

 fatal: [xbi407cl03vm01.dbaas.ing.net]: FAILED! => {
    "msg": "Timeout (32s) waiting for privilege escalation prompt: "
}
  

Это вызывает тайм-аут, поскольку -c не разрешен.

Есть ли способ заставить Ansible запускать команду только после успешного выполнения команды become?

Или есть альтернативный способ смены пользователя для playbook?

Комментарии:

1. Нет и № 1) Вы разрешаете своему пользователю входить в интерактивный сеанс. Ansible не может это использовать. В более общем плане это известное ограничение: повышение привилегий должно быть общим 2) become — единственный способ повысить привилегии в ansible. Ваш последний выбор — подключиться напрямую как повышенный пользователь.

2. С Ansible существует множество плагинов become < github.com/ansible/ansible/tree/v2.8.0/lib/ansible/plugins /… >. Возможно, один из них может вам помочь, в противном случае отправьте свой