Sơ đồ mạng:
Mô tả:
Yêu cầu:
Các bước thực hiện:
Cấu hình SSH Switch:
SW# configure terminal
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 localTrên PC chạy Ansible:
Mặc định sau khi install Ansible về máy sẽ nằm trong đường dẫn /etc/ansible. Để thao tác với Ansible chúng ta cần phải di chuyển đến folder chứa Ansible bằng lệnh: cd /etc/ansible
Tiếp theo cần chỉnh sửa một số default setting của Ansible bằng lệnh : vim ansible.cfg. Bỏ dấu # của dòng 14, 36 và 71.
Tạo Inventory File
Có một Inventory file mặc định của Ansible đó là hosts. Chúng ta có thể tận dụng file này để làm file hosts Inventory của mình. Sử dụng lệnh : vim hosts
Khai báo thông số thiết bị như sau :
Các thông số đã được giải thích ở bài trước. Có thể tham khảo ở bài viết : Quản lý và triển khai tự động hạ tầng mạng dùng Ansible
Tạo File Playbook
Dùng lệnh : vim check_version.yml để tạo file và edit file check_version được viết bằng ngôn ngữ YAML.
Giải thích code:
Ý tưỡng của file code này sẽ là: thu thập thông tin của thiết bị và xuất ra giá trị version hiện tại của thiệt bị, nếu giá trị version xuất ra khác với version mong muốn thì in ra dòng tin nhắn là : Image is not compliant and need to be upgraded
Upgrade_ios_version: là giá trị version mong muốn
Ios_facts: là Module mà Ansible hỗ trợ để thu thập thông tin thiết bị.
Debug: là hàm để in ra màn hình
Msg: là tin nhắn sẽ hiển thị ra màn hình.
Ansible_net_version: là giá trị version của thiết bị. Giá trị này sẽ được trả về sau quá trình thu thập thông tin thiết bị của Module ios_facts. Có thể tham khảo thêm 1 số giá trị khác ở Document của Ansible
4 dòng cuối có ý nghĩa là: sẽ in ra mà hình dòng chữ “Image is not compliant and need to be upgraded” khi (when) giá trị ansible_net_version ( là version hiện tại của thiết bị ) khác với upgrade_ios_version ( version mình mong muốn ), nếu 2 giá trị bằng nhau sẽ Skip.
Chạy Playbook
Dùng lệnh : ansible-playbook check_version.yml để chạy playbook. Ở đây do mình sử dụng Inventory file mặc định của Ansible nên không cần khai báo, nếu sử dụng Inventory khác tự tạo thì sẽ khai báo với cấu trúc lệnh như sau : ansible-playbook -i .
Kết quả :
Khi chạy Playbook với một thiết bị cần upgrade version:
Khi chạy Playbook với một thiết bị không cần upgrade version: