Install
sudo apt install python3-pip
pip install ansible
nakon instalcije moramo dodati PATH to se radi u nano .profile
nano .profile
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
zatim instaliramo jinja2
python paket
pip install jinja2
zatim provjerimo verziju
ansible --version
Jedan klasican ansible directorie tree za upravljanje proxmox
U inventory.yaml
direktoriju se nalazi iventar masina za upravljanje.barebonemachines
je masina koja je tek instalirana ima ip adresu i user name, ime smo dali pmbb
.
prodmachines
je namistena masina spremna za upotrebu sa postavljenim DHCP clientom
barebonemachines:
hosts:
pmbb:
ansible_host: 192.168.100.2
ansible_user: root
prodmachines:
hosts:
pm01:
ansible_host: dabars.truss
ansible_user: root
U files
datoteci je file interface
koi sadrzi informacije da se upali DHCP client na proxmoxu. Koi cemo sa plybookom zamjeniti sadrzaj fajle da se mozemo spoiti sa imenom domene FQDN (Fully qualified domain name) a ne preko ip adrese.
auto lo
iface lo inet loopback
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet dhcp
bridge-ports eno1
bridge-stp off
bridge-fd 0
U datoteci playbooks
se nalazi fajla init_dhcp.yaml
.
Zadatak ovom playbooku
je to da zamjeni sadrzaj file na tek instaliranome proxmoxu da upali DHCP client.
---
- hosts: all
tasks:
- name: copy text file to destination
ansible.builtin.copy:
src: ../files/interface
dest: /etc/network/interfaces
Komanda za pokretanje playbooka za izmjenu barebonemachines-a.
ansible-playbook playbooks/init_dhcp.yaml -i inventory/inventory.yaml --limit barebonemachines
System konfiguracija
VIDITI DOMA I REDOKUMETIRATI DODAVANJE FREE REPO!!!!!!
Dodavanje free repozitorija
U proxmoxu moramo dodati free repozitorije jer je po defautu namješten enterprise (plaćeni) repozitorij onda nemožemo korititi update apt packete za instaliranje novih paketa i ostale stvari.
Dodamo novi playbook i u njega stavimo naredbu za promjenom repo servera.
U prvom tasku add new free repo
smo zamjenili sadržaj sources.list
sa novim.
U drugom tasku comment pve-enterprise.list
smo komentirali link servera za enterprise repo.
Ako promjenimo servere samo u sources.list
i dalje necemo moci pristupiti free serverima zato moramo promjeniti tj. zakomentirati server u fajli pve-enterprise.list
.
- hosts: prodmachines
tasks:
- name: add new free repo
ansible.builtin.copy:
src: ../files/sources.list
dest: /etc/apt/sources.list
- name: comment pve-enterprise.list
ansible.builtin.copy:
src: ../files/pve-enterprise.list
dest: /etc/apt/sources.list.d/pve-enterprise.list
Ovako izgleda sources.list
deb http://ftp.debian.org/debian/ bullseye main contrib
deb http://ftp.debian.org/debian/ bullseye-updates main contrib
# PVE pve-no-subscription repository provided by proxmox.com,
# NOT recommended for production use
deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription
# security updates
deb http://security.debian.org/debian-security/ bullseye-security main contrib
Ovako izgleda pve-enterprise.list
# deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
Varijable u ansiblu
Varijable se spremaju u posebnu yaml
fajlu i imaju sljedeću sintaksu:
imeVarijable: vrijednostVarijable
nodePass: 1q2w3e4r
nodeUser: root@pam
containerPass: 1q2w3e4r5t
Importanje fajla gdje su napisane varijable u playbook izgleda ovako:
- hosts: prodmachines
vars_files:
- '{{ playbook_dir }}/../vault/secret.yaml'
Sintaksa za korištenje varijabli:
'{{ imeVarijable }}'
Korištenje varijabli u playbooku izgleda ovako:
- name: start created container
community.general.proxmox:
vmid: 107
node: dabars
api_user: '{{ nodeUser }}'
api_password: '{{ nodePass }}'
api_host: dabars.truss
state: started
Kriptiranje fajla u ansiblu
U kriptirani fajl spremamo osjetljive informacije poput šifri username i ostalo.
Dodavanje kriptiranoga valut
fajla gdje su spremljene varijable. U tom fajlu su spremljene šifre, public key i username-ovi od noda i novog kontejnera.
Kreiranje takvog fajla pišemo komadu:
ansible-vault create vault/secret.yaml
Nakon pokretanja komande upišemo šifru, ponovimo šifru onda se otvori vim editor.
U njega se upiše sadržaj fajle zatim spremimo dokument i imamo kriptiranu fajlu.
Za spremanje dokumenta stisnemo Esc key
i upišemo :wq
što znaci write and quit
.
Nakon toga file izgleda ovako:
Ako u playbooku koristimo kriptiranu fajlu na kraju komande za pokretanje playbooka moramo imati:
--ask-vault-pass
primjer cijele ansible komande za pokretanje playbooka
ansible-playbook playbooks/create_pm_containers.yaml -i inventory/inventory.yaml --limit prodmachines --ask-vault-pass