Definición del inventario de Ansible en un servidor remoto

Definición del inventario de Ansible en un servidor remoto

¿Qué cambios específicos se deben realizar en el código siguiente para que Ansible Playbook sepa cómo salir testFile.txtde ?ServerBServerA

Ambos son servidores Amazon Linux.

Tenga en cuenta que ServerAy ServerBson ambos servidores remotos sobre los que actúa un servidor central de Ansible.

Un archivo creado ServerBpor un Playbook desde el servidor central de Ansible debe copiarse/extraerse directamente ServerAdesde ServerBel tiempo de ejecución en lugar de volver al servidor de Ansible.

También tenga en cuenta que el inventario para ServerAy ServerB(una IP para cada uno) se define en el servidor central de Ansible, pero no en el remoto ServerAni en el remoto ServerB.

Por lo tanto, en tiempo de ejecución, el libro de estrategias arroja el siguiente error cuando llega a la línea `` a continuación:

fatal: [ip.of.server.b]: FAILED! => {
    "msg": "'ServerA' is undefined"
}  

Entonces, ¿qué cambios específicos se deben realizar en el siguiente código para que ServerAse pueda definir en tiempo de ejecución?

Aquí está el libro de jugadas:

# 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 }}"

Respuesta1

Entonces, ¿qué cambios específicos se deben realizar en el siguiente código para que ServerA se defina en tiempo de ejecución?

- hosts: ServerB
  vars:
    ServerA: 192.168.0.0

Debe abordar el mensaje de error que indica que la variable ServerAno está definida.

Tu código está llamando a una variable.ServidorA. No ha definido la variable y Ansible no tiene un 'hecho' registrado con ese nombre; por lo tanto, no está definido y el controlador no sabe a qué te refieres.

Documentación ansiblemuestra que delegate_to:admite llamar directamente a una dirección IP. Si quieresusar una variablepara hacerlo, es necesariodeclaralo tu mismo en el código, o utilice uno de los datos del inventario dinámico.

Esto también puede ser factible con elvariable mágica inventory_hostnamepara extraer hechos. YMMV.

información relacionada