ansible批量自動配置Juniper

2022-07-22 08:03:12 字數 3870 閱讀 2924

有幾台新上線的juniper,需要批量配置下syslog,ntp,snmp基礎配置

1.讀取配置並輸出作為初步核查

2.把配置載入網路其中一台網路裝置中,並做乙個show |compare輸出,然後做乙個commit check核查,最後退出裝置

3.輸出乙個提醒,要求輸入yes 或者no。yes代表繼續tasks,進入第4步;no代表退出playbook,終止程式

4.將配置輸入到裝置,並設定乙個10分鐘倒回時間

5.commit check 確認配置,停止倒回時間

1. 建立乙個變數資料夾junos_config_vars

mkdir junos_config_vars

2.在變數資料夾裡建立乙個變數檔案vsrx_vars.yml

nano junos_config_vars/vsrx_vars.yml

---vsrx_config:  #

系統基本引數配置

- set system syslog host 1.1.1.1any any

- set system syslog source-address 192.168.62.44

- set system ntp server 192.168.62.254

- set system ntp source-address 192.168.62.44

- set snmp location "

shanghai china

" - set snmp contact "

lisl

" - set snmp community public authorization read-only

- set snmp trap-group gingerdoc targets 192.168.62.253

3.編輯inventory檔案

nano lisl_hosts

[junos]

junipervsrx02 junos_host=192.168.2.43junipervsrx01 junos_host=192.168.2.44

4.編輯層次化變數組檔案

nano group_vars/junos.yaml

---ansible_connection: local

ansible_network_os: junos

ansible_user: admin

ansible_ssh_pass: juniper123

---

-name: 配置srx

hosts: junipervsrx01

gather_facts: no

vars_files:

- junos_config_vars/vsrx_vars.yml

roles:

-juniper.junos

tasks:

- name: "

配置如下:

"debug:

var: vsrx_config

-name: 匯入配置進入第一台vsrx,僅作核查之用

juniper_junos_config:

config_mode:

'exclusive

'load:

'set

'lines: "}

"commit: no

check: yes

diff: yes

provider:

host: "}

"timeout: 120register: check_result

- name: "

show | compare輸出如下:

"debug:

msg: "}

"when: check_result.diff_lines is defined

#第二個play

-name: 配置srx

hosts: junos

gather_facts: no

vars_files:

- junos_config_vars/vsrx_vars.yml

roles:

-juniper.junos

vars_prompt:

- name: "

confirm_result

"prompt:

"請確認上述核查結果,滿意輸入:yes,不滿意輸入:no.\n\n請輸入

"private: no

tasks:

-name: 判斷結果

debug:

msg: 謝謝確認,核查完畢,開始批量配置階段!

when: confirm_result == "

yes"

run_once: yes

delegate_to: localhost

-fail:

msg: 謝謝確認,由於您不滿意核查結果,playbook即將退出,謝謝!

when: confirm_result !="

yes"

-name: 匯入配置進入vsrx

juniper_junos_config:

config_mode:

"exclusive

"load:

'set

'lines: "}

"commit: yes

comment:

"ticket no.12345:configure system parameter

"confirmed: 10diff: yes

dest_dir: junos_diff/provider:

host: "}

"timeout: 120notify:配置完畢,開始確認配置

handlers:

-name: 配置完畢,開始確認配置

juniper_junos_config:

commit_empty_changes: yes

comment:

"ticket no. 12345:confirm the change

"provider:

host: "}

"timeout: 120

6.執行劇本

ansibel-playbook config.yml

1.when: check_result.diff_lines is defined  #存在值,就輸出show | compare,因為不加when,當遇到重複配置的情況,diff_lines是不存在的,此時ansible會報錯,然後中止playbook

2.yes或no  #輸入yes,代表認可上述配置;輸入no,代表上述配置有問題,選擇手工中止playbook

3.vars_prompt  

prompt  #prompt引數類似於python裡的input

name  #變數名,將使用者輸入資訊賦值給變數名confirm_result

4.fail  #失敗模組,執行的話,就結束

msg  #列印msg內容

5. run_once: yes  #僅僅執行一次

6. delegate_to: localhost  #任務委派功能,指在本地localhost執行操作  

7. notify  #通知,當你執行某個task以後,你在task的末尾做乙個通知,並附上乙個名稱或者內容

8. handlers  #與tasks平級的功能區,handlers下的name名稱與notify的名稱相同,則啟用handlers,如果有多個task任務同時呼叫乙個handler,此handler也只執行一次

ansible自動化批量安裝nginx

ansible安裝及ssh免密登入請參考 ansible playbook 劇本 ansible doc 獲取幫助文件 ansible playbook採用yaml語法 核心元件 hosts 定義單個主機或組,vars定義變數,remote user定義執行命令的遠端使用者,tasks定義執行哪些命...

ansible結合zabbix api批量新增主機

批量新增zabbix監控 1.使用ansible配置zabbix客戶端 修改伺服器的ip 網域名稱 為了方便使用ansible來批量操作 等同於如下sed語句 sed i s server 1.1.1.11 server 2.2.2.2 g usr local zabbix agents 3.2.0...

ansible批量管理 模組

1.ansible doc ansible doc l 列出所有模組 ansible doc 模組名 檢視該模組的幫助手冊2.ping模組 ansible web m ping3.command模組 ansible web m command a uptime 對web組的主機執行uptime4.s...