Lab: Quản lý và triển khai tự động hạ tầng mạng dùng Ansible (Phần 1) -

Lab: Quản lý và triển khai tự động hạ tầng mạng dùng Ansible (Phần 1) -

Lab: Quản lý và triển khai tự động hạ tầng mạng dùng Ansible (Phần 1) -

Lab: Quản lý và triển khai tự động hạ tầng mạng dùng Ansible (Phần 1) -

Lab: Quản lý và triển khai tự động hạ tầng mạng dùng Ansible (Phần 1) -
Lab: Quản lý và triển khai tự động hạ tầng mạng dùng Ansible (Phần 1) -
(028) 35124257 - 0933 427 079

Lab: Quản lý và triển khai tự động hạ tầng mạng dùng Ansible (Phần 1)

27-10-2021
- Sơ đồ gồm 1 Router, 2 Distributed Switch, 2 Access Switch, 2 PC cho 2 Vlan, được kết nối với Ansible Server. Mô hình thực hiện trên Linux OS và các thiết bị ảo
- Máy tính của học viên có kết nối mạng bên trong VnPro

Sơ đồ mạng:

 

Mô tả:

  • Sơ đồ gồm 1 Router, 2 Distributed Switch, 2 Access Switch, 2 PC cho 2 Vlan, được kết nối với Ansible Server. Mô hình thực hiện trên Linux OS và các thiết bị ảo.
  • Máy tính của học viên có kết nối mạng bên trong VnPro

Yêu cầu:

  • Thực hiện các công việc sau:
    • Thêm thiết bị vào file hosts – file lưu IP các thiết bị
    • Tạo playbook YAML để thực hiện các cấu hình tự động cho Router, 2 DS (Distributed Switch), 2 AS(Access Switch).
    • Chạy các playbook trên.

Các bước thực hiện:

Cấu hình SSH Router

R# configure terminal

R(config)# username admin password 123

R(config)# ip domain-name vnpro

R(config)# enable password 321

R(config)# crypto key generate rsa 1024

R(config)#line vty 0 4

R(config-line)# password 123

R(config-line)# login local

Cấu hình SSH cho 4 Switch

SW# configure terminal

SW(config)# ip domain-name vnpro

SW(config)# username admin password 123

SW(config)# enable password 321

SW(config)# crypto key generate rsa

1024

SW(config)#line vty 0 4

SW(config-line)# password 123

SW(config-line)# login local

Cài đặt Ansible trên Linux OS:

Chạy 3 dòng lệnh sau:

sudo apt-add-repository ppa:ansible/ansible

sudo apt update

sudo apt install ansible

 Chuyển tới thư mục đã cài ansible và sửa đổi file hosts – file chứa các thiết bị

cd /etc/ansible

sudo nano hosts

 ta sẽ thêm các thiết bị vào đây: Thêm IP và password để SSH đến, username và password.

Giải thích:

  • Ansible_host: địa chỉ IP của thiết bị dùng để SSH
  • Ansible_become_password: là enable password của thiết bị
  • Ansible_connection: network_cli là phương thức kết nối đến thiết bị thông qua SSH
  • Ansible_become: ‘yes’ và ansible_become_method: enable là cho phép ansible có  thể vào privilege mode trước khi thực thi các task
  • Ansible_network_os: ios ở đây do dùng các thiết bị của Cisco nên khai báo như vậy

Lưu ý: thứ tự khai báo có thể thay đổi mà không ảnh hưởng đến kết quả

 Sau khi xong nhấn Ctr + X, sau đó Y và enter để lưu file lại.

Tạo các file Playbook:

Tạo file playbook bằng câu lệnh sau: sudo nano .yml. Nên tham khảo thêm các viết file YAML

Ví dụ một số lệnh sử dụng trên thiết bị Cisco IOS để viết các nhiệm vụ trong playbook bằng ngôn ngữ YAML, chạy trên Ansible server

Ios_command: thực hiện khi thiết bị ở mode Privileged

tasks:
  - name: chạy lên show version
    ios_command:
      commands: show version
 
  - name: chạy lệnh show version bao gồm IOS
    ios_command:
      commands: show version
      wait_for: result[0] contains IOS
 
  - name: chạy nhiều lệnh 
    ios_command:
      commands:

 

- show version
        - show interfaces

 
  - name: chạy lệnh yêu cầu trả lời prompt
    ios_command:
      commands:
        - command: 'clear counters GigabitEthernet0/1'
          prompt: 'Clear "show interface" counters on this interface \[confirm\]'
          answer: 'y'
        - command: 'clear counters GigabitEthernet0/2'
          prompt: '[confirm]'

          answer: "\r"

 Ios_config: thực hiện khi thiết bị ở mode Configuration

- name: cấu hình hostname trong inventory
  ios_config:
    lines: hostname {{ inventory_hostname }}

 
- name: cấu hình cổng
  ios_config:
    lines:
      - description test interface
      - ip address 172.31.1.1 255.255.255.0
    parents: interface Ethernet1

 
- name: cấu hình ip helper-address trên nhiều cổng
  ios_config:
    lines:
      - ip helper-address 172.26.1.10
      - ip helper-address 172.26.3.8
    parents: "{{ item }}"
  with_items:
    - interface Ethernet1
    - interface Ethernet2
    - interface GigabitEthernet1

 

Ios_interface: thực hiện trên cổng

- name: cấu hình cổng
  ios_interface:
      name: GigabitEthernet0/2
      description: test-interface
      speed: 100
      duplex: half
      mtu: 512

 
- name: xóa cổng looback
  ios_interface:
    name: Loopback9
    state: absent

 
- name: mở cổng(up)
  ios_interface:
    name: GigabitEthernet0/2
    enabled: True

 
- name: tắt cổng(down)
  ios_interface:
    name: GigabitEthernet0/2
    enabled: False

Ios_vlan: thực hiện trên vlan

- name: Tạo vlan
  ios_vlan:
    vlan_id: 100
    name: test-vlan
    state: present

 
- name: Thêm cổng vào vlan
  ios_vlan:
    vlan_id: 100
    interfaces:
      - GigabitEthernet0/0
      - GigabitEthernet0/1

 
- name: Xóa vlan
  ios_vlan:
    vlan_id: 100
    state: absent

 
- name: Thêm vlan dùng aggregate
  ios_vlan:
    aggregate:
    - { vlan_id: 100, name: test-vlan, interfaces: [GigabitEthernet0/1, GigabitEthernet0/2], delay: 15, state: suspend }
    - { vlan_id: 101, name: test-vlan, interfaces: GigabitEthernet0/3 }

 File để cấu hình cho Router:

sudo nano R.yml

 

---

- name: dat ip cho loobpack

  hosts: Router # tên của thiết bị trong Ansible server( vì ở đây chỉ có router nên có thể để all)

# các tác vụ

  tasks:

    - name: Set loopback IPv4 address # Đặt tên task để quản lý

      ios_l3_interface: # do cấu hình router nên bắt buộc khai báo như vậy

        name: loopback 2 # tên cổng

        ipv4: 10.0.0.1/24 # địa chỉ IP của loopback

 

    - name: Set fastEthernet0/1 IPv4 address  # đặt IP cho cổng

      ios_l3_interface:

        name: fastEthernet1/0 # tên cổng

        ipv4: 172.16.13.1/24  # địa chỉ IP cho cổng

    - name: Set fastEthernet1/0 IPv4 address

      ios_l3_interface:

        name: fastEthernet0/1  

        ipv4: 172.16.12.1/24

    #Xem lại tất cả các cổng

    - name: Show ip

      ios_command: # Viết lệnh để gửi ở mode command line của router

        commands:

          - show ip int brief

      register: show_ip # gắn kết quả vào biến show_ip

    - name: set OSPF  # cài đặt OSPF

      ios_config:

        parents:  # vào mode config của lệnh dưới

          - router ospf 1

        lines:     # các lệnh sẽ thực hiện

          - router-id 1.1.1.1

    - name: set ip OSPF f0/1

      ios_config:

        parents:

          - int f0/1

        lines:

          - no shut

          - ip ospf 1 area 0

    - name: set ip OSPF f1/0

      ios_config:

        parents:

          - int f1/0

        lines:

          - no shut

          - ip ospf 1 area 0      

    - debug: var=show_ip.stdout_lines # debug: in ra màn hình, đặt biến var(lấy thông tin của các dòng từ show_ip gắn vào),in biến var

 File để cấu hình 2 Access Switch

sudo nano AS.yml

 

 
 

---

- name: AS1

 

  hosts: AS1

 

  gather_facts: no

 

 

 

  tasks:

 

    - name: tao vlan

 

      ios_vlan:

 

        aggregate:

 

          - { vlan_id : 10 }

 

 

 

    - name: show vlan

 

      ios_command:

 

        commands:

 

          - show vlan

 

      register: show_ip

 

    - name: config

 

      ios_config:

 

        lines:

 

          - spanning-tree mode rapid-pvst

 

    - name: chuyen cong e0/1 - e0/2 sang mode trunk

 

      ios_config:

 

        parents:

 

          - int range e0/1-2

 

        lines:

 

          - sw trunk en dot1Q

 

          - sw mode trunk

 

    - name: sw acc vlan 10

 

      ios_config:

 

        parents:

 

          - int e3/1

 

        lines:

 

          - sw acc vlan 10

 

    - name: sw acc vlan 20

 

      ios_config:

 

        parents:

 

          - int e3/2

 

        lines:

 

          - sw acc vlan 20

 

    - name: sw acc vlan 30

 

      ios_config:

 

        parents:

 

          - int e3/3

 

        lines:

 

          - sw acc vlan 30           

 

    - debug: var=show_ip.stdout_lines

 

#                                                                                                                   

 

- name: AS2

 

  hosts: AS2                                                                                                         

 

  gather_facts: no

 

 

 

  tasks:

 

    - name: tao vlan

 

      ios_vlan:

 

        aggregate:

 

          - { vlan_id : 20 }

 

 

 

    - name: Show vlan

 

      ios_command:

 

        commands:

 

          - show vlan

 

      register: show_ip

 

    - name: config

 

      ios_config:

 

        lines:

 

          - spanning-tree mode rapid-pvst

 

    - name: chuyen cong e0/1 - e0/2 sang mode trunk

 

      ios_config:                                                                                                            

 

      parents:                                                                                                              

 

      - int range e0/1-2                                                                                                 

 

      lines:

 

          - sw trunk en dot1Q                                                                                                 

 

          - sw mode trunk

 

    - name: sw acc vlan 10

 

      ios_config:

 

        parents:

 

          - int e3/1

 

        lines:

 

          - sw acc vlan 10

 

    - name: sw acc vlan 20

 

      ios_config:

 

        parents:

 

          - int e3/2

 

        lines:

 

          - sw acc vlan 20

 

    - name: sw acc vlan 30

 

      ios_config:

 

        parents:

 

          - int e3/3

 

        lines:

 

          - sw acc vlan 30

 

    - debug: var=show_ip.stdout_lines

 


FORM ĐĂNG KÝ MUA HÀNG
Đặt hàng
icon-cart
0