Existem várias maneiras de fazer isso e a partir de sua pergunta não fica claro o que você precisa.
1. Se precisar que a variável de ambiente seja definida SOMENTE POR TAREFA, faça o seguinte:
- hosts: dev
tasks:
- name: Echo my_env_var
shell: "echo $MY_ENV_VARIABLE"
environment:
MY_ENV_VARIABLE: whatever_value
- name: Echo my_env_var again
shell: "echo $MY_ENV_VARIABLE"
Observe que MY_ENV_VARIABLE
está disponível SOMENTE para a primeira tarefa, environment
não a define permanentemente em seu sistema.
TASK: [Echo my_env_var] *******************************************************
changed: [192.168.111.222] => {"changed": true, "cmd": "echo $MY_ENV_VARIABLE", ... "stdout": "whatever_value"}
TASK: [Echo my_env_var again] *************************************************
changed: [192.168.111.222] => {"changed": true, "cmd": "echo $MY_ENV_VARIABLE", ... "stdout": ""}
Esperançosamente, em breve o uso environment
também será possível no nível de jogo , não apenas no nível de tarefa como acima. Atualmente, há uma solicitação de pull aberta para esse recurso no GitHub da Ansible: https://github.com/ansible/ansible/pull/8651
ATUALIZAÇÃO: agora foi incorporado a partir de 2 de janeiro de 2015.
2. Se você deseja uma variável de ambiente permanente + sistema amplo / apenas para determinado usuário
Você deve examinar como fazer isso em sua distribuição / shell do Linux, existem vários lugares para isso. Por exemplo, no Ubuntu você define isso em arquivos como por exemplo:
~/.profile
/etc/environment
/etc/profile.d
diretório
- ...
Você encontrará documentos do Ubuntu sobre isso aqui: https://help.ubuntu.com/community/EnvironmentVariables
Afinal, para definir a variável de ambiente em ex. Ubuntu você pode simplesmente usar o lineinfile
módulo do Ansible e adicionar a linha desejada a determinado arquivo. Consulte a documentação do seu sistema operacional para saber onde adicioná-lo para torná-lo permanente.