Aller au contenu

Lab 06 : Automatisation

  • Mettre en place des tests
  • Utiliser Renovate

Dans cette partie, vous allez apprendre à :

  • Mettre en place des tests automatisés
  • Utiliser Renovate

Reprenez le template Packer du lab04.

  1. Installez testinfra avec la commande suivante :
Terminal window
pip install pytest-testinfra
  1. Créez un dossier tests
  2. Dans ce dossier créez le fichier test_openssh.py avec 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')
  1. Ajoutez le provisioner shell-local pour 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"]
}
  1. Si vous n’avez pas de compte sur Github créez en un.
  2. Créez le projet et déposez-y le code de votre template Packer
  3. Créez dans votre projet le fichier renovate.json5 avec 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>.*)$"
},
]
}
  1. Editez le fichier config.pkr.hcl et 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"
}
}
}
  1. Définissez les variables suivantes :
Terminal window
export GITHUB_COM_TOKEN="xxxxxxxxxx"
export RENOVATE_TOKEN="xxxxxxx"
  1. Installez Renovate
  2. Lancez la commande suivante :
Terminal window
renovate --autodiscover

Dans les logs de la commande de build Packer vous devez voir apparaître les tests en status PASSED

Terminal window
==> 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 :

  1. Ajoutez des tests permettant de vérifier que le package est correctement installé, que le service nginx est bien démarré.