Que mudanças específicas precisam ser feitas no código abaixo para que o Ansible Playbook saiba como fazer pull
testFile.txt
dele ?ServerB
ServerA
Ambos são servidores Amazon Linux.
Observe que ServerA
ambos ServerB
os servidores remotos estão sendo acionados por um servidor Ansible central.
Um arquivo criado ServerB
por um Playbook do servidor Ansible central precisa ser copiado/extraído diretamente ServerA
no ServerB
tempo de execução, em vez de voltar para o servidor Ansible.
Observe também que o inventário para ServerA
e ServerB
(um IP para cada) é definido no servidor Ansible central, mas não no servidor remoto ServerA
ou remoto ServerB
.
Portanto, em tempo de execução, o playbook está gerando o seguinte erro quando chega à linha `` abaixo:
fatal: [ip.of.server.b]: FAILED! => {
"msg": "'ServerA' is undefined"
}
Então, quais alterações específicas precisam ser feitas no código abaixo para que
ServerA
seja definido em tempo de execução?
Aqui está o manual:
# Then create a file on ServerB and copy/pull that file into ServerA
- name: File transfer example
hosts: ServerB
remote_user: server-b-user
become: true
become_method: sudo
become_user: root
tasks:
- name: Create a test file to copy
shell:
cmd: |
cat <<EOF > /path/on/ServerB/testFile.txt
this is a test file.
EOF
sudo: true
sudo_user: server-b-user
- name: Transfer conf file from master to admin
synchronize:
src: /path/on/ServerB/testFile.txt
dest: /path/on/ServerA/
mode: pull
delegate_to: "{{ ServerA }}"
Responder1
Então, quais alterações específicas precisam ser feitas no código abaixo para que o ServerA seja definido em tempo de execução?
- hosts: ServerB
vars:
ServerA: 192.168.0.0
Você deve resolver a mensagem de erro indicando que a variável ServerA
é indefinida.
Seu código está chamando variávelServidorA. Você não definiu a variável e o Ansible não possui um 'fato' registrado com esse nome; portanto, é indefinido e o controlador não sabe a que você está se referindo.
Documentação Ansiblemostra que delegate_to:
suporta chamar diretamente um endereço IP. Se você quiserusar uma variávelpara fazer isso, você precisadeclare você mesmo no códigoou use um dos fatos de inventário dinâmico.
Isto também pode ser feito com ovariável mágica inventory_hostname
para extrair fatos. YMMV.