tutorial introducción for dummies comentarios automatizacion ansible

ansible - introducción - ¿Cómo cambiar a un usuario por tarea o conjunto de tareas?



comentarios en ansible (4)

Un tema recurrente que está en mis libros de jugadas ansible es que a menudo debo ejecutar un comando con privilegios de sudo: yes ( sudo: yes ) porque me gustaría hacerlo para un determinado usuario. Lo ideal sería usar sudo para cambiar a ese usuario y ejecutar los comandos normalmente. Porque entonces no tendré que hacer mis tareas habituales de limpieza de correos, tales como directorios privados. 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 to su para ese usuario.


Con Ansible 1.9 o posterior

Ansible usa las directivas become , become_user y become_method para lograr una escalada de privilegios. Puede aplicarlos a una obra de teatro o libro de jugadas completo, configurarlos en un libro de jugadas incluido o configurarlos para una tarea en particular.

- name: checkout repo git: repo=https://github.com/some/repo.git version=master dest={{ dst }} become: yes become_user: some_user

Puede usar become_with para especificar cómo se logra la escalada de privilegios, siendo sudo defecto.

La directiva está vigente para el alcance del bloque en el que se usa ( examples ).

Consulte Hosts and Users para ver ejemplos adicionales y Become (Privilege Escalation) para obtener documentación más detallada.

Además de las directivas become y become_user ámbito de tarea, Ansible 1.9 agregó algunas variables nuevas y opciones de línea de comando para establecer estos valores durante la duración de una obra en ausencia de directivas explícitas:

A partir de Ansible 2.0.2.0, la sintaxis sudo / sudo_user descrita a continuación aún funciona, pero el aviso de desaprobación establece, "Esta característica se eliminará en una versión futura".

Sintaxis anterior, obsoleta a partir de Ansible 1.9 y programada para su eliminación:

- name: checkout repo git: repo=https://github.com/some/repo.git version=master dest={{ dst }} sudo: yes sudo_user: some_user


En Ansible 2.x, puede usar el block para un grupo de tareas:

- block: - name: checkout repo git: repo: https://github.com/some/repo.git version: master dest: "{{ dst }}" - name: change perms file: dest: "{{ dst }}" state: directory mode: 0755 owner: some_user become: yes become_user: some user


En Ansible> 1.4 puede especificar un usuario remoto en el nivel de la 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á.

--- - hosts: webservers remote_user: root tasks: - name: test connection ping: remote_user: yourname

Ver http://docs.ansible.com/playbooks_intro.html#hosts-and-users