Estoy tratando de ejecutar una tarea Ansible específica como un usuario diferente al que está ejecutando el libro de jugadas. Mi .yml
archivo 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 whoami
comando devuelve un usuario diferente al que definí en la tarea (precisamente, devuelve el usuario que está definido en el hosts
archivo 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 password
aparece el error ' ', aunque hay una línea en el sudoers
archivo que dice someusername ALL=(ALL) NOPASSWD:ALL
y emite comandos con sudo
una máquina remota, ya someusername
que 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 hosts
archivo o root
él mismo?
fuente
remote_user
predeterminado es el usuario actual en su máquina local, tal como lo hace ssh, en realidad.Missing sudo password
error. ¿Hay alguna manera de evitar pedir una contraseña para ese usuario específico?ubuntu ALL=(someusername) NOPASSWD: ALL
pero 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
sudo
redacción fue reemplazada porbecome
, por lo tantose convierte (juego de palabras):
Ver más detalles aquí: /programming//a/22749788/402727
fuente