Oppsett av Ansible på Debian
Denne artikkelen tar for seg installering av Ansible, med Juniper-spesifikke tilleggsmoduler («ansible-junos-stdlib»)), på Debian.
Vi tar, som med PyEZ-artikkelen, utgangspunkt i en helt fersk Debian «netinstall»
Installer Debian
- Hent ned en fersk versjon av Debian (f.eks netinstall, https://www.debian.org/distrib/netinst)
- Installer Debian
Installer Software
Kjør følgende kommandoer som root:
# apt-get update && apt-get upgrade
# apt-get install python-pip ansible python-dev libxml2-dev libxslt1-dev zlib1g-dev build-essential libssl-dev libffi-dev python-setuptools
# pip install ansible junos-eznc junos-netconify
# ansible-galaxy install Juniper.junos
Vi installerer Ansible via pip for å få Ansible version >= 2.0. Ansible kjører på python2, så vi trenger ikke tenke på python2 vs. python3 i dette tilfellet.
Noen av Juniper sine Ansible-moduler følger med i Ansible, mens noen må installeres via ansible-galaxy (pakkebehandler for Ansible-moduler). Både Ansible sine innebygde Junos-moduler, og Juniper sine egne Junos-moduler («ansible-junos-stdlib») kan brukes om hverandre.
Teste funksjonalitet
Config som må inn på Juniper-noden for å få NETCONF (og dermed PyEZ) til å kunne kommunsiere:
system {
services {
ssh;
netconf {
ssh;
}
}
}
Hosts-filen (ikke /etc/hosts) er en måte man kan lage et register over noder, for eksempel med tilhørende modell og tilkoblingsparametere.
j@debian:~/test_ansible$ cat hosts
[test]
node1 ip=10.0.10.1 user=netconf password=netc0nf
Eksempel på en playbook-fil. Inneholder tre tasks; Sjekke at noden svarer på NETCONF-tilkoblinger, hente informasjon om noden og printe software-versjonen.
j@debian:~/test_ansible$ cat play.yaml
---
- name: Get Device Facts
hosts: test
roles:
- Juniper.junos
connection: local
gather_facts: no
tasks:
- name: Checking NETCONF connectivity
wait_for: host={{ ip }} port=830 timeout=5
- name: Retrieve information from devices running Junos OS
junos_get_facts:
host={{ ip }}
user={{ user }}
passwd={{ password }}
register: junos
- name: version
debug: msg="{{ junos.facts.version }}"
Det kan være greit å vite at første test kun sjekker at Juniper-noden responderer på port 830 (NETCONF). Autentiseringen skjer i neste task.
Gjennomkjøring for å teste at Ansible og ansible-junos-stdlib-modulene fungerer
Vi bruker «ansible-playbook» for å utføre en playbook. Her har vi ett eksempel på gjennomkjøring av playbooken vi har definert lenger opp i artikkelen.
j@debian:~/test_ansible$ ansible-playbook -i hosts play.yaml
PLAY [Get Device Facts] *******************************************************
TASK: [Checking NETCONF connectivity] *****************************************
ok: [node1]
TASK: [Retrieve information from devices running Junos OS] ********************
ok: [node1]
TASK: [version] ***************************************************************
ok: [node1] => {
"msg": "15.1X49-D75.5"
}
PLAY RECAP ********************************************************************
node1 : ok=3 changed=0 unreachable=0 failed=0