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_command
Acepta directamente una cadena pero necesita una command
opció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 lacli_command
llamada 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