#最近一直在學(xué)習(xí)姜汁老師的Ansible教程,還特意去看了《安德的游戲》。
創(chuàng)新互聯(lián)建站主營(yíng)阿城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP軟件開發(fā),阿城h5小程序定制開發(fā)搭建,阿城網(wǎng)站營(yíng)銷推廣歡迎阿城等地區(qū)企業(yè)咨詢寫這篇算是一個(gè)學(xué)習(xí)和實(shí)驗(yàn)的記錄,就怕萬(wàn)一下次工作需要的時(shí)候自己已經(jīng)忘得一干二凈了,白給。#
首先是Ansible控制主機(jī)的安裝,這里有個(gè)坑。當(dāng)我們執(zhí)行playbook的時(shí)候 會(huì)有Error :xxxxx,Msg:xxxxx,會(huì)提示你install ncclient。因?yàn)閚etconf是Py3的模塊,Ansible默認(rèn)使用的是Py2.7。
附上解決辦法的鏈接:https://acozine.github.io/html/reference_appendices/python_3_support.html
先去了解下juniper.junos:
Contents:
juniper_junos_jsnapy
juniper_junos_srx_cluster
juniper_junos_ping
juniper_junos_command
juniper_junos_system
juniper_junos_facts
juniper_junos_config
juniper_junos_software
juniper_junos_pmtud
juniper_junos_table
juniper_junos_rpc
甚至?xí)l(fā)現(xiàn)有HA的模塊。facts用于收集junos系統(tǒng)信息,config用來(lái)今天幫助我們做配置。
進(jìn)入到config模塊,可以看到模塊的簡(jiǎn)介,選項(xiàng)和例子??梢詧?zhí)行包括:loading or rolling back, checking, diffing, retrieving, and committing the configuration 這么多功能,我們先用用最簡(jiǎn)單的commit。在使用之前請(qǐng)先安裝好eznc。
正式開始配置:
把host和var寫入到hosts文件里:
[ex3300]
192.168.11.169
[ex3300:vars]
ansible_connection=network_cli
#ansible_connection=netconf
ansible_network_os=junos
ansible_user=netops
ansible_password=juniper123
準(zhǔn)備配置文件:
more junos_config_vars/vsrx_vars_ex3300.yaml?
---
vsrx_config_ex3300:
- set routing-options static route 2.2.2.2/32 discard
實(shí)驗(yàn)用了Srx320 19.1R3,Vsrx15.1R和Ex3300 12.3R9版本測(cè)試。這里的文件名字寫混亂了 關(guān)系不大。
設(shè)備初始化:
設(shè)備的MGT接口 ssh/netconf和ssh用戶:
set?system?root-authentication?encrypted-password?"$1$d2G1wOPF$Lth.0XBee52ROKcFwayxr/"
?set?system?login?user?netops?uid?203
?set?system?login?user?netops?class?super-user
?set?system?login?user?netops?authentication?encrypted-password?"$1$HFIwO3Kj$OQ9IDKraR5rYSns2mRXJh/"
?set?system?services?ftp
?set?system?services?ssh?root-login?allow
?set?system?services?netconf?ssh?port?830
?set?interfaces?me0?unit?0?family?inet?address?192.168.11.169/24?
寫劇本:
配置變量采用導(dǎo)入變量文件的方式,用vars_files參數(shù)來(lái)定位。
vars_files:
- junos_config_vars/vsrx_vars_ex3300.yaml
編輯juniper_junos_config的options:
juniper_junos_config:
config_mode: 'exclusive' #默認(rèn)就是exclusive
load: 'set' ?#set或者merge模式
lines: "{{ vsrx_config_ex3300 }}" #包含配置的字符串列表
commit: yes #也不check或者干嘛了直接commit
運(yùn)行。Ansible-playbook junos_config_ex3300.yaml?
PLAY [configure SRX] ****************************************************************************************
TASK [configure infomation :] *******************************************************************************
ok: [192.168.11.169] => {
"vsrx_config_ex3300": [ ?#debug輸出var變量也就是配置文件。
"set routing-options static route 3.3.3.3/32 discard"
]
}
TASK [load configure into vSRX] *****************************************************************************
這里會(huì)有一大段告警 但是不影響結(jié)果 暫時(shí)不理會(huì)(其實(shí)我去官網(wǎng)看了沒(méi)看懂)。
changed: [192.168.11.169]
TASK [print configure results] ******************************************************************************
ok: [192.168.11.169] => { #changed == true 從而debug msg
"msg": "vSRX configure completed thanks"
}
PLAY RECAP **************************************************************************************************
192.168.11.169 ? ? ? ? ? ? : ok=3 ? ?changed=1 ? ?unreachable=0 ? ?failed=0 ? ?skipped=0 ? ?rescued=0 ? ?ignored=0
整理下思路:設(shè)備初始化;Ansible的host和var;配置變量(變量文件的方式);Playbook(可以做的事情太多了 這次使用的有 定位變量的文件位置,配置前先輸出配置,利用模塊導(dǎo)入配置到相應(yīng)的主機(jī),配置成功changed以后輸出提示)。
在官網(wǎng)的例子里面有一個(gè)是直接這么來(lái)的:
lines:
- 'set system services netconf ssh'
最后回到設(shè)備上去看下配置compare | rollback 1:
+????route?3.3.3.3/32?discard?
大功告成,簡(jiǎn)單的利用Ansible配置Juniper設(shè)備!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。