Test Ansibel roles with molecule

Wie im letzten Artikel beschrieben verwende ich die manuelle Installation von Home Assistant. Um ein System schnell wieder herstellen zu können kann Ansible verwendet werden. Dazu habe ich eine Rolle erstellt. Diese ist als Github Repository verfügbar. Im gleichen Repository finden sich (in naher Zukunft) noch andere Rollen die für eine Home Assistant Installation sinnvoll sein können. Eine Beschreibung der Variablen befindet sich in der README.

  • pip installieren sudo easy_install pip
  • virtuelle Umgebung erstellen
cd
cd Projekte/python/
virtualenv esphome
  • virtuelle Umgebung aktivieren source ~/Projekte/python/esphome/bin/activate
  • esphome installieren pip install esphome
  • esphome aktualisieren
source ~/Projekte/python/esphome/bin/activate
pip install -U esphome

Pakete für virtual environment (Beschreibung für MacOS und Linux):

  • ansible
  • ansible-lint
  • yamllint
  • molecule
  • molecule-docker
  • molecule-goss

neue Rolle erstellen: molecule init role joepublic.webserver –driver-name docker –verifier-name goss

Beispiel Rolle:

---
- name: install apache
  apt:
    name: apache2
    state: present
  • meta/main.yml anpassen
  • molecule/default/molecule.yml anpassen:
    • lint
    • platforms
dependency:
  name: galaxy
driver:
  name: docker
platforms:
  - name: debian11
    image: debian:stable
provisioner:
  name: ansible
verifier:
  name: goss
lint: |
  set -e
  yamllint .
  ansible-lint .
  • Tests definieren in molecule/default/tests/test_default.yml
  • Beispiel für Rolle webserver:
# Molecule managed

---
package:
  apache2:
    installed: true
port:
  tcp:80:
    listening: true
dependency:
  name: galaxy
driver:
  name: docker
platforms:
  - name: debian11
    image: joepublic/molecule-debian:11
    pre_build_image: true
    command: /lib/systemd/systemd
    privileged: true
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:rw
provisioner:
  name: ansible
verifier:
  name: goss
lint: |
  set -e
  yamllint .
  ansible-lint .
{
  "default-cgroupns-mode": "host"
}
  • Konfiguration für MacOS ….