No description
Find a file
2021-02-13 20:00:26 +01:00
.github/workflows Bash-Linter hinzugefügt (#62) 2020-11-05 08:02:33 +01:00
Archiv ZFS per Ansible 2021-02-07 10:53:08 +01:00
group_vars PVE CIFS Share 2021-02-13 20:00:26 +01:00
host_vars Überarbeitung: zfs-Rollen 2021-02-13 16:18:29 +01:00
playbooks Überarbeitung: zfs-Rollen 2021-02-13 16:18:29 +01:00
plugins/lookup Ansible-KeePass aktualisiert 2021-01-27 08:41:58 +01:00
roles PVE CIFS Share 2021-02-13 20:00:26 +01:00
.ansible-lint Vorbereitung Cluster 2021-02-06 18:34:31 +01:00
.gitignore SSH aufgeräumt + neu deployed (#72) 2020-11-25 14:34:49 +01:00
.gitlab-ci.yml git_module strategie entfernt 2021-02-13 14:43:17 +01:00
.gitmodules Rollen geclont 2021-02-13 14:19:13 +01:00
.remote-sync.json Vorbereitung Cluster 2021-02-06 18:34:31 +01:00
ansible.cfg Doku 2021-01-31 14:30:14 +01:00
inventory Überarbeitung: zfs-Rollen 2021-02-13 16:18:29 +01:00
keepass_db.kdbx PVE CIFS Share 2021-02-13 20:00:26 +01:00
README.md Einbau neue Proxmox Server + Test 2021-02-12 10:32:22 +01:00

ansible_heimserver

pipeline status

Dateirechte

chmod 0400 vault-pass.yml id_rsa_ansible_user

Ansible KeePass Lookup Plugin aktualisieren

pip install 'pykeepass>3.2.0' --user
mkdir -p ~/.ansible/plugins/lookup && cd "$_"
curl https://raw.githubusercontent.com/viczem/ansible-keepass/master/keepass.py -o ./keepass.py

collections als Dependency

  • in meta
collections:
  - community.general

defaults in Dictionary

- name: "register_runner"
  community.general.gitlab_runner:
    description: "{{ description|default('GitLab-Runner') }}"
description: <-- Original-Variable
"{{ item.description| <-- Original-Inhalt
default('GitLab-Runner') }}" <-- wenn Inhalt leer, dann default...

playbook-grapher

ansible-playbook-grapher --include-role-tasks tests/fixtures/with_roles.yml

example-cli

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

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

prüfen ob eine Datei existiert

  - name: check if migration file exists
    stat:
      path: /etc/miniflux.d/.migration_successful
    register: migration_successful_existiert

  - name: migration tocuh
    file:
      path: /etc/miniflux.d/.migration_successful
      state: touch
    when: migration_successful_existiert.stat.exists == False