Lab 06 : Automatisation
Objectifs
Section intitulée « Objectifs »- Mettre en place des tests
- Utiliser Renovate
Architecture du TP
Section intitulée « Architecture du TP »Dans cette partie, vous allez apprendre à :
- Mettre en place des tests automatisés
- Utiliser Renovate
Mise en place des tests automatisés
Section intitulée « Mise en place des tests automatisés »Reprenez le template Packer du lab04.
- Installez testinfra avec la commande suivante :
pip install pytest-testinfra- Créez un dossier
tests - Dans ce dossier créez le fichier
test_openssh.pyavec le contenu suivant :
def test_openssh_is_installed(host): openssh = host.package("openssh-server") assert openssh.is_installed, "Le paquet openssh-server devrait être installé"
def test_sshd_config(host): sshd_config = host.file('/etc/ssh/sshd_config') assert sshd_config.exists assert sshd_config.contains('PermitRootLogin no') assert sshd_config.contains('Port 22')- Ajoutez le provisioner
shell-localpour lancer la commande de test
provisioner "shell-local" { inline = ["pytest --sudo --sudo-user=${build.User} --hosts=ssh://${build.Host}:${build.Port} --ssh-identity-file=/tmp/packer-session.pem"] }Mise à jour des dépendances avec Renovate
Section intitulée « Mise à jour des dépendances avec Renovate »- Si vous n’avez pas de compte sur Github créez en un.
- Créez le projet et déposez-y le code de votre template Packer
- Créez dans votre projet le fichier
renovate.json5avec ce contenu :
{ "extends": ["config:recommended"], "customManagers": [ { "customType": "regex", "fileMatch": ["config.pkr.hcl"], "matchStrings": [ "githubReleaseVar repo=(?<depName>.**?)\n .*version = \"(?<currentValue>.**)\"\n", "githubReleaseVar repo=(?<depName>.**?)\n .*version: (?<currentValue>.**)\n" ], "datasourceTemplate": "github-releases" } ], "packageRules": [ { "matchPackageNames": ["hashicorp/packer"], "extractVersion": "^v(?<version>.*)$" }, ]}- Editez le fichier
config.pkr.hclet remplacez le contenu avec ce fichier :
packer { required_plugins { outscale = { # renovate: githubReleaseVar repo=outscale/packer-plugin-outscale version = "v1.1.3" source = "github.com/outscale/outscale" } }}- Définissez les variables suivantes :
export GITHUB_COM_TOKEN="xxxxxxxxxx"export RENOVATE_TOKEN="xxxxxxx"- Installez Renovate
- Lancez la commande suivante :
renovate --autodiscoverValidation du TP
Section intitulée « Validation du TP »Pour la mise en place des tests
Section intitulée « Pour la mise en place des tests »Dans les logs de la commande de build Packer vous devez voir apparaître les
tests en status PASSED
==> ubuntu_2404_tp.outscale-bsu.ubuntu_2404: Running local shell script: /var/folders/gz/41fxhbwj3nbgscbfkfnpgnv00000gq/T/packer-shell481790992 ubuntu_2404_tp.outscale-bsu.ubuntu_2404: ============================= test session starts ============================== ubuntu_2404_tp.outscale-bsu.ubuntu_2404: platform darwin -- Python 3.11.1, pytest-8.3.2, pluggy-1.5.0 -- /Users/srt20/Projets/outscale/labs/packer/lab2/.direnv/python-3.11/bin/python3.11 ubuntu_2404_tp.outscale-bsu.ubuntu_2404: cachedir: .pytest_cache ubuntu_2404_tp.outscale-bsu.ubuntu_2404: rootdir: /Users/srt20/Projets/outscale/labs/packer/lab2 ubuntu_2404_tp.outscale-bsu.ubuntu_2404: plugins: testinfra-10.1.1 ubuntu_2404_tp.outscale-bsu.ubuntu_2404: collecting ... collected 2 items ubuntu_2404_tp.outscale-bsu.ubuntu_2404: ubuntu_2404_tp.outscale-bsu.ubuntu_2404: tests/test_openssh.py::test_openssh_is_installed[ssh://148.253.88.189] PASSED [ 50%] ubuntu_2404_tp.outscale-bsu.ubuntu_2404: tests/test_openssh.py::test_sshd_config[ssh://148.253.88.189] PASSED [100%] ubuntu_2404_tp.outscale-bsu.ubuntu_2404: ubuntu_2404_tp.outscale-bsu.ubuntu_2404: ============================== 2 passed in 2.69s ===============================Pour la mise à jour des dépendances avec Renovate
Section intitulée « Pour la mise à jour des dépendances avec Renovate »Dans votre projet github, vous devez avoir une nouvelle Merge Request et une Issue :

Challenge
Section intitulée « Challenge »- Ajoutez des tests permettant de vérifier que le package est correctement installé, que le service nginx est bien démarré.