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
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.
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
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"
- 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/2enabled: 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 }
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 |
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 |