Definindo inventário Ansible em servidor remoto

Definindo inventário Ansible em servidor remoto

Que mudanças específicas precisam ser feitas no código abaixo para que o Ansible Playbook saiba como fazer pull testFile.txtdele ?ServerBServerA

Ambos são servidores Amazon Linux.

Observe que ServerAambos ServerBos servidores remotos estão sendo acionados por um servidor Ansible central.

Um arquivo criado ServerBpor um Playbook do servidor Ansible central precisa ser copiado/extraído diretamente ServerAno ServerBtempo de execução, em vez de voltar para o servidor Ansible.

Observe também que o inventário para ServerAe ServerB(um IP para cada) é definido no servidor Ansible central, mas não no servidor remoto ServerAou 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 ServerAseja 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_hostnamepara extrair fatos. YMMV.

informação relacionada