Skip to content

Installation_de_MAAS_et_JUJU

DOSSANTOSDaniel edited this page Jul 9, 2020 · 1 revision

Installation de MAAS et JUJU

Informations systéme et réseau

+-------|Proxmox|--------------+
|                              |
| |VM MAAS(JUJU client)|>......|......
|                          .   |     .
| |VM PostgreSQL|>..........   |     .
|                              |     .
+------------------------------+     .
                                     .
+---|KVM Hyperviseur|----+           .
|                        |           .
| |VM JUJU controller|>..|............
|                        |           .
| |VM Xn|>...............|............
+------------------------+
Machine IP Version
Proxmox 192.168.0.21-23 6.2-8
KVM 192.168.0.24 4.2.0-7
MAAS 192.168.0.100 2.8
PostgreSQL 192.168.0.103 12.2

Préparation des machines virtuelles

Exemple donnée pour la configuration de la VM MAAS.

Configuration du fichier hosts

sudo vim /etc/hosts

127.0.0.1 maas.tpdaniel.fr maas
127.0.1.1 maas
192.168.0.100 maas.tpdaniel.fr maas
192.168.0.102 postgresql.tpdaniel.fr postgresql

Configuration du fichier hostname

sudo vim /etc/hostname

maas

Configuration du réseau

sudo netplan generate

sudo vim /etc/netplan/00-installer-config.yaml

# This is the network config written by 'subiquity'
network:
  ethernets:
    ens18:
      addresses: [192.168.0.100/24]
      gateway4: 192.168.0.1
      nameservers:
        search: [maas.tpdaniel.fr]
        addresses: [8.8.8.8, 8.8.4.4, 1.1.1.1]
      dhcp4: false
      dhcp6: false
  version: 2

sudo netplan apply && sudo systemctl restart systemd-networkd && sudo reboot

Échanger les clés SSH entre les différentes machines

ssh-keygen

ssh-copy-id daniel@192.168.0.102

Installation de PostgreSQL

sudo apt update -y
sudo apt install -y postgresql

Utilisateur de la base de données : MAAS_DBUSER='daniel'

Mot de passe de l'utilisateur de la base de donnée : MAAS_DBPASS='digital'

Création de l'utilisateur de la base de donnée

sudo -u postgres psql -c "CREATE USER "$MAAS_DBUSER" WITH ENCRYPTED PASSWORD '$MAAS_DBPASS'"

Création de la base de donnée pour MAAS

Nom désiré pour la base de donnée pour MAAS : MAAS_DBNAME='maas'

Création de la base de donnée

sudo -u postgres createdb -O "$MAAS_DBUSER" "$MAAS_DBNAME"

Éditer le fichier pg_hba.conf, ajoutez la ligne suivante pour la base de données.

sudo vim /etc/postgresql/12/main/pg_hba.conf

host    maas    daniel    0.0.0.0/0    md5

Vous pouvez limiter l'accès à un réseau spécifique en utilisant un CIDR différent de 0.0.0.0/0.

Pour une installation en production on a besoin d'installer PostgreSQL sur une machine à part il faut donc configurer PostegreSQL pour que à partir de MAAS on puise accéder au serveur PostgreSQL à distance, car par défaut PostgreSQL n'écoute que sur localhost et refuse les connexions distantes.

Configuration de PostgreSQL pour un accès distant

Nous avons besoin de changer les fichiers suivant :

  1. postgresql.conf
  2. pg_hba.conf

Activer les connections distantes, pour pouvoir écouter sur tous les IP

sudo vim /etc/postgresql/12/main/postgresql.conf

Décommenter et ajouter un *

avant :
#listen_addresses = 'localhost'

après :
listen_addresses = '*'

sudo service postgresql restart

Installation de MAAS

Installation de la version 2.8 de MAAS sur une nouvelle machine

sudo snap install maas

On va vérifier la connexion entre MAAS et la base de donnée PostgreSQL.

Pour commencer on installe le client PostgreSQL sur MAAS pour tester la connexion.

Attention on doit installer la version exacte du client par rapport au serveur.

Si notre serveur "PostgreSQL 12" alors le client c'est "postgresql-client-12".

sudo apt install postgresql-client-12

Connexion à la base de donnée "maas"

psql --host='postgresql.tpdaniel.fr' --username='daniel' --password maas

Option Description
--host Nom de domaine du serveur PostgreSQL
--username Nom de l'utilisateur de la Base de donnée maas
--password Permet de forcer la demande du mot de passe
maas C'est le nom de la base de donnée pour MAAS

Maintenant que la connexion à la base de donnée MAAS fonctionne, on peut initialiser MAAS.

Initialisation de MAAS

sudo maas init region+rack --database-uri "postgres://daniel:digital@192.168.0.102/maas"

vérification du status des services MAAS

sudo maas status

Normalement tout doit être running sauf :

  • dhcpd
  • dhcpd6

Création des identifiants pour la connexion sur l'interface web de MAAS

sudo maas createadmin

Maintenant on peut se connecter sur l'interface web de MAAS

Exemple : http://192.168.0.100:5240/MAAS

Pour afficher les informations de connections

sudo maas config

Ajouter la clé publique SSH de MAAS

On copie la clé puis on la colle là ou c'est demandée

cat .ssh/id\_rsa.pub

MAAS_SSH_Key

Appuyer sur "go to dashboard"

Ici on va indiquer le nom de la région et le DNS.

MAAS_region_DNS

Appuyer sur "continue"

Sélectionner les images de Ubuntu 18.04 et 20.04.

MAAS_Images

Configuration des plages IP

Appuyer sur l'onglet "subnets"

MAAS_range

La partie range désigne la plage d'adresses IP pour le "commissioning".

Range dynamic désigne la plage d'adresses IP attribuées aux machines déployées par MAAS.

Appuyer sur "Enable DHCP" pour activer le DHCP de MAAS.

Configuration du système d'exploitation a lancer pendant le "commissionning" et le déploiement

MAAS_commi

Installation de JUJU

sudo snap install juju --classic

Attention JUJU s'installe qu'en mode "--classic"

Les SNAPS utilisent des modes différents de confinement pour les applications.

Modes de confinement :

Confinement Description
Strict C'est le mode utilisé par défaut,
il permet un isolement total entre l'application et la machine hôte.
Classic Permet à l'application d'accéder au ressources du système hôte,
comme une application traditionnelle.
Devmade C'est un mode spécial pour les développeurs.

Création d'un cloud

juju add-cloud --local

Choisir le type : maas

Select cloud type: maas

Enter a name for your maas cloud: maaslab

Enter the API endpoint url: http://192.168.0.100:5240/MAAS

Création des certificats

juju add-credential maaslab

Enter credential name: maaslab

Regions
default

Select region [any region, credential is not region specific]: any

Enter maas-oauth:

Credential "maaslab" added locally for cloud "maaslab".

Au moment où il y a la demande "Enter maas-oauth:" on va sur l'interface web de MAAS, pour récupérer la clé de l'API.

Création du controller

juju bootstrap --bootstrap-constraints mem=1G

Pour que le controller soit créé avec une machines disponible qui a 1GO de mémoire RAM.

Les "constraints" permettent de cibler une machine en particulier selon certains critères, ici le critére est 1GO de mémoire RAM.

La création du controller s'initialise.

JUJU_controller

Activation de l'interface web de JUJU

juju gui

Dashboard 0.1.8 for controller "maaslab-default" is enabled at:
https://192.168.0.13:17070/dashboard
Your login credential is:
username: admin
password: b351559f52f1e2057ff3dabc498c6fa7

Voici le dashboard.

JUJU_dash

Déployer des services avec JUJU

Type Description
Charm C'est une collection de fichiers YAML,
ces fichiers permettent la configuration d'une application.
Bundle C'est la combinaison de plusieurs charms pour créer un service.

Le concept de "models" sur JUJU est aussi appelé "Bundles" en ligne de commande.

Installation de charm

sudo snap install charm --classic

logo

Clone this wiki locally