Plus précisément, avec les outils CLI - pas openstack.
Je regarde à quoi pourrait ressembler une configuration de développement local avec lxd, mais je me retrouve les mains vides quand il s'agit de configurer de nouveaux conteneurs.
Existe-t-il des moyens idiomatiques (ou autres) de configurer les conteneurs lxd? Dois-je regarder quelque chose de plus immuable comme les images de docker?
Merci. Toutes les ressources ou pointeurs seraient appréciés.
Un liner avec lequel je suis allé aujourd'hui, celui-ci le place dans le profil par défaut pour les nouveaux conteneurs:
echo -e "#cloud-config\nssh_authorized_keys:\n - $(cat ~/.ssh/id_rsa.pub)" | lxc profile set default user.user-data -
Celui-ci le place dans un conteneur existant, mais attention, il ne fonctionnera pas sur les conteneurs qui ont déjà démarré car le truc de clé SSH ne se fait qu'au premier démarrage:
echo -e "#cloud-config\nssh_authorized_keys:\n - $(cat ~/.ssh/id_rsa.pub)" | lxc config set CONTAINER_NAME user.user-data -
la source
J'avais une question un peu plus précise que l'OP, mais il m'a fallu un certain temps pour comprendre ce que je faisais mal. Je pensais que je le posterais ici pour aider quelqu'un d'autre à être pareillement perplexe.
Je voulais des paramètres de mise en réseau statique pour un conteneur LXC / LXD Ubuntu 16.04 hébergé sur Ubuntu 16.04. J'ai commencé par essayer ce que Stéphane a écrit mais ça n'a pas marché. Tout ce que je me suis retrouvé était le conteneur par défaut de tentative de DHCP avec une liaison IPv6 locale, car aucun DHCP n'est servi dans ma configuration.
Mon YAML initial ressemblait (quelque chose) au suivant (tiré des documents cloud-init ).
Et je chargeais cela
user.user-data
comme décrit ci-dessus.Ce n'est que lorsque j'ai trouvé la documentation de Stéphane dans la source LXC / LXD que j'ai réalisé que je devais charger cette valeur
user.network-config
.Donc mon YAML final ressemblait à quelque chose comme ça.
Ensuite, je l'ai chargé à la
user.network-config
place.Il semble que j'aurai besoin de conserver deux fichiers différents par conteneur: un pour les paramètres réseau à charger
user.network-config
; et un pour d'autres config à charger,user.user-data
sauf si je peux trouver un moyen d'utiliser un seul fichier pour tout.Un autre problème que j'ai trouvé et qui n'était pas du tout évident pour moi était d'essayer de configurer automatiquement les composants non réseau.
Le YAML suivant appliqué avec la commande ci-dessus (malgré son apparence correcte
lxc config show CONTAINER
) n'a rien créé à l'intérieur de mon conteneur.L'indice enfoui dans les formats de saisie de données utilisateur, élément 5: Cloud Config Data se lit comme suit:
Je ne pense pas que cette documentation soit très claire. Je n'ai rien pu faire fonctionner en utilisant le formulaire "Content-Type: text / cloud-config" mais j'ai trouvé que si vous mettez
#cloud-config
sur la première ligne, le YAML est analysé. Je peux seulement supposer que quelque chose ne va pas, que ce soit ma compréhension ou la programmation de quelqu'un. Cela n'a aucun sens pour moi que YAML que vous avez explicitement chargé car la valeur de la cléuser.user-data
doit être utilisée comme autre chose que les données de configuration du cloud. Sinon, pourquoi quelqu'un ferait-il cela si ce n'était pas censé être une configuration cloud, et pourquoi un commentaire (qui n'utilise même pas la syntaxe shebang normale) serait-il nécessaire ?Donc, non-sens, la syntaxe qui a fonctionné
user.user-data
est:la source