Az Ansible környezethez egy virtuális gépet fogunk használni: az Ansible scriptek futtatására egy előre elkészített, 'ANSIBLE-HOST' nevű VM-et. A kódot továbbra is a gazdagépen írjuk, VSCode-al, SSH tunnelen keresztül.
A VM-et tartalmazó .ova fájl megtalálható az iskolai hálózaton Tanári mappák > Simon Tamás > VM > ANSIBLE-HOST elérési úton.
A virtuális gépen belépve hostname -I vagy ip a parancs használatával nézzük meg a kapott IP címet, majd erre csatlakozzunk VS Code-ból. (Bal alsó sarok, remote connection > SSH / Connect to host, ansible@ip-cím)
A csatlakozást követően nyissuk meg VS Codeban a /home/ansible/workspace mappát és ott dolgozzunk.
Az előre elkészített virtuális környezetet a terminálban a source venv/bin/activate paranccsal lehet aktiválni, ezt követően adhatóak ki az ansible-playbook ... parancsok.
A lap alján megtalálhatók azok a lépések, melyekkel ez a környezet készült, illetve opcionális, kényelmi lépések is.
Tegyük fel, hogy CML-ben már van egy router, aminek címe 10.32.1.1, engedélyezve van rajta az SSH és létezik egy ansible/ansible felhasználó. (Az IOSv routeren alapértelmezés szerint a vty vonalakon transport input none van kiadva, ezt mindenképp változtassuk meg!)
A hálózati eszköz nyilvános kulcsát fel kell venni az ismert kulcsok közé, hogy a script futásakor ne kérdezzen rá az ssh program (mert ettől megakadna). A legegyszerűbb, ha először manuálisan csatlakozunk ssh-val a hálózati eszközre és az előbb tárgyalt kérdésnél igent válaszolunk.
Az ansible csatlakozás teszteléséhez a routerrel saját magát fogjuk megpingeltetni.
Hozzuk létre a következő két fájlt:
inventory.yml
all:
vars:
ansible_connection: ansible.netcommon.network_cli
ansible_network_os: cisco.ios.ios
ansible_user: ansible
ansible_password: ansible
hosts:
r1:
ansible_host: 10.32.1.1
1-test.yml
---
- name: Test reachability
hosts: r1
tasks:
- name: Ping myself
cisco.ios.ios_ping:
dest: "10.32.1.1"
Ezt követően adjuk ki a következő parancsot:
ansible-playbook -i inventory.yml 1-test.yml
Ha minden jól lett beállítva, a program hiba nélkül lefut.
A jelszó folyamatos begépelését elkerülve kulcspáros hitelesítés is alkalmazható a VS Code-hoz.
A gazdagépen navigáljunk el C:\Users\<NÉV>\.ssh\ útvonalhoz, majd nyissunk egy parancssort és generáljunk egy kulcspárt:
ssh-keygen
Ezt követően másoljuk át a publikus kulcsot az Ansible hostra:
scp id_rsa.pub ansible@192.168.86.200:/home/ansible/id_rsa.pub
Most az ansible hoston adjuk hozzá a publikus kulcsot az engedélyezett kulcsokhoz:
cd
cat id_rsa.pub >> .ssh/authorized_keys
A linux oldalon ezzel kész is, már csak a windowson kell szerkeszteni a C:\Users\<NÉV>\.ssh\config fájlt. Ha nincs ilyen, hozzuk létre; adjuk hozzá a következő részt:
Host ansible@192.168.86.200
HostName 192.168.86.200
User ansible
IdentityFile C:\\Users\\<NÉV>\\.ssh\\id_rsa
Ezt követően a VS Code újbóli megnyitása után a bal alsó sarokban Open a remote window > Connect to Host menüben megjelenik az ansible host, csatlakozzunk rá.
Az Ansible hoston telepítjük a szükséges csomagokat: (root felhasználóval futtatva)
apt update
apt install python3 python3-pip python3-venv
Lépjünk vissza a saját felhasználónkba.
Készítünk egy mappát, amiben dolgozni fogunk:
cd
mkdir workspace && cd workspace
Létrehozunk egy virtuális Python környezetet, amibe telepítjük az ansible csomagjait:
python3 -m venv venv
Ha ezt a VSCode-ban csináltuk, akkor ezt követően fel kellene jönnie egy kérdésnek, hogy váltson-e a program erre a környezetre; fogadjuk el. Ha később nyitjuk meg itt a VSCode-ot, akkor ellenőrizzük, hogy ez a környezet legyen érvényben.
Így már tudunk csomagokat telepíteni, tegyük is ezt meg:
pip install ansible ansible-lint ansible-pylibssh
Az ansible telepítést a következő paranccsal ellenőrizhetjük:
ansible --version
Bizonyos Cisco eszközök nem támogatják az SSH újabb paramétereit, így ezen módosítani kell a /etc/ssh/ssh_config fájlban:
Host *
KexAlgorithms +diffie-hellman-group14-sha1
HostkeyAlgorithms +ssh-rsa
Indítsuk újra az ssh szolgáltatást:
service ssh restart