Um tema recorrente que está nos meus playbooks ansíveis é que muitas vezes devo executar um comando com privilégios sudo ( sudo: yes
) porque gostaria de fazê-lo para um determinado usuário. Idealmente, prefiro usar o sudo para alternar para esse usuário e executar os comandos normalmente. Porque então não precisarei limpar meus comandos de postagem habituais, como diretórios de chowning. Aqui está um trecho de um dos meus playbooks:
- 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
Idealmente, eu poderia executar comandos ou conjuntos de comandos como um usuário diferente, mesmo que exija que o sudo su para esse usuário.
sudo_user: "{{ ansible_ssh_user }}"
ou você receberá um erro de sintaxe yaml.become
sistema em vez de "sudo *".New Ansible variables and command line options are added to set these values for the duration of a play.
@Brett, isso significa que as tarefas seguintes serão executadassome_user
e não o usuário originalremote_user
que foi usado para se conectar ao host, está correto?No Ansible 2.x, você pode usar o
block
grupo de tarefas:fonte
No Ansible> 1.4, você pode realmente especificar um usuário remoto no nível da tarefa, o que deve permitir que você efetue login como usuário e execute esse comando sem recorrer ao sudo. Se você não conseguir fazer o login como esse usuário, a solução sudo_user também funcionará.
Consulte http://docs.ansible.com/playbooks_intro.html#hosts-and-users
fonte
Uma solução é usar a
include
instrução comremote_user
var (descreva lá: http://docs.ansible.com/playbooks_roles.html ), mas isso deve ser feito no playbook em vez de no nível da tarefa.fonte
Você pode especificar
become_method
para substituir o método padrão definido emansible.cfg
(se houver) e qual pode ser definido como um dossudo, su, pbrun, pfexec, doas, dzdo, ksu
.Deve exibir
fonte