mates a102c83db8 refactor: ceske nazvy playbooku a roli bez diakritiky
Playbooky (novy nazev -> co dela):
- priprav-novy-server.yml (kompletni setup noveho serveru)
- nasad-sluzby.yml (nasadi Docker sluzby z docker-services/)
- aktualizuj-sluzby.yml (docker compose pull && up -d)
- zabezpec-server.yml (sysctl, auditd, unattended-upgrades)
- bootstrap-server.yml SMAZAN (duplicitni s priprav-novy-server)

Role (novy nazev -> co dela):
- zaklad (update + base baliky + timezone)
- uzivatel-deploy (vytvori deploy usera UID 1000)
- ssh-klice (authorized_keys deployment)
- docker (Docker Engine + Compose plugin) - ponechan anglicky (IT konvence)
- adresare (/home/deploy/{docker,scripts,backups,logs,...})
- firewall SMAZAN (nepouziva se)

Reference v playbooku aktualizovany na nove nazvy roli.
README.md kompletne prepracovan v cestine pro zacatecniky - vysvetluje
co Ansible je, jak nainstalovat, jak vytvorit inventory, jak spustit
playbook, jak overit ze vse funguje.
2026-08-01 20:08:25 +02:00
2026-08-01 19:51:59 +02:00
2026-08-01 19:51:59 +02:00
2026-08-01 19:51:59 +02:00

mates-ansible

Ansible playbooky pro přípravu nového serveru a správu home infrastruktury.

Jsi začátečník? Čti od Začínáme vše je tu vysvětleno krok za krokem.


📚 Co je Ansible?

Ansible je nástroj, který automatizuje konfiguraci serverů. Místo toho, aby ses ručně přihlašoval přes SSH a psal 50 příkazů, napíšeš jeden příkaz a Ansible udělá všechno za tebe.

Příklad: Místo

ssh server "apt update && apt install -y docker docker-compose-plugin && usermod -aG docker deploy"

napíšeš

ansible-playbook -i inventory.yml playbooks/priprav-novy-server.yml

a Ansible to udělá na všech serverech najednou.


📦 Obsah repozitáře

🎯 Playbooky (hlavní úkoly)

Playbook Co dělá
priprav-novy-server.yml Kompletní příprava nového serveru od nuly (update + user + SSH + Docker + adresáře + fail2ban)
nasad-sluzby.yml Nasaď Docker služby z mates-docker-services/ (Portainer, Vaultwarden, Gitea, …)
aktualizuj-sluzby.yml Aktualizuj všechny běžící služby (docker compose pull && up -d)
zabezpec-server.yml Bezpečnostní hardening (sysctl, auditd, automatické security updaty)

🧩 Role (znovupoužitelné bloky)

Role Co dělá
zaklad Základ: update systému, base balíky (btop, mc, tree, curl, …), timezone
uzivatel-deploy Vytvoří uživatele deploy (UID 1000) s uzamknutým heslem
ssh-klice Nasadí SSH klíč pro deploy (heslo = klíč, ne heslo)
docker Docker Engine + Compose plugin + nastavení daemon.json
adresare /home/deploy/{docker,scripts,backups,logs,~/.local/bin} + 14 složek pro služby

⚙️ Konfigurace

Soubor Co obsahuje
inventory.example.yml Ukázkový inventory seznam serverů
group_vars/all.yml.example Společné proměnné (SSH klíč, porty, balíky, …)
ansible.cfg Konfigurace Ansible (cesty, SSH optimalizace, …)

🚀 Začínáme

Krok 1: Nainstaluj Ansible

# macOS
brew install ansible

# Linux (apt)
sudo apt install -y ansible

Krok 2: Naklonuj repo

git clone http://<server-ip>:3000/mates/mates-ansible.git
cd mates-ansible

Krok 3: Vytvoř inventory.yml

Zkopíruj ukázkový soubor a uprav:

cp inventory.example.yml inventory.yml
nano inventory.yml

Co v inventory nastavit:

all:
  vars:
    ansible_user: ubuntu           # SSH user na novém serveru
    ansible_become: true          # potřebuje sudo (povinné)
    ansible_ssh_pass: tvujHeslo   # heslo pro první připojení (jen dočasně!)

  children:
    homeservers:
      hosts:
        novy-server:
          ansible_host: 192.168.1.50   # IP nového serveru

Krok 4: Přidej svůj SSH klíč

# Na Macu  zobraz svuj verejny klic
cat ~/.ssh/id_ed25519.pub
# ssh-ed25519 AAAAC3Nz... hermes@mac

# Pridej do group_vars/all.yml.example
cp group_vars/all.yml.example group_vars/all.yml
nano group_vars/all.yml

V souboru najdi řádek:

deploy_ssh_public_keys:
  - "ssh-ed25519 AAAAC3Nz... hermes@mac"   # ← sem vlož svůj klíč

Krok 5: Spusť playbook

ansible-playbook -i inventory.yml playbooks/priprav-novy-server.yml

Co se stane:

  1. Ansible se připojí na server přes SSH (s heslem)
  2. Stáhne seznam balíků (apt update)
  3. Nainstaluje 17 základních balíků (btop, mc, tree, curl, …)
  4. Vytvoří uživatele deploy (UID 1000)
  5. Zamkne mu heslo (přístup jen přes SSH klíč)
  6. Přidá tvůj SSH klíč do ~/.ssh/authorized_keys
  7. Nainstaluje Docker Engine + Compose plugin
  8. Přidá deploy do docker group (docker bez sudo)
  9. Vytvoří adresářovou strukturu pro 14 Docker služeb
  10. Nainstaluje fail2ban (ochrana proti brute-force SSH)

Trvání: 5-10 minut.

Krok 6: Ověř

# Prihlas se jako deploy (s klicem, bez hesla)
ssh deploy@<server-ip>

# Over Docker
docker ps                # melo by fungovat bez sudo
docker compose version

# Adresare
ls /home/deploy/        # melo byt: docker, scripts, backups, logs, ...

🎬 Práce s playbooky

Příprava nového serveru (úplně od nuly)

ansible-playbook -i inventory.yml playbooks/priprav-novy-server.yml

Nasazení Docker služeb

# Nasaď všechny (portainer, gitea, vaultwarden, ...)
ansible-playbook -i inventory.yml playbooks/nasad-sluzby.yml

# Nasaď jen vybrané
ansible-playbook -i inventory.yml playbooks/nasad-sluzby.yml \
    --extra-vars "sluzby=[portainer,vaultwarden]"

Aktualizace služeb

# Aktualizuj všechny běžící služby (docker compose pull && up -d)
ansible-playbook -i inventory.yml playbooks/aktualizuj-sluzby.yml

Bezpečnostní hardening

ansible-playbook -i inventory.yml playbooks/zabezpec-server.yml

Tento playbook nastavuje:

  • sysctl hardening síťových parametrů jádra
  • auditd logování bezpečnostních událostí
  • unattended-upgrades automatické bezpečnostní aktualizace

🏗 Struktura projektu

mates-ansible/
├── README.md                          # Tento soubor
├── LICENSE                            # MIT
├── ansible.cfg                        # Konfigurace Ansible
├── inventory.example.yml              # Ukázkový inventory
├── group_vars/
│   └── all.yml.example                # Společné proměnné
├── playbooks/
│   ├── priprav-novy-server.yml        # Příprava nového serveru
│   ├── nasad-sluzby.yml              # Nasaď Docker služby
│   ├── aktualizuj-sluzby.yml          # Aktualizuj služby
│   └── zabezpec-server.yml            # Bezpečnostní hardening
└── roles/
    ├── zaklad/                        # Update + base balíky
    ├── uzivatel-deploy/               # Vytvoření deploy usera
    ├── ssh-klice/                    # Nasazení SSH klíče
    ├── docker/                        # Docker Engine + Compose
    └── adresare/                      # Adresářová struktura

🔑 Kde co nastavit

Co Kde
IP serverů inventory.yml
SSH klíč pro deploy group_vars/all.ymldeploy_ssh_public_keys
Base balíky roles/zaklad/defaults/main.ymlbase_packages
Porty group_vars/all.ymlallowed_ports
Docker daemon nastavení roles/docker/defaults/main.ymldocker_daemon_config
Služby k nasazení group_vars/all.ymlservices_to_deploy

🔐 Bezpečnost

  • Deploy user má zamknuté heslo přístup jen přes SSH klíč
  • Bez hesel v inventory použij ansible-vault nebo SSH klíče
  • Docker bez sudo user deploy je v docker group
  • fail2ban 3 pokusy o SSH = ban na 1 hodinu
  • Firewall se nenastavuje automaticky viz priprav-novy-server.yml pro vysvětlení

📚 Další zdroje

Detailní postupy najdeš v Jotty knowledge base.


📜 Licence

MIT viz LICENSE


Poslední update: 2026-08-01

S
Description
Ansible playbooky pro nasazeni a spravu home infrastruktury
Readme MIT
81 KiB
Languages
INI 100%