Hola, estoy tratando de averiguar cómo configurar la variable de entorno con Ansible.
algo que un simple comando de shell como este:
EXPORT LC_ALL=C
Intenté como comando de shell y obtuve un error al intentar usar el módulo de entorno y no pasó nada.
Qué me estoy perdiendo
Respuestas:
Hay varias formas de hacer esto y, a partir de su pregunta, no está claro lo que necesita.
1. Si necesita que la variable de entorno se defina SOLO POR TAREA, haga lo siguiente:
Tenga en cuenta que
MY_ENV_VARIABLE
está disponible SOLO para la primera tarea,environment
no lo configura de forma permanente en su sistema.Con suerte, el uso pronto
environment
también será posible en el nivel de juego , no solo en el nivel de tarea como el anterior. Actualmente hay una solicitud de extracción abierta para esta función en GitHub de Ansible: https://github.com/ansible/ansible/pull/8651ACTUALIZACIÓN: Ahora se fusionó a partir del 2 de enero de 2015.
2. Si desea una variable de entorno permanente + todo el sistema / solo para cierto usuario
Debería ver cómo lo hace en su distribución / shell de Linux, hay varios lugares para eso. Por ejemplo, en Ubuntu lo define en archivos como, por ejemplo:
~/.profile
/etc/environment
/etc/profile.d
directorioEncontrará documentos de Ubuntu al respecto aquí: https://help.ubuntu.com/community/EnvironmentVariables
Después de todo, para configurar la variable de entorno en ex. Ubuntu, puede usar el
lineinfile
módulo de Ansible y agregar la línea deseada a cierto archivo. Consulte los documentos de su sistema operativo para saber dónde agregarlo para que sea permanente.fuente
No tenía suficiente reputación para comentar y, por lo tanto, estoy agregando una nueva respuesta.
La respuesta de Gasek es bastante correcta. Solo una cosa: si está actualizando el
.bash_profile
archivo o el/etc/profile
, esos cambios se reflejarán solo después de que realice un nuevo inicio de sesión. En caso de que desee establecer la variable env y luego usarla en tareas posteriores en el mismo libro de jugadas, considere agregar esas variables de entorno en el.bashrc
archivo.Supongo que la razón detrás de esto es el inicio de sesión y los shells de no inicio de sesión.
Ansible, mientras ejecuta diferentes tareas, lee los parámetros de un
.bashrc
archivo en lugar de.bash_profile
o el/etc/profile
.Como ejemplo, si actualicé mi variable de ruta para incluir el binario personalizado en el
.bash_profile
archivo del usuario respectivo y luego hice una fuente del archivo. Las siguientes tareas posteriores no reconocerán mi comando. Sin embargo, si actualiza en el.bashrc
archivo, el comando funcionará.Esto funcionaría , pero si lo hubiera hecho usando archivos de perfil,
mysql -e "show databases"
habría dado un error.Éste no va a funcionar , si tenemos todas estas tareas en el mismo libro de jugadas.
fuente
source file
hacerlo. file
Aquí hay una tarea local rápida para establecer claves / valores permanentemente
/etc/environment
(que es para todo el sistema, todos los usuarios):y las vars para ello:
y, sí, si sale y vuelve a entrar,
env
muestra las nuevas variables de entorno.fuente
dest
fue reemplazado porpath
, pero según los documentos aún debería funcionar. Si no es así, cambie apath
.Para configurar constantemente las variables de entorno, puede utilizar uno de los roles existentes en Ansible Galaxy. Recomiendo que estemos en un entorno interactivo .
Usando ansible-galaxy:
Usando Requirements.yml:
Luego, en tu libro de jugadas:
fuente
Esta es la mejor opcion. Como dijo Michal Gasek (primera respuesta), dado que la solicitud de extracción se fusionó ( https://github.com/ansible/ansible/pull/8651 ), podemos establecer variables de entorno permanentes fácilmente por nivel de juego.
fuente