Повторяющаяся тема, которая есть в моих сборниках пьес, состоит в том, что я часто должен выполнять команду с привилегиями sudo ( sudo: yes
), потому что я хотел бы сделать это для определенного пользователя. В идеале я бы предпочел использовать sudo для переключения на этого пользователя и выполнения команд в обычном режиме. Потому что тогда мне не нужно будет выполнять обычные почтовые команды, такие как уничтожение каталогов. Вот фрагмент из одной из моих пьес:
- name: checkout repo
git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
sudo: yes
- name: change perms
file: dest={{ dst }} state=directory mode=0755 owner=some_user
sudo: yes
В идеале я мог бы запускать команды или наборы команд от имени другого пользователя, даже если для этого пользователя требуется sudo или su.
sudo_user: "{{ ansible_ssh_user }}"
иначе вы получите синтаксическую ошибку yaml.become
система вместо "sudo *".New Ansible variables and command line options are added to set these values for the duration of a play.
@ Бретт, значит ли это, что последующие задачи после этого будут выполняться,some_user
а не исходный пользователь,remote_user
который использовался для подключения к хосту?В Ansible 2.x вы можете использовать
block
для группы задач:источник
В Ansible> 1.4 вы можете указать удаленного пользователя на уровне задач, что позволит вам войти в систему под этим пользователем и выполнить эту команду, не прибегая к sudo. Если вы не можете войти в систему под этим пользователем, то решение sudo_user также будет работать.
Смотрите http://docs.ansible.com/playbooks_intro.html#hosts-and-users
источник
Решением является использование
include
оператора сremote_user
var (опишите здесь: http://docs.ansible.com/playbooks_roles.html ), но это должно быть сделано в playbook, а не на уровне задач.источник
Вы можете указать,
become_method
чтобы переопределить метод по умолчанию, установленный вansible.cfg
(если есть), и который может быть установлен в один изsudo, su, pbrun, pfexec, doas, dzdo, ksu
.Должен отображаться
источник