#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 /… >. Возможно, один из них может вам помочь, в противном случае отправьте свой