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_VARIABLEestá disponible SOLO para la primera tarea,environmentno lo configura de forma permanente en su sistema.Con suerte, el uso pronto
environmenttambié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.ddirectorioEncontrará 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
lineinfilemó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_profilearchivo 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.bashrcarchivo.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
.bashrcarchivo en lugar de.bash_profileo el/etc/profile.Como ejemplo, si actualicé mi variable de ruta para incluir el binario personalizado en el
.bash_profilearchivo 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.bashrcarchivo, 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 filehacerlo. fileAquí 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,
envmuestra las nuevas variables de entorno.fuente
destfue 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