Automatizovaná správa serverov

Simona Bennárová, 456270@mail.muni.cz

Obsah

Princíp fungovania

Infrastructure as Code - namiesto ručnej konfigurácie si počítač prečíta konfiguráciu
Píše sa do súborov nazývaných cookbooks, manifests, recipes, playbooks, roles, plays
zjednodušene - kontroluju stav (či je package na inštalovany, či beží program, či súbor obsahuje čo má)

Dostupné nástroje

Ansible

Nevyužíva agentov (takže nebeží žiaden démon kontrolujúci, či sa má niečo aktualizovať, takže ani nespotrebuje žiadne zdroje), nie je ani nainštalovaný na serveri. Namiesto toho sa iba pripojí cez SSH, a pomocou modulov vykoná potrebné zmeny.

Inštalácia na Ubuntu:
sudo apt-add-repository -y ppa:ansible/ansible
sudo apt-get update
sudo apt-get install -y ansible

Konfigurácia

Konfiguračný súbor /etc/ansible/ansible.cfg
Pre začatím používania je dôležité umiestniť adresy serverov do súboru /etc/ansible/hosts nasledovne:

[proto02-beta]
10.0.20.2

[proto02-beta:vars]
ansible_user=simona
ansible_ssh_private_key_file=~/.ssh/privateKey

Týmto sme definovali skupinu proto02-beta môže byť vrámci serveru viac a môžu obsahovať viacej serverov. Namiesto IP sa tiež dá použiť doménové meno. Ak používame na pripojenie iný port ako 22, treba napísať tiež (napr. 10.0.20.2:2222)

Namiesto kľúča sa dá použiť aj heslo, dá sa nastaviť cez ansible_password, ale heslo sa odporúča zašifrovať a uložiť do Vault súboru.

Play

Príklady:
Tento príklad je pre Ubuntu/Debian systémy súbor playbook.yml:
---
- hosts: proto02-beta

become: yes


tasks:

- name: Nainštaluj potrebné balíčky

apt: name={{ item }} state=present

with_items:

- netplan.io

- iptables-persistent



- name: Nastav sieť

copy:

dest: "/etc/netplan/configuration.cfg"

content: |

network:

ethernets:

ens3:

addresses: [10.0.0.20/24]

gateway4: 10.0.0.1

nameservers: [10.0.0.1]



- name: Aplikuj nastavenia

command: netplan apply



- name: Zmeň nastavenia pre ssh

lineinfile:

dest: "/etc/ssh/ssh_config"

regexp: 'GSSAPIAuthentication'

line: 'GSSAPIAuthentication no'

present: yes



- name: naištaluj potrebné balíčky

apt: name={{ item }} state=present

with_items:

- netplan.io

- iptables-persistent



- name: Aplikuj netplan konfiguráciu

command: netplan apply

register: netplan_result



- name: Reštartuj networkd

service: name=networkd state=restarted

when: "'Invalid YAML' not in netplan_result.stdout"



- name: Reštartuj systém

reboot:



changed_when, failed_when, ignore_errors

Spustenie playbooku: ansible-playbook playbook.yml

Role

Pre lepšiu organizáciu je možnosť organizovania playbookov do takzvaných rolí.

my_role/

defaults/

files/

handlers/

meta/

tasks/

templates/

tests/

vars/


Niektoré zložky(ktorých obsah sa vykonáva) obsahujú súbor main.yml. Ansible spustí všetky úlohy zapísané v tomto súbore. Obsah playbooku môže vyzerať takto:

playbook.yml:
---
- hosts: myserver

roles:

my_role


K vytvoreniu štruktúry role stačí spustiť príkaz ansible-galaxy init my_role

Ad-hoc

ansible myserver -s -a "apt install netplan.io"
ansible myserver -s -m apt -a "name=netplan.io state=present"

Read-only systémy

Sú to systémy, ktorých aplikácie a služby nebežia priamo v operačnom systéme ale v kontajneri.
Využívajú sa clusteri.

Literatura