Powtarzającym się motywem w moich playbookach jest to, że często muszę wykonać polecenie z uprawnieniami sudo ( sudo: yes
), ponieważ chciałbym to zrobić dla określonego użytkownika. W idealnym przypadku wolałbym użyć sudo, aby przełączyć się na tego użytkownika i normalnie wykonywać polecenia. Ponieważ wtedy nie będę musiał czyścić moich zwykłych poleceń pocztowych, takich jak chowning katalogów. Oto fragment jednego z moich poradników:
- 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
W idealnym przypadku mógłbym uruchamiać polecenia lub zestawy poleceń jako inny użytkownik, nawet jeśli wymaga to od sudo su dla tego użytkownika.
sudo_user: "{{ ansible_ssh_user }}"
przeciwnym razie wystąpi błąd składni yaml.become
system zamiast „sudo *”.New Ansible variables and command line options are added to set these values for the duration of a play.
@Brett czy to oznacza, że kolejne zadania będą wykonywane przezsome_user
pierwotnego użytkownika,remote_user
który był używany do łączenia się z hostem, a nie przez pierwotnego użytkownika , czy to prawda?W Ansible 2.x możesz użyć
block
dla grupy zadań:źródło
W Ansible> 1.4 możesz faktycznie określić zdalnego użytkownika na poziomie zadania, który powinien pozwolić ci zalogować się jako ten użytkownik i wykonać to polecenie bez uciekania się do sudo. Jeśli nie możesz zalogować się jako ten użytkownik, rozwiązanie sudo_user również będzie działać.
Zobacz http://docs.ansible.com/playbooks_intro.html#hosts-and-users
źródło
Rozwiązaniem jest użycie
include
instrukcji zremote_user
var (opisz je tam: http://docs.ansible.com/playbooks_roles.html ), ale należy to zrobić na poziomie podręcznika zamiast zadania.źródło
Możesz określić,
become_method
aby zastąpić domyślną metodę ustawioną wansible.cfg
(jeśli istnieje), a którą można ustawić na jedną zsudo, su, pbrun, pfexec, doas, dzdo, ksu
.Powinien wyświetlić
źródło