Un tema recurrente que está en mis libros de jugadas ansibles es que a menudo debo ejecutar un comando con privilegios de sudo ( sudo: yes
) porque me gustaría hacerlo para un determinado usuario. Idealmente, preferiría usar sudo para cambiar a ese usuario y ejecutar los comandos normalmente. Porque entonces no tendré que limpiar mis comandos de publicación habituales, como los directorios de chowning. Aquí hay un fragmento de uno de mis libros de jugadas:
- 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, podría ejecutar comandos o conjuntos de comandos como un usuario diferente, incluso si requiere sudo para su para ese usuario.
sudo_user: "{{ ansible_ssh_user }}"
o obtendrá un error de sintaxis yaml.become
sistema en lugar de "sudo *".New Ansible variables and command line options are added to set these values for the duration of a play.
@Brett, entonces, ¿eso significa que las tareas posteriores después de esto se ejecutaránsome_user
y no el usuario originalremote_user
que se usó para conectarse al host, es correcto?En Ansible 2.x, puede usar el
block
grupo de tareas:fuente
En Ansible> 1.4 en realidad puede especificar un usuario remoto en el nivel de tarea que debería permitirle iniciar sesión como ese usuario y ejecutar ese comando sin recurrir a sudo. Si no puede iniciar sesión como ese usuario, la solución sudo_user también funcionará.
Ver http://docs.ansible.com/playbooks_intro.html#hosts-and-users
fuente
Una solución es usar la
include
declaración conremote_user
var (describir allí: http://docs.ansible.com/playbooks_roles.html ) pero debe hacerse en el libro de jugadas en lugar del nivel de tarea.fuente
Puede especificar
become_method
anular el método predeterminado establecido enansible.cfg
(si lo hay), y que se puede establecer en uno desudo, su, pbrun, pfexec, doas, dzdo, ksu
.Debe mostrar
fuente