Operación y mantenimiento Junior Series-ansbile y cisco (2)

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:

Operación y mantenimiento Junior Series-ansbile y cisco (2)

点击模块名,可以看到里面的参数和使用的例子,如下图:

Operación y mantenimiento Junior Series-ansbile y cisco (2)

  • 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):

Operación y mantenimiento Junior Series-ansbile y cisco (2)

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):

Operación y mantenimiento Junior Series-ansbile y cisco (2)

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):

Operación y mantenimiento Junior Series-ansbile y cisco (2)

Verifique la tabla de enrutamiento de swithc1, como se muestra en la figura:

Operación y mantenimiento Junior Series-ansbile y cisco (2)

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 ~

Supongo que te gusta

Origin blog.51cto.com/15082392/2656469
Recomendado
Clasificación