有幾台新上線的juniper,需要批量配置下syslog,ntp,snmp基礎配置
1.讀取配置並輸出作為初步核查1. 建立乙個變數資料夾junos_config_vars2.把配置載入網路其中一台網路裝置中,並做乙個show |compare輸出,然後做乙個commit check核查,最後退出裝置
3.輸出乙個提醒,要求輸入yes 或者no。yes代表繼續tasks,進入第4步;no代表退出playbook,終止程式
4.將配置輸入到裝置,並設定乙個10分鐘倒回時間
5.commit check 確認配置,停止倒回時間
mkdir junos_config_vars
2.在變數資料夾裡建立乙個變數檔案vsrx_vars.yml
nano junos_config_vars/vsrx_vars.yml
---vsrx_config: #3.編輯inventory檔案系統基本引數配置
- 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
nano lisl_hosts
[junos]4.編輯層次化變數組檔案junipervsrx02 junos_host=192.168.2.43junipervsrx01 junos_host=192.168.2.44
nano group_vars/junos.yaml
---ansible_connection: localansible_network_os: junos
ansible_user: admin
ansible_ssh_pass: juniper123
---6.執行劇本-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
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...