web-dev-qa-db-fra.com

Provisionnez manuellement un conteneur LXC existant dans Juju-local

Est-il possible de provisionner manuellement un contrôleur LXC existant dans juju (1.24)?

J'ai essayé de suivre (Ubuntu-trusty):

  1. Installation juju locale
  2. Créez un conteneur lxc, installez les packages systemd-services et dbus-x11 dans le convertisseur
  3. Provisionner manuellement le conteneur via Ssh (juju add-machine ssh: utilisateur @ conteneur-ip)
  4. Supprimez la ligne suivante de agent.conf dans le conteneur ("- localhost: 17070") et redémarrez jujud dans le conteneur. C'était nécessaire, ou juju-agent dans le conteneur restera en attente.
  5. Déployer mysql sur le continent en utilisant --to juju switch

Le déploiement de charme MysqL commence, prend un long moment, puis "installation du crochet" échoue.

Effectuer la mise à disposition manuelle à l'aide d'une machine KVM fonctionne (même si je dois quand même effectuer l'étape 4, sinon l'état de l'agent restera en attente).

Je fais une installation en cluster de MySQL et je veux utiliser LXC (au lieu de KVM) sur plusieurs machines physiques, LXC étant relativement léger.

Merci pour toutes les astuces.

2
jasghar

J'ai imaginé moi-même une solution:

Après avoir démarré un environnement local juju frais, ajoutez une machine à l'environnement:

juju add-machine

Cela doit créer la machine-1. Une fois que la machine-1 est prête (vérifiez par le biais de juju status), un modèle de juju aurait été créé avec le même nom que juju-trusty-lxc-template.

Vous pouvez maintenant créer des clones de ce modèle pour créer autant de conteneurs lxc que vous voulez et les ajouter manuellement à l'environnement juju (ceci peut également être créé sur une machine distante) via ssh.

Sudo lxc-clone juju-trusty-lxc-template -n lxc-001
Sudo lxc-clone juju-trusty-lxc-template -n lxc-002

Démarrer les conteneurs

Sudo lxc-start -d -n lxc-001
Sudo lxc-start -d -n lxc-002

puis ajoutez les conteneurs à juju à travers ssh

juju add-machine ssh:lxc-001 #this shall create machine-2
juju add-machine ssh:lxc-002 #this shall create machine-3

Une fois que juju a fini d'installer les agents sur la machine, vous devez supprimer la référence à localhost: 170702 dans fichier agent.conf à l'intérieur des conteneurs et redémarrer jujud à l'intérieur des contenants. Vous pouvez le faire rapidement à travers:

juju run --machine 2 'Sudo sed -i "s/\- localhost:17070//" /var/lib/juju/agents/machine-*/agent.conf && Sudo pkill jujud -hup'
juju run --machine 3 'Sudo sed -i "s/\- localhost:17070//" /var/lib/juju/agents/machine-*/agent.conf && Sudo pkill jujud -hup'

Vérifiez par le biais de juju status si les agents sont dans l'état démarré et que vous avez terminé, prêt à déployer un service sur ces ordinateurs.

J'espère que cela t'aides.

Remarque: Dans la configuration par défaut de juju, les conteneurs lxc obtiendront l'adresse DHCP du pont créé à partir de juju. Ces adresses ne sont pas accessibles sur le réseau local. Vous voudrez peut-être créer un pont personnalisé et laisser juju l'utiliser (changez network-bridge: your-lan-br0 dans ~/.juju/environnements.yaml avant de démarrer le processus). Cela est également nécessaire si vous ajoutez un conteneur à partir d'une autre machine physique. Vous voudrez peut-être aussi configurer des adresses statiques pour lxc-containers (dnsmasq).

3
jasghar