TẠO PLAYBOOK ĐỂ GỬI MAIL KHI PING ĐƯỜNG TRUYỀN FAIL

TẠO PLAYBOOK ĐỂ GỬI MAIL KHI PING ĐƯỜNG TRUYỀN FAIL

[ANSIBLE FOR NETWORK]

 

Để chạy ansible ping đối tác thì ta tạo 2 file:

- File hosts trong thư mục /etc/ansible có nội dung:

[routers]

R1 ansible_host=192.168.200.11 ansible_connection=network_cli ansible_network_os=ios partner_ip=10.1.2.2

R2 ansible_host=192.168.200.12 ansible_connection=network_cli ansible_network_os=ios partner_ip=10.4.5.5

- Sau đó ta viết playbook với tên tùy ý, đuôi là .yml , ví dụ check_ping.yml

---

- name: Ping Each Partner from Router

  hosts: routers

  gather_facts: no

  tasks:

    - name: Ping Partner from {{ inventory_hostname }}

      ios_command: ##Đây là module ios_command cho cisco device

        commands:

          - ping {{ hostvars[inventory_hostname]['partner_ip'] }} repeat 5

      register: ping_result

    - name: Show Ping Result

      debug:

        var: ping_result.stdout_lines

    - name: Send notification email if host is unreachable

      mail:

        host: smtp-mail.outlook.com

        port: 587

        username: "your_mail@outlook.com"

        password: "your_pass"

        from: " your_mail@outlook.com "

        to: "receiver@gmail.com"

        subject: "[Alert] Host Unreachable - {{ inventory_hostname }}"

        body: "Ping to {{ hostvars[inventory_hostname]['partner_ip'] }} from {{ inventory_hostname }} has failed.\n\nPing Output:\n{{ ping_result.stdout_lines }}"

        secure: starttls

      when: "'Success rate is 0 percent' in ping_result.stdout[0]"

      delegate_to: localhost

      run_once: true

 

Thử shutdown port R1 nối sang R2

Rồi chạy playbook này, trên màn hình SSH của ubuntu, ta gõ:

ansible-playbook -i ./hosts check_ping.yml -u admin -k

Rồi nhập pass

Kết quả:

Bài viết cùng danh mục