Ansible


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