Я пытаюсь выполнить определенную задачу Ansible как другой пользователь, чем тот, который выполняет сборник пьес. Мой .yml
файл похож на это:
---
- hosts: staging_servers
tasks:
- name: check user
remote_user: someusername
shell: whoami
Выполнение этой задачи показывает мне это whoami
управляйте возвращает другого пользователя, чем я определил в задаче (точно, возвращает пользователя, который определяется в hosts
файл называют ubuntu
).
Я также пытался определить задачу как это:
---
- hosts: staging_servers
tasks:
- name: check user
sudo: yes
sudo_user: someusername
shell: whoami
но затем я добираюсь'Missing sudo password
'ошибка, хотя существует строка в sudoers
файл, который говорит someusername ALL=(ALL) NOPASSWD:ALL
и выдача команд с sudo
на удаленной машине как someusername
не просит у меня пароль.
Так, как я могу выполнить определенную задачу как другой пользователь, в котором не определяемое пользователем hosts
файл или root
самостоятельно?
Вы неправильно понимаете оба параметра. там:
remote_user - это параметр Ansible, который управляет пользователем SSH, который Ansible использует для подключения: ssh $ {REMOTE_USER} @remotehost
someusername ALL = (ALL) NOPASSWD: ALL - это конфигурация sudo, которая позволяет пользователю someusername
выполнять все команды на любом хосте без пароля. Это не позволяет кому-либо запускать команды от имени someusername
, хотя
В идеале вы должны войти в систему напрямую как правильный пользователь , и это то, о чем remote_user
. Но обычно вы можете войти в систему только как администратор (скажем, ubuntu
) и должны выполнять команды sudo как другой пользователь (скажем, scrapy
). Затем вы должны оставить remote_user
пользователю, который входит в систему, и добавить к заданию следующие доступные свойства:
- name: log in as ubuntu and do something as scrapy
remote_user: ubuntu
sudo: true
sudo_user: scrapy
shell: do-something.sh
Обратите внимание, что после Ansible 1.9 формулировка sudo
была заменена на на
, таким образом,
sudo: yes
sudo_user: some_user
становится (предназначен каламбур):
become: yes
become_user: some_user
Подробнее см. здесь: https://stackoverflow.com/a/22749788/402727