Il est possible d'ajouter un fournisseur LXD distant dans la nouvelle version de Juju (2.0-rc3-xenial-AMD64)?
Ce que j'ai essayé jusqu'à maintenant:
(Cela fonctionne si j'utilise juju deploy mysql --to lxd:<Machine's ID>
mais je ne peux pas déployer de bundles)
activer https à distance et configurer un mot de passe
lxc remote add <name> <provider's IP address>
lxc remote set-default <name>
(lxc launch
fonctionne très bien, mais Juju utilise toujours le fournisseur local)
clouds: mylxd: type: lxd auth-types: [access-key, userpass] regions: deployment: endpoint: https://<Remote IP Address>:8443/1.0
(mais je ne peux pas bootstrap avec cette configuration de cloud particulière)
Pouvez-vous m'aider s'il vous plaît? Merci!
Ceci est possible en utilisant juju> = 2.1
SSH sur le serveur distant (192.168.10.2, par exemple) et configurez lxd pour accepter les connexions entrantes et définir un mot de passe.
(192.168.10.2)$ lxc config set core.https_address "[::]"
(192.168.10.2)$ lxc config set core.trust_password some-secret-string
Maintenant, dans la machine où les commandes juju seront exécutées (client A.K.A. juju), ajoutez le démon lxd distant, ceci est fait pour obtenir facilement le certificat du serveur.
(juju-client)$ lxc remote add 192.168.10.2 \
--accept-certificate \
--password=some-secret-string
Créez un fichier de configuration yaml qui sera utilisé par juju pour ajouter le cloud, voici à quoi cela devrait ressembler.
# file: some-remote.yaml
clouds:
some-remote:
type: lxd
auth-types: [interactive, certificate]
regions:
some-remote:
endpoint: 192.168.10.2
Ajoutez la définition du nuage à juju:
(juju-client)$ juju add-cloud some-remote some-remote.yaml
Créez le fichier credentials.yaml:
# file: credentials.yaml
some-remote:
some-remote:
auth-type: certificate
client-cert: |
-----BEGIN CERTIFICATE-----
...
INSERT THE CONTENT OF ~/.config/lxc/client.crt
...
-----END CERTIFICATE-----
client-key: |
-----BEGIN RSA PRIVATE KEY-----
...
INSERT THE CONTENT OF ~/.config/lxc/client.key
...
-----END RSA PRIVATE KEY-----
server-cert: |
-----BEGIN CERTIFICATE-----
...
INSERT THE CONTENT OF ~/.config/lxc/client.crt
...
-----END CERTIFICATE-----
Ajoutez les informations d'identification à juju:
(juju-client)$ juju add-credential some-remote -f credentials.yaml
Vérifiez que le nuage a été ajouté correctement:
(juju-client)$ juju clouds
Cloud Regions Default Type Description
[...]
localhost 1 localhost lxd LXD Container Hypervisor
some-remote 1 some-remote lxd LXD Container Hypervisor
[...]
Démarrer un nouveau contrôleur à l'aide du fournisseur de cloud ajouté
(juju-client)$ juju bootstrap some-remote
Une fois que le bootstrap est terminé, vérifiez que le contrôleur a été correctement lancé dans le démon lxd distant:
(juju-client)$ lxc list 192.168.10.2:
+---------------+---------+--------------------------------+------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+---------------+---------+--------------------------------+------+------------+-----------+
| juju-ec8b3d-0 | RUNNING | 192.168.10.42 (eth0) | | PERSISTENT | 0 |
+---------------+---------+--------------------------------+------+------------+-----------+
(juju-client)$ juju status -m controller
Model Controller Cloud/Region Version
controller snowspeeder snowspeeder/snowspeeder 2.1.2
App Version Status Scale Charm Store Rev OS Notes
Unit Workload Agent Machine Public address Ports Message
Machine State DNS Inst id Series AZ Message
0 started 192.168.10.42 juju-ec8b3d-0 xenial Running
Source: http://tty.cl/add-remote-lxd-server-as-a-cloud-in-juju-2x.html
disclaimer: je suis l'auteur de l'article cité en référence
Le fournisseur lxd fourni avec Juju 2.0 créera uniquement des conteneurs sur la machine hôte.
L’équipe a discuté de l’utilisation de machines lxd distantes, mais pour l’instant, le fournisseur lxd est un outil de développement et ne crée que des conteneurs sur l’hôte.