Go to file
Michael Grote 3ca72d99c5 Doku zusammengefasst 2021-01-07 11:20:35 +01:00
.github/workflows Bash-Linter hinzugefügt (#62) 2020-11-05 08:02:33 +01:00
Archiv Miniflux in Archiv (#58) 2020-10-26 12:12:01 +01:00
group_vars Rolle: restic (#23) 2021-01-05 17:41:18 +01:00
playbooks Rolle: proxmox - Script. start_pools.sh (#28) 2021-01-07 10:47:48 +01:00
plugins/lookup Jenkins Integration (#1) 2020-12-09 10:21:40 +01:00
roles Doku aktualisiert 2021-01-07 10:49:42 +01:00
.ansible-lint External Roles as Submodules (#71) 2020-11-24 14:57:20 +01:00
.gitignore SSH aufgeräumt + neu deployed (#72) 2020-11-25 14:34:49 +01:00
.gitmodules Dataset: data verschlüsselt (#21) 2021-01-03 10:11:23 +01:00
.remote-sync.json first commit 2020-08-18 11:57:53 +02:00
README.md Doku zusammengefasst 2021-01-07 11:20:35 +01:00
ansible.cfg Pfad für Collections angepasst 2020-12-28 20:25:12 +01:00
inventory Gitea in LXC (#13) 2020-12-26 16:22:59 +01:00
keepass_db.kdbx Fileserver: Nutzer PVE hinzugefügt 2021-01-04 09:51:32 +01:00

README.md

ansible_heimserver

example-cli

ansible-playbook playbooks/base/0_master.yml -i inventory --limit jenkins-test.grote.lan --key-file id_rsa_ansible_user --vault-pass-file vault-pass.yml

install necessary collections

ansible-galaxy collection install -r requirements.yml

list installed collections

ansible-galaxy collection list -vvv

fix ansible vault-permissions

sudo chmod 400 id_rsa_ansible_user
sudo chmod 400 vault-pass.yml

vault + KeePass LookUp-Plugin

Einrichtung

Das Plugin wird bei einer Installation mit dem Playbook "ansible" mit eingerichtet.

Die "Secrets" liegen in der KeepassDB die mit dem Kennwort aus "vault-pass.yml" verschlüsselt ist. "vault-pass.yml" steht mit in der .gitignore Die Variable "vault_password_file" ist mit " ~/ansible/vault-pass.yml" in der ansible.cfg gesetzt. Diese Datei enthält das Passwort mit dem die KeePassDb verschlüsselt ist. Das vault-secret für die GroupVars wird mit ansible-vault encrypt_string <password> erstellt.

Erklärung

  keepass_dbx: "./keepass_db.kdbx"
  keepass_psw: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          62383737XXXXXX531
  1. mit vault-pass.yml wird das Kennwort an ansible-vault übergeben
  2. ansible-vault entschlüsselt hiermit die Variable keepass_psw
  3. der Inhalt der Variable wird dann an das KeePass-Lookup-Plugin übergeben was damit die KeePass-Datei öffnet

Abfrage der Secrets in tasks/playbooks

restic_repository_password: "{{ lookup('keepass', 'restic_repository_password', 'password') }}"

Erklärung

restic_repository_password:         <-- Ansible Variablen Name
lookup('keepass'                    <-- Aufruf Keepass-Lookup-Plugin
restic_repository_password          <-- Titel Eintrag mit Secret
password                            <-- Feldbzeichner in KeepassDB

Inventory anzeigen

ansible-inventory -i inventory --graph

Alternatives Dictionary Format:

  zfs_pool:
    - name: "ssd_vm_mirror"
      type: "ssd"
      cron_minute_zfs_trim: "5"
      cron_hour_zfs_trim: "22"
      cron_month_zfs_trim: "4,8,12"
      cron_day_zfs_trim: "2"
      cron_weekday_zfs_scrub: "6"
      cron_minutes_zfs_scrub: "0"
      cron_hour_zfs_scrub: "23"

ist das gleiche wie:

  zfs_pool:
    - { name: "ssd_vm_mirror", type: "ssd", cron_minute_zfs_trim: "5", cron_hour_zfs_trim: "22", cron_month_zfs_trim: "4,8,12", cron_day_zfs_trim: "2", cron_weekday_zfs_scrub: "6", cron_minutes_zfs_scrub: "0", cron_hour_zfs_scrub: "23"}

when: true

Use when: var rather than when: var == True (or conversely when: not var) when: dokuwiki_update # entspricht when: dokuwiki_update == true

##Loop + Join

Vars

    mountpoint: "/shares"
    sources:
      - "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1"
      - "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi2"
    opts: defaults,allow_other,direct_io,use_ino,moveonenospc=true,category.create=mfs,minfreespace=100G

Tasks

  - name: "Join/Combine sources"
    set_fact:
      src: "{{sources |  join (':')}}"
    loop: "{{ sources }}"

  - debug:
      msg: "{{src}}"

  - name: "Mount mergerFS"
    mount:
      path: "{{ mountpoint }}"
      src: "{{ src }}"
      opts: "{{ opts }}"
      fstype: fuse.mergerfs
      state: mounted