Sơ đồ mạng:
Mô tả:
Cấu hình SSH Router
Cấu hình SSH cho 4 Switch
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:
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 <filename>.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
Ios_config: thực hiện khi thiết bị ở mode Configuration
Ios_interface: thực hiện trên cổng
Ios_vlan: thực hiện trên vlan
File để cấu hình cho Router:
sudo nano R.yml
File để cấu hình 2 Access Switch
sudo nano AS.yml
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
- 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ấ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 |
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 |
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
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 <filename>.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: 'clearcountersGigabitEthernet0/1' prompt: 'Clear"showinterface"countersonthisinterface\[confirm\]' answer: 'y' - command: 'clearcountersGigabitEthernet0/2' prompt: '[confirm]' answer: "\r" |
- 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 |
- 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 |
- 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
|
sudo nano AS.yml
|