Exportar um Var Env para Contêiner com Ansible

1

Gostaria de exportar uma variável de ambiente para o Docker usando Ansible (de preferência) que tenha um valor de substituição de comando, por exemplo

export SSH_AUTH_SOCK='cat /root/file.txt'
O conteúdo do

file.txt muda de tempos em tempos, portanto, eu preciso da substituição do comando para alterar dinamicamente o valor do var.

Qual é o caminho para alcançar tal coisa? Eu tentei

env:
  SSH_AUTH_SOCK="'cat /root/file.txt'"

mas anexou a string literal em vez de seu valor.

    
por John Doe 15.07.2018 / 15:58

2 respostas

1

Dessa forma, provavelmente não funcionará.

Execute o módulo de comando cat ... com ansibles e registre uma variável. Em seguida, use as variáveis registradas stdout em env: .

link

Exemplo: Corra duas vezes e compare date.stdout da 1ª corrida até myvar.stdout da 2ª corrida.

- hosts: all
  remote_user: hargut
  tasks:
  - name: touch ~/myvar.txt
    file:
      path: ~/myvar.txt
      state: touch
  - name: read ~/myvar.txt into myvar
    shell: cat ~/myvar.txt
    register: myvar
  - debug:
      var: myvar.stdout
  - pause:
      seconds: 5 
  - name: write date into ~/myvar.txt
    shell: date > ~/myvar.txt
    register: date
  - name: read ~/myvar.txt into date
    shell: cat ~/myvar.txt
    register: date
  - debug: 
      var: date.stdout

O exemplo mostra que o arquivo é lido em cada execução.

    
por 15.07.2018 / 17:01
0

Você pode usar o plug-in de consulta pipe :

environment:
  SSH_AUTH_SOCK: "{{ lookup('pipe', 'cat /root/file.txt') }}"

Lembre-se de que os plug-ins de pesquisa são executados localmente na máquina de controle, não no servidor de destino. Se o servidor de destino for diferente, você precisará registrar o valor em uma tarefa separada, como a outra resposta sugere.

Note também que você deve usar a notação YAML para declarar o dicionário environment (e não é env ).

    
por 15.07.2018 / 21:26

Tags