Software verzió függő parancs végrehajtás
- name: SYS | Define providerset_fact:
provider:
host: "{{ inventory_hostname }}"
username: "{{ mgmt_username }}"
password: "{{ mgmt_password }}"
authorize: yes
auth_pass: "{{ mgmt_enable }}"
timeout: 120
- name: Get IOS parameters
ios_facts:
provider: "{{ provider }}"
gather_subset: hardware
register: response
- name: delete radius server
ios_config:
provider: "{{ provider }}"
commands:
- no radius-server host 1.2.3.4 auth-port 1812 acct-port 1813
when: ansible_net_version is search("15.2")
Az első blokk betölti az inventory file-ból az ssh usernevet, jelszót illetve az enable jelszót. Itt lehet a timeout-ot is állítani - a nagyobb, lassabb switch-eknél ezt meg kellett emelni.
A második blokk letölti az IOS verziót és eltárolja a response nevű változatban.
A harmadik blokk csak akkor hajtódik végre, ha az ISO verzió tartalmazza a 15.2 szöveget.
Hardware típustól függő végrehajtás
- name: check SNMP
local_action: command snmpwalk -Ov -v3 -l authPriv -u <SNMPUSER> -a SHA -A "<SNMPPASS>" -x AES -X "<SNMPPASS>" {{ inventory_hostname }} sysobjectid
register: response
- set_fact:
filter1: "{{ response.stdout }}"
- name: set syslog level
ios_config:
provider: "{{ provider }}"
lines:
- logging trap error
save_when: modified
when: filter1 is search(".9.1.1745")
Az első blokk lefuttatja az snmpwalk linux parancsot, ami lekérdezi a hardware típusát és eltárolja a response változóban. Az <SNMPUSER> és <SNMPPASS> helyére írjuk be a megfelelő értékeket.
A második blokk beírja a filter1-be a kimenetet, hogy keresni tudjunk benne
A harmadik blokk végzi el a config módosítást, ha a switch típusa 1745-ös (ez a 3850-es switch-ek Cisco-s kódja)
Több soros kimenet kezelése
Ha egy Cisco parancs kimenete több soros, az ansible azt egy sorba írja ki. Az alábbi trükkel ezt visszaalakíthatjuk:
ansible-playbook showver.yml | awk '{gsub(/\\n/,"\n")}1'|egrep -v "\[$|\]$"
ok: [1.2.3.4] => {
"* 1 56 WS-C3850-48P 16.6.5 CAT3K_CAA-UNIVERSALK9 INSTALL
2 56 WS-C3850-48P 16.6.5 CAT3K_CAA-UNIVERSALK9 INSTALL
3 56 WS-C3850-48P 16.6.5 CAT3K_CAA-UNIVERSALK9 INSTALL
4 56 WS-C3850-48P 16.6.5 CAT3K_CAA-UNIVERSALK9 INSTALL"
}