Archivo de inventario ^

Archivo de inventario ^

El siguiente es mi archivo yaml para una configuración ansible de un dispositivo Cisco. En /etc/ansible/hosts también edité el archivo de hosts para reflejar mi instancia Ami de Amazon EC2, como se puede ver a continuación.

[ec2-instances]
ec2-54-152-72-23.compute-1.amazonaws.com

Archivo de inventario ^

Archivo YAML a continuación

---
-  hosts: ec2-54-152-72-23.compute-1.amazonaws.com
   gather_facts: false
   connection: local

   tasks:
    -name:  Customer IOS Upgrade Initial Discovery
    cli_command: "{{ show }}"

    vars: 
      show:
       - show run
       - show version
       - show interface status
       - show license


    -mail: 
      host: smtp.gmail.com
      port: 587
      username: [email protected]
      password: sample2
      to: [email protected]
      subject: '{{ ansible_hostname }} configuration' 
      body: 'System {{ ansible_hostname }} has been successfully discovered.'
      delegate_to: localhost

    save_when: changed   
...

Recibo el siguiente mensaje de error cuando intento ejecutar lo siguiente. ¿Alguna idea de por qué sucede esto? He cambiado lo que se ve en el archivo .yaml inicial proporcionado con [instancias ec2] y todavía no hay diferencia en el resultado del tiempo de ejecución.

ansible-playbook -i /etc/ansible/hosts test2.yml --user ec2-user --private-key=/home/adam/Desktop/EC2CSR1000v.pem -vvv
ansible-playbook 2.7.9
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/adam/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]
Using /etc/ansible/ansible.cfg as config file
/etc/ansible/hosts did not meet host_list requirements, check plugin documentation if this is unexpected
/etc/ansible/hosts did not meet script requirements, check plugin documentation if this is unexpected
Parsed /etc/ansible/hosts inventory source with ini plugin
ERROR! A malformed block was encountered while loading tasks

The error appears to have been in '/etc/ansible/scripts/test2.yml': line 2, column 4, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

---
-  hosts: [ec2-instance]
   ^ here

Respuesta1

Primero necesitas arreglar tu puro.yaml.

Debe prestar atención a las opciones que están relacionadas con una tarea globalmente o que son parámetros de un módulo en particular: deben tener una sangría correcta para reflejar su alcance correcto.

Debe asegurarse de leer el documento sobre los módulos que desea utilizar. Por ejemplo,cli_commandAcepta directamente una cadena pero necesita una commandopción explícita y posiblemente otras. No aceptará una lista, por lo que tendrá que repetir otros comandos.

Por último, hay algunas rarezas que debes comprobar:

  • Estás proporcionando un único host remoto como objetivo para tu juego (está bien), pero enumerando la conexión local. Si se trata realmente de un host remoto, esto no puede funcionar ya que necesitará conectarse a él mediante ssh.
  • Estás usando (lo que creo que es) una opción de tarea save_when. Creo que entiendo que está al final del archivo por error y debe usarse con la cli_commandllamada del módulo. Mientras tanto, no figura como parámetro de este módulo (pero es parte de otros relevantes).módulos cisco ios

En este punto, no entiendo exactamente lo que quieres hacer, así que solo puedo arreglar tu libro de jugadas con lo que creo que es correcto para que puedas intentar seguir adelante.

---
- name: Playbook to manage my cisco IOS devices
  hosts: ec2-54-152-72-23.compute-1.amazonaws.com
  gather_facts: false

  tasks:
    - name: Customer IOS Upgrade Initial Discovery
      cli_command:
        command: "{{ item }}"
      loop:
        - show run
        - show version
        - show interface status
        - show license

    - name: Send a feedback by email
      mail:
        host: smtp.gmail.com
        port: 587
        username: [email protected]
        password: sample2
        to: [email protected]
        subject: '{{ ansible_hostname }} configuration' 
        body: 'System {{ ansible_hostname }} has been successfully discovered.'
      delegate_to: localhost

información relacionada