Installer les CLI openstack

sudo apt install python3-openstackclient python3-designateclient python3-osc-placement
Ubuntu propose par défaut les CLI pour la version Yoga d'Openstack. Il donc possible que la plateforme du département ne comprenne pas certains paramètres envoyés
sudo apt install software-properties-common
sudo add-apt-repository cloud-archive:xena
sudo apt install python3-openstackclient python3-designateclient python3-osc-placement
sudo dnf install python3-openstackclient python3-designateclient
Une fois les paquets installés, il est nécessaire de configurer la CLI pour indiquer comment communiquer avec la plateforme. Cette configuration est réalisée par un fichier "openrc.sh" qui configure des variables d'environnement dans votre shell.
Il est possible de réaliser cette étape une seule fois puis de modifier la variable OS_PROJECT_NAME par le projet qui vous intéresse. Mais le plus simple est d'avoir un seul fichier par projet.

Téléchargement du fichier

Pour télécharger le fichier vous devez vous authentifier sur Horizon . Puis vous rendre dans la section API Access sur la gauche.
Ensuite il vous suffit de cliquer sur Download Openstack RC File puis choisir Openstack RC File.
Pratique
Il est aussi possible d'utiliser un compte applicatif pour éviter de mettre votre mot de passe en mémoire. Comment créer un compte applicatif?
Il vous suffit ensuite de "sourcer" les variables dans le fichier:
cd le dossier ou vous avez téléchargé le fichier
source nomProjet-openrc.sh
Votre terminal vous demandera votre mot de passe. C'est normal, c'est pour l'authentification auprès de la plateforme! Par contre, ça implique que votre mot de passe sera stocké en mémoire (variable env). Si vous ne souhaitez pas stocker votre mot de passe en mémoire, vous pouvez retirer la ligne: "read -sr OS_PASSWORD_INPUT" de votre fichier "openrc.sh" ou unset OS_PASSWORD après utilisation des CLI. Par contre la CLI vous demandera à chaque commande de saisir votre mot de passe.

Quelques exemples

Lister mes VM

openstack server list

Obtenir l'adresse IP de toutes mes VM

openstack server list -f value -c Networks | egrep -on "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | awk -F: '{ if(!a[$1]) a[$1]=$2; else a[$1]=a[$1]" "$2}END{ for(i in a) print a[i]}'

Obtenir l'adresse IP et le nom de mes VM

openstack server list -f value -c Networks -c Name | egrep -no "(^[a-zA-Z0-9\-_]+)|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})" | awk -F: '{ if(!a[$1]) a[$1]=$2; else a[$1]=a[$1]" "$2}END{ for(i in a) print a[i]}'

Ajouter SSH a mon "groupe de sécurité par défaut"

# Fonctionne uniquement avec un seul security group dans le projet
SECURE_ID=$(openstack security group list -f value -c ID)
openstack security group rule create --protocol tcp --remote-ip 0.0.0.0/0 --dst-port 22 $SECURE_ID