node.js - tutorial - npm




¿Con qué usuario ejecutará Ansible mis comandos? (2)

Fondo

Mi pregunta parece simple, pero se vuelve más compleja realmente rápido.

Básicamente, me cansé de mantener mis servidores manualmente (gritos en segundo plano) y decidí que era hora de encontrar una manera de hacer que un administrador de servidor sea mucho más habitable. Fue entonces cuando encontré a Ansible. Genial eh? Claro que es mejor hacer scripts de bash (gritos más fuertes) para todo lo que quería automatizar.

¿Cuál es el problema?

Estoy teniendo muchos problemas para averiguar a qué usuario se ejecutarán ciertas funciones en mi libro de jugadas de Ansible. También necesito la capacidad de especificar a qué usuario se ejecutarán ciertas tareas. Aquí hay algunos casos de uso específicos:

Clonando un repositorio como otro usuario:

Mi propósito con esto es ejecutar la aplicación web node.js de otro usuario, a quien llamaremos bill (que solo puede usar sudo para ejecutar un script que hice que inicie el servidor de nodo, en lugar de root o mi usuario que puede usar sudo para todos los comandos). Para hacer esto, necesito la capacidad de hacer que el módulo git de Ansible clone mi repositorio git como factura . ¿Como podría hacerlo?

Sabiendo cómo Ansible ganará root:

Según tengo entendido, puede configurar qué usuario Ansible se conectará al servidor que está manteniendo definiendo "usuario" y el comienzo del archivo de libro de jugadas. Esto es lo que no entiendo: si le digo que se conecte a través de mi nombre de usuario, Joe , y le pido que actualice un paquete a través del módulo apt, ¿cómo ganará el root? Sudo usualmente me pide mi contraseña, y prefiero mantenerla así (por seguridad).

Solicitud final

He rastreado los documentos de Ansible, he hecho algunos (lo que pensé que era exhaustivo) en Google, y en general solo traté de averiguarlo por mi cuenta, pero esta información me sigue eludiendo.

Soy muy nuevo en Ansible, y aunque en su mayor parte es directo, me beneficiaría enormemente si pudiera entender exactamente cómo funciona Ansible, a qué usuarios se ejecuta y cómo / dónde puedo especificar qué usuario usar en diferentes momentos.

Gracias toneladas por adelantado


Mis 2 centavos:

  1. Ansible usa su usuario local (por ejemplo, Mike) para ssh a la máquina remota. (Eso requirió a Mike para poder ssh a la máquina)
  2. Desde allí se puede cambiar a un usuario remoto si es necesario.
  3. También puede sudo si es necesario y si Mike está permitido. Si no se especifica ningún usuario, la raíz se seleccionará a través de su ~/.ansible.cfg en su máquina local.
  4. Si le proporciona a un usuario_remoto el parámetro sudo, entonces, como no.3, no usará root sino ese usuario.

Puede especificar diferentes situaciones y diferentes usuarios o sudo a través de los playbooks .

Los Playbook definen qué roles se ejecutarán en cada máquina que pertenece al inventario seleccionado.

Le sugiero que lea las mejores prácticas de Ansible para obtener una explicación sobre cómo configurar su infraestructura.

Ah, y por cierto, ya que no se está refiriendo a un módulo específico que se puede utilizar y su pregunta no está relacionada con python, entonces no encuentro ningún uso en su pregunta que tenga la etiqueta python.


Puede resultarle útil leer la sección Hosts and Users en el sitio de documentación de Ansible:

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

En resumen, ansible ejecutará todos los comandos en un libro de jugadas como el usuario especificado en la variable remote_user (asumiendo que está usando ansible> = 1.4, user antes de eso). También puede especificar esta variable por tarea, en caso de que una tarea deba ejecutarse como un determinado usuario.

Use sudo: true en cualquier libro de jugadas / tarea para usar sudo para ejecutarlo. Use la variable sudo_user para especificar un usuario para sudo si no desea usar la root .

En la práctica, me ha resultado más fácil ejecutar mi libro de jugadas como un usuario de deploy que tiene privilegios de sudo. Configuré mis claves SSH para poder SSH en cualquier host como deploy sin usar una contraseña. Esto significa que puedo ejecutar mi libro de jugadas sin usar una contraseña e incluso usar sudo si lo necesito.

Utilizo este mismo usuario para hacer cosas como clonar repositorios de git e iniciar / detener servicios. Si un servicio necesita ejecutarse como un usuario con menos privilegios, dejo que el script de inicio se encargue de eso. Una búsqueda rápida en Google para un script init.d de node.js reveló este para CentOS:

https://gist.github.com/nariyu/1211413

Hacer las cosas de esta manera ayuda a que sea sencillo, lo que me gusta.

Espero que ayude.





ansible