Table of Contents

CoreOS: Transpiler de configuration de conteneur Linux

Config Transpiler (“ct” en abrégé) est l'utilitaire chargé de transformer une configuration Container Linux en un fichier JSON, qui peut être fourni à une machine Container Linux lors de son premier démarrage pour provisionner la machine.

Installation et configuration

Binaires pré-construits

Le moyen le plus simple de commencer à utiliser ct consiste à télécharger l'un des fichiers binaires à partir de la page des versions sur GitHub.

On peut utiliser le script suivant pour télécharger et vérifier la signature de Config Transpiler:

# Spécifie la version de Config Transpiler
CT_VER=v0.6.1

# Spécifie l'architecture
# ARCH=aarch64 # Architecture 64 bits d'ARM
ARCH=x86_64

# Spécifie le système d'exploitation
# OS=apple-darwin # MacOS
# OS=pc-windows-gnu.exe # Windows
OS=unknown-linux-gnu # Linux

# Spécifie l'URL de téléchargement
DOWNLOAD_URL=https://github.com/coreos/container-linux-config-transpiler/releases/download

# Supprime les téléchargements précédents
rm -f /tmp/ct-${CT_VER}-${ARCH}-${OS} /tmp/ct-${CT_VER}-${ARCH}-${OS}.asc /tmp/coreos-app-signing-pubkey.gpg

# Télécharge le binaire Config Transpiler
curl -L ${DOWNLOAD_URL}/${CT_VER}/ct-${CT_VER}-${ARCH}-${OS} -o /tmp/ct-${CT_VER}-${ARCH}-${OS}
chmod u+x /tmp/ct-${CT_VER}-${ARCH}-${OS}

# Télécharge et importe la clé GPG de signature des applications CoreOS.
Curl https://coreos.com/dist/pubkeys/app-signing-pubkey.gpg -o /tmp/coreos-app-signing-pubkey.gpg
Gpg2 --import --keyid-format LONG /tmp/coreos-app-signing-pubkey.gpg

# Télécharge et importe la clé GPG de signature d’une application CoreOS si elle n’a pas déjà été importée.
curl https://coreos.com/dist/pubkeys/app-signing-pubkey.gpg -o /tmp/coreos-app-signing-pubkey.gpg
gpg2 --import --keyid-format LONG /tmp/coreos-app-signing-pubkey.gpg

Construire à partir de la source

Pour compiler à partir des sources, le compilateur go doit être installé sur votre système.

git clone --branch v0.8.0 https://github.com/coreos/container-linux-config-transpiler
cd container-linux-config-transpiler
make

Le binaire ct sera placé dans ./bin/.

Utilisation

Ct est un outil qui consomme une configuration Container Linux et génère un fichier JSON pouvant être transmis à une machine Container Linux lors de son premier démarrage afin de configurer une nouvelle machine. Cette configuration permet à une machine de créer des utilisateurs, de formater le Système de fichiers racine, configurer le réseau, installer les unités systemd, etc.

Les configurations de Container Linux sont des fichiers YAML conformes au schéma ct.

À titre d’exemple simple, utilisons ct pour définir la clé SSH autorisée pour l’utilisateur principal sur une machine Container Linux.

passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc...

Dans ce fichier ci-dessus, la ligne ssh-rsa AAAAB3NzaC1yc ... contient notre propre clé publique ssh (qui est probablement le contenu de ~ /.ssh/id_rsa.pub).

Lorsqu'on donne ce fichier et le donnons à ct:

$ ./bin/ct --in-file example.yaml
{"ignition":{"version":"2.0.0","config":{}},"storage":{},"systemd":{},"networkd":{},"passwd":{"users":[{"name":"core","sshAuthorizedKeys":["ssh-rsa AAAAB3NzaC1yc..."]}]}}

On peut voir qu'il produit un fichier JSON, qui va certainement être pénible à lire/éditer (surtout quand on a des éléments multilignes comme des unités systemd). Il suffit simplement de fournir ce fichier à une machine Container Linux, l'utilitaire à l'intérieur de Container Linux qui reçoit ce fichier, saura quoi faire avec ce fichier.

La méthode selon laquelle ce fichier est fourni à une machine Linux conteneur dépend de l'environnement dans lequel la machine s'exécute: