Estoy tratando de ejecutar una tarea Ansible específica como un usuario diferente al que está ejecutando el libro de jugadas. Mi .ymlarchivo se ve así:
---
- hosts: staging_servers
tasks:
- name: check user
remote_user: someusername
shell: whoami
La ejecución de esta tarea me muestra que el whoamicomando devuelve un usuario diferente al que definí en la tarea (precisamente, devuelve el usuario que está definido en el hostsarchivo llamado ubuntu).
También intenté definir la tarea de esta manera:
---
- hosts: staging_servers
tasks:
- name: check user
sudo: yes
sudo_user: someusername
shell: whoami
pero luego Missing sudo passwordaparece el error ' ', aunque hay una línea en el sudoersarchivo que dice someusername ALL=(ALL) NOPASSWD:ALLy emite comandos con sudouna máquina remota, ya someusernameque no me pide una contraseña.
Entonces, ¿cómo puedo ejecutar la tarea específica como un usuario diferente que no es el usuario definido en el hostsarchivo o rootél mismo?
fuente

remote_userpredeterminado es el usuario actual en su máquina local, tal como lo hace ssh, en realidad.Missing sudo passworderror. ¿Hay alguna manera de evitar pedir una contraseña para ese usuario específico?ubuntu ALL=(someusername) NOPASSWD: ALLpero tengo que pensar en la seguridad detrás de esto ... ¿Hay alguna otra forma, excepto agregar esta línea a los sudoers?Tenga en cuenta que después de Ansible 1.9, la
sudoredacción fue reemplazada porbecome, por lo tantose convierte (juego de palabras):
Ver más detalles aquí: /programming//a/22749788/402727
fuente