githubixx.containerd
ansible-role-containerd
Rôle Ansible pour installer containerd. containerd
est un runtime de conteneur standard de l'industrie avec un accent sur la simplicité, la robustesse et la portabilité. Il est disponible en tant que démon pour Linux et Windows, et peut gérer l'ensemble du cycle de vie des conteneurs de son système hôte : transfert et stockage d'images, exécution et supervision des conteneurs, stockages et attachements réseau de bas niveau, etc.
Journal des modifications
Historique des changements :
Voir le CHANGELOG complet
Modifications récentes :
0.13.1+1.7.20
- MISE À JOUR
- mise à jour de
containerd
àv1.7.20
- mise à jour de
0.13.0+1.7.19
FONCTIONNALITÉ
- ajout du support pour Ubuntu 24.04
MISE À JOUR
- mise à jour de
containerd
àv1.7.19
- mise à jour de
Installation
Téléchargez directement depuis Github (changez dans le répertoire du rôle Ansible avant de cloner) :
git clone https://github.com/githubixx/ansible-role-containerd.git githubixx.containerd
Via la commande
ansible-galaxy
et téléchargez directement depuis Ansible Galaxy :ansible-galaxy install role githubixx.containerd
Créez un fichier
requirements.yml
avec le contenu suivant (cela téléchargera le rôle depuis Github) et installez-le avec :ansible-galaxy role install -r requirements.yml
:
---
roles:
- name: githubixx.containerd
src: https://github.com/githubixx/ansible-role-containerd.git
version: 0.13.1+1.7.20
Variables du rôle
# Actuellement, seule la valeur "base" est supportée
containerd_flavor: "base"
# version de containerd à installer
containerd_version: "1.7.19"
# Répertoire où stocker les binaires "containerd"
containerd_binary_directory: "/usr/local/bin"
# Emplacement du fichier de configuration de containerd
containerd_config_directory: "/etc/containerd"
# Répertoire pour stocker l'archive
containerd_tmp_directory: "{{ lookup('env', 'TMPDIR') | default('/tmp', true) }}"
# Propriétaire/groupe des binaires "containerd". Si les variables ne sont pas définies
# le binaire résultant appartiendra à l'utilisateur actuel.
containerd_owner: "root"
containerd_group: "root"
# Spécifie les permissions des binaires "containerd"
containerd_binary_mode: "0755"
# Système d'exploitation
# Options possibles : "linux", "windows"
containerd_os: "linux"
# Architecture processeur sur laquelle "containerd" doit fonctionner.
# Autres valeurs possibles : "arm64", "arm"
containerd_arch: "amd64"
# Nom du fichier archive
containerd_archive_base: "containerd-{{ containerd_version }}-{{ containerd_os }}-{{ containerd_arch }}.tar.gz"
# L'URL de téléchargement de containerd (normalement pas besoin de changer)
containerd_url: "https://github.com/containerd/containerd/releases/download/v{{ containerd_version }}/{{ containerd_archive_base }}"
# Paramètres du service systemd de containerd
containerd_service_settings:
"ExecStartPre": "{{ modprobe_location }} overlay"
"ExecStart": "{{ containerd_binary_directory }}/containerd"
"Restart": "always"
"RestartSec": "5"
"Type": "notify"
"Delegate": "yes"
"KillMode": "process"
"OOMScoreAdjust": "-999"
"LimitNOFILE": "1048576"
"LimitNPROC": "infinity"
"LimitCORE": "infinity"
# Contenu du fichier de configuration de "containerd". Les paramètres ci-dessous sont ceux qui diffèrent des paramètres par défaut de "containerd".
#
# La configuration par défaut de "containerd" peut être générée avec cette commande :
#
# containerd config default
#
# Différences par rapport à la configuration par défaut :
#
# - Le fichier de configuration contient quelques variables de rôle qui seront remplacées lors du traitement du modèle de configuration.
# - Dans 'plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options' le paramètre "SystemdCgroup" est défini sur "true" au lieu de "false". Ceci est pertinent pour Kubernetes par exemple. Voir aussi :
# https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd-systemd)
#
containerd_config: |
version = 2
[plugins]
[plugins."io.containerd.grpc.v1.cri"]
sandbox_image = "registry.k8s.io/pause:3.8"
[plugins."io.containerd.grpc.v1.cri".cni]
bin_dir = "/opt/cni/bin"
conf_dir = "/etc/cni/net.d"
[plugins."io.containerd.grpc.v1.cri".containerd]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
runtime_type = "io.containerd.runc.v2"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
BinaryName = "/usr/local/sbin/runc"
SystemdCgroup = true
[stream_processors]
[stream_processors."io.containerd.ocicrypt.decoder.v1.tar"]
args = ["--decryption-keys-path", "{{ containerd_config_directory }}/ocicrypt/keys"]
env = ["OCICRYPT_KEYPROVIDER_CONFIG={{ containerd_config_directory }}/ocicrypt/ocicrypt_keyprovider.conf"]
[stream_processors."io.containerd.ocicrypt.decoder.v1.tar.gzip"]
args = ["--decryption-keys-path", "{{ containerd_config_directory }}/ocicrypt/keys"]
env = ["OCICRYPT_KEYPROVIDER_CONFIG={{ containerd_config_directory }}/ocicrypt/ocicrypt_keyprovider.conf"]
Dépendances
Dépendances optionnelles (par exemple, nécessaires pour Kubernetes) :
Vous pouvez bien sûr utiliser n'importe quel autre rôle runc
et CNI
.
Exemple de Playbook
- hosts: votre-hôte
roles:
- githubixx.containerd
D'autres exemples sont disponibles dans les tests Molecule.
Tests
Ce rôle dispose d'un petit environnement de test créé à l'aide de Molecule, libvirt (vagrant-libvirt) et QEMU/KVM. Veuillez consulter mon article de blog Tester des rôles Ansible avec Molecule, libvirt (vagrant-libvirt) et QEMU/KVM sur la façon de configurer. La configuration de test est ici.
Ensuite, vous pouvez exécuter molecule :
molecule converge
Cela mettra en place quelques machines virtuelles (VM) avec différents systèmes d'exploitation Linux pris en charge et installera containerd
, runc
et les plugins CNI
(nécessaires par exemple pour Kubernetes).
Une petite étape de vérification est également incluse. Elle télécharge un conteneur nginx et l'exécute pour s'assurer que containerd
est configuré correctement et capable d'exécuter des images de conteneurs :
molecule verify
Pour nettoyer, exécutez :
molecule destroy
Licence
LICENCE PUBLIQUE GÉNÉRALE GNU Version 3
Informations sur l'auteur
Ansible role to install containerd
ansible-galaxy install githubixx.containerd