Estou puxando JSON por meio do módulo URI e quero gravar o conteúdo recebido em um arquivo. Consigo obter o conteúdo e enviá-lo para o depurador, portanto sei que o conteúdo foi recebido, mas não conheço a prática recomendada para gravar arquivos.
Estou puxando JSON por meio do módulo URI e quero gravar o conteúdo recebido em um arquivo. Consigo obter o conteúdo e enviá-lo para o depurador, portanto sei que o conteúdo foi recebido, mas não conheço a prática recomendada para gravar arquivos.
Respostas:
Você pode usar o copy
módulo, com o content
parâmetro:
- copy: content="{{ your_json_feed }}" dest=/path/to/destination/file
Os documentos aqui: módulo de cópia
template:
módulo e preenchê-lo com as variáveis registradas em tempo de execução.
shahash /path/to/file
(observe 2 espaços entre) e, em seguida, validar na linha de comando (via sha256sum -c shafile
) o que você gerou via Ansible.
A menos que você esteja gravando arquivos muito pequenos, provavelmente deve usar modelos .
Exemplo:
- name: copy upstart script
template:
src: myCompany-service.conf.j2
dest: "/etc/init/myCompany-service.conf"
Com base na resposta de Ramon, encontrei um erro. O problema de espaços no JSON que tentei escrever, resolvi alterando a tarefa no manual para ficar assim:
- copy:
content: "{{ your_json_feed }}"
dest: "/path/to/destination/file"
No momento, não tenho certeza de por que isso foi necessário. Meu melhor palpite é que tem algo a ver com a forma como as variáveis são substituídas no Ansible e o arquivo resultante é analisado.
Podemos especificar diretamente o arquivo de destino com a dest
opção agora. No exemplo abaixo, a saída json é armazenada no/tmp/repo_version_file
- name: Get repository file repo_version model to set ambari_managed_repositories=false
uri:
url: 'http://<server IP>:8080/api/v1/stacks/HDP/versions/3.1/repository_versions/1?fields=operating_systems/*'
method: GET
force_basic_auth: yes
user: xxxxx
password: xxxxx
headers:
"X-Requested-By": "ambari"
"Content-type": "Application/json"
status_code: 200
dest: /tmp/repo_version_file