Fortgeschrittene Techniken zum Testen von Ansible-Rollen
Während Molecule eine solide Grundlage für das Testen von Ansible-Rollen (roles) bietet, gibt es zusätzliche Techniken und Tools, die Sie nutzen können, um Ihre Testfähigkeiten zu erweitern.
Linting und statische Codeanalyse
Linting und statische Codeanalyse können Ihnen helfen, häufige Probleme und Verletzungen von Best Practices in Ihrem Ansible-Code zu entdecken. Tools wie ansible-lint
und yamllint
können in Ihre Molecule-Tests integriert werden, um sicherzustellen, dass Ihre Rollen den Codierungsstandards entsprechen.
## molecule/default/molecule.yml
---
## ...
provisioner:
name: ansible
lint:
name: ansible-lint
verifier:
name: ansible
lint:
name: yamllint
Integrationstests mit Testinfra
Testinfra ist ein auf Python basierendes Testframework, das es Ihnen ermöglicht, Tests gegen den Zustand Ihres Systems nach der Anwendung von Ansible zu schreiben. Dies kann besonders nützlich sein, um komplexe Konfigurationen zu testen oder das Verhalten Ihrer Rollen zu überprüfen.
## molecule/default/tests/test_default.py
import os
import testinfra.utils.ansible_runner
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
def test_hosts_file(host):
f = host.file('/etc/hosts')
assert f.exists
assert f.user == 'root'
assert f.group == 'root'
Continuous Integration (CI) mit GitHub Actions
Um sicherzustellen, dass Ihre Ansible-Rollen konsistent getestet werden, können Sie eine Continuous Integration (CI)-Pipeline mit Tools wie GitHub Actions einrichten. Dadurch werden Ihre Molecule-Tests automatisch ausgeführt, sobald Änderungen an Ihrem Rollen-Repository vorgenommen werden.
## .github/workflows/molecule.yml
name: Molecule Tests
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: "3.x"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install molecule[docker] ansible-lint yamllint
- name: Run Molecule tests
run: molecule test
env:
MOLECULE_DISTRO: ubuntu2204
Indem Sie diese fortgeschrittenen Techniken kombinieren, können Sie ein robustes und zuverlässiges Framework für Ihre Ansible-Rollen erstellen und sicherstellen, dass sie in einer Vielzahl von Umgebungen und Szenarien wie erwartet funktionieren.