Operación y mantenimiento Junior Series-ansbile y cisco (2)
Jóvenes de Operación y Mantenimiento de Sao Nian
ansible y cisco (2)
1. Libro de jugadas de Ansible
2. Uso del libro de jugadas
1) Uso del primer libro
de jugadas 2) Segundo libro
de jugadas 3) Último libro de jugadas
3. Último
一 、 libro de jugadas ansible
-
libro de
jugadas El libro de jugadas se traduce en un guión, ¿qué es un guión? Significa que el guionista escribe todas las palabras situacionales y los actores las ejecutan y expresan. En ansible, somos guionistas y los enrutadores, conmutadores y otros dispositivos son actores. Por lo tanto, este script debe ser escrito por nosotros y luego ejecutado por el dispositivo. (No es muy profesional, puede usar el libro de jugadas de Baidu ansible usted mismo), el libro de jugadas debe estar escrito en formato yaml. - Qué puede hacer el libro de jugadas El
artículo anterior demostró la ejecución de un solo comando. El libro de jugadas es más flexible que el modo anterior. Podemos agregar bucles, juicios, llamar a varios módulos, ejecutar varios comandos, etc. en el libro de jugadas ... Entonces el libro de jugadas es (Pack 13) esencial.
En segundo lugar, el uso del libro de jugadas.
-
YAML
YAML no es muy diferente de JSON y XML, y tiene un formato específico. Puede echar un vistazo al uso simple de YAML. Asegúrese de prestar atención a los espacios, la sangría solo se puede sangrar con espacios. - El módulo
necesita ver el módulo de red puede hacer clic aquí para ver. Lo que usamos principalmente hoy en día son los módulos ios_command e ios_config, como se muestra a continuación:
点击模块名,可以看到里面的参数和使用的例子,如下图:
-
ios_command El
módulo ios_command se puede utilizar en conmutadores de enrutador IOS. Este módulo solo se puede utilizar en el modo privilegiado (#), pero no en el modo de configuración global (config #). - ios_config
módulo ios_config, igual que el anterior, pero solo se puede usar en el modo de configuración global (config #), no en el modo privilegiado (#)
1) Uso del primer libro de jugadas
El primer libro de jugadas es relativamente simple, las siguientes notas las explicaré como guionista:
1[root@yunwei ~]# cat ywsn_playbook1.yaml
2--- # yaml以---开头 # 一定要注意以下参数的空格,-和: 后面一定要有空格!!!
3- name: show clock # 剧本的名字
4 hosts: cisco-2 # 表演的演员 -- 执行的主机(在hosts文件中)
5 gather_facts: false # 检查演员的基本信息 -- 检查主机配置等信息
6 connection: local # 剧本在谁的手里
7 tasks: # 剧情
8 - name: show clock # 剧情的名字(第1集)
9 ios_command: # 使用ios_command模块
10 commands: # 使用ios_command模块下的commands参数(即命令执行)
11 - show clock # 执行的命令
12 register: print_output # 保存在一个文件中(执行的目录下会多出一个.retry文件)
13 - debug: var=print_output.stdout_lines # 将文件中的内容打印出来
14
15 - name: configure loop interfact # 剧情的名字(第2集)
16 ios_config: # 使用ios_config模块
17 parents: int loop 0 # 使用 parents参数,表示执行了这个命令之后,才能执行lines
18 lines: # 使用lines参数,执行多条命令
19 - ip add 1.1.1.1 255.255.255.0
20 - no sh
21 register: print_output
22 - debug: var=print_output
23
24... # yaml以...结尾
El efecto de ejecución es el siguiente (la animación es más lenta):
2) El segundo libro de jugadas
En el segundo libro de jugadas, implementaré el inicio de sesión y el bucle sin contraseña. El libro de jugadas es el siguiente:
1[root@yunwei ~]# cat ywsn_playbook2.yaml
2---
3- name: yunweishaonian ansible and cisco 2
4 hosts: cisco-1
5 gather_facts: false
6 connection: local
7
8 vars: # 定义一个变量
9 authinfo: # 变量名称
10 username: "cisco" # 变量值
11 password: "123456" # 变量值
12
13 tasks:
14 - name: config loop interfact
15 ios_config:
16 provider: "{{ authinfo }}" # 验证,验证时使用前面定义的变量
17 lines: # 命令
18 - switchport trunk encapsulation dot1q
19 - switchport mode trunk
20 parents: "{{ item }}" # 父配置 -- 执行这个,再执行上面的lines(子配置)
21 with_items: # 循环以下变量,循环的值为 item
22 - int Ethernet 1/0
23 - int Ethernet 1/1
24 - int Ethernet 1/2
25 - name: show int trunk
26 ios_command:
27 provider: "{{ authinfo }}"
28 commands:
29 - show int trunk
30 register: print_output
31 - debug: var=print_output.stdout_lines
32
33...
34
35[root@yunwei ~]#
Los resultados de la ejecución son los siguientes (la animación es más lenta):
3) El último libro de jugadas
El último libro de jugadas implementa variables y juicios que hacen referencia a archivos externos.
El contenido del archivo externo config.yaml, que es el diccionario dict. Al hacer un bucle entre, habrá tres claves, a saber, switch, ip, port
1---
2inter:
3 - {switch: 192.168.108.251, ip: 1.1.1.1, port: loop 1}
4 - {switch: 192.168.108.252, ip: 2.2.2.2, port: loop 2}
5 - {switch: 192.168.108.253, ip: 3.3.3.3, port: loop 3}
6...
archivo hosts
1[root@yunwei ~]# cat /etc/ansible/hosts
2[cisco]
3192.168.108.251
4192.168.108.252
5192.168.108.253
6[root@yunwei ~]#
Código final:
1[root@yunwei ~]# cat ywsn_playbook3.yaml
2---
3- name: yunweishaonian ansible and cisco 2
4 hosts: cisco
5 gather_facts: false
6 connection: local
7 vars_files: # 变量文件,多个变量文件的变量名请不要重复
8 - config.yaml
9
10 vars:
11 authinfo:
12 username: "cisco"
13 password: "123456"
14
15 tasks:
16 - name: config int loop
17 ios_config:
18 provider: "{{ authinfo }}"
19 lines:
20 - ip add {{ item.ip }} 255.255.255.0
21 - no sh
22 parents:
23 - interface {{ item.port }}
24 with_items: "{{ inter }}" # 循环inter 字典,得到switch\ip\port三个key
25 when: (item.switch == inventory_hostname) # 判断 switch的值是否等于登录的IP,inventory_hostname是一个默认参数,判断之后,执行上parents和lines
26
27 - name: config ospf
28 ios_config:
29 provider: "{{ authinfo }}"
30 lines:
31 - network 0.0.0.0 255.255.255.255 area 0
32 parents:
33 - router ospf 10
34
35 - name: save switch configure # 保存配置
36 ios_config:
37 provider: "{{ authinfo }}"
38 save_when: modified # 保存配置的条件是,配置发生变化。
39...
El efecto de ejecución es el siguiente (la animación es más lenta):
Verifique la tabla de enrutamiento de swithc1, como se muestra en la figura:
Tres, finalmente
Operación y mantenimiento Junior Series-ansible y cisco Supongo que este es el final, haga clic en la esquina inferior derecha del hermano que está mirando [Mirando], está bien, gracias ~