Ce jeu de tâches est chargé de provisionner une machine virtuelle sur Cloudstack ou un hyperviseur ESXi.

Usage

L’argument -K doit être passée impérativement afin de demander le mot de passe sudo local.

Rôles utilisés

  • Source Images : Nécessaire pour générer l’image ISO d’installation automatisée
  • Source Images Cloudstack : Nécessaire pour mettre à disposition l’ISO d’installation automatisée
  • Domain : Nécessaire pour mettre en place les enregistrements DNS ciblant la machine si applicable
  • Reverse : Nécessaire pour mettre en place les associations DNS inverse si applicable

Variables à fournir pour Cloudstack

Variable Type Requis Défaut Description
cs_endpoint Adresse Oui Point de terminaison de l’API de l’instance CloudStack
cs_apikey Chaîne protégée Oui Clé de l’API de l’instance CloudStack
cs_apisecret Chaîne protégée Oui Secret de l’API de l’instance CloudStack
network_cidr Adresse IPv4+CIDR Non Absent Réseau local du NAT
network_egress Liste d’objets network_egress Non Liste vide Règles globales de sortie de réseau avancé à mettre en place
network_ingress Liste d’objets network_ingress Non Liste vide Règles globales d’entrée de réseau avancé à mettre en place
cs_instance Object instance-cs Oui Configuration de la machine virtuelle
update_instance Booléen Non Faux Indication à utiliser lors de l’exécution pour forcer la mise à jour de la configuration de la machine

Type instance-cs

Propriété Type Requis Défaut Description
name Chaîne Oui Nom de la machine
hypervisor Identifiant Oui Hyperviseur à utiliser
disk Objets disk-cs Oui Configuration du disque de démarrage
iso Identifiant Oui Nom du fichier ISO pour l’installation
keyboard Langue Oui Langue du clavier (us)
service Identifiant Oui Ressources à allouer à la machine
network Identifiant Non Absent Réseau avancé à utiliser pour connecter la machine
zone Identifiant Oui Zone d’hébergement de la machine
domains Liste d’objets domain Non Liste vide Informations de domaines à mettre en place
static_nat Adresse IP Non Absent Adresse IP sur laquelle activer le NAT statique
firewall Liste d’objets firewall Non Liste vide Règles spécifiques d’entrée du réseau avancé lié à mettre en place
forwarding Liste d’objets forwarding Non Liste vide Règles de redirection de ports du réseau avancé lié à mettre en place, ignoré si NAT statique
egress Liste d’objets access_rule Non Liste vide Règles de sortie du réseau basique à mettre en place
ingress Liste d’objets access_rule Non Liste vide Règles d’entrée du réseau basique à mettre en place

Attention : Le fichier ISO, la machine virtuelle et le réseau doivent être dans la même zone.

Remarque : Lorsque le réseau n’est pas spécifié, une zone de routage basique est attendue.

Remarque 2 : Lorsque le routage basique est utilisé, un groupe de sécurité est créé pour la machine virtuelle.

Type disk-cs

Propriété Type Requis Défaut Description
offering Identifiant Oui Type de disque
size Entier Oui Taille du disque en Go

Type domain

Voir le rôle Domain.

Type base_rule

Propriété Type Requis Défaut Description
protocol Identifiant Non Absent Protocole (tcp, udp, icmp)
icmp_code Entier Non Absent Code ICMP si protocol == icmp
icmp_type Entier Non Absent Type ICMP si protocol == icmp
start_port Entier Si end_port Absent Port TCP ou UDP de début
end_port Entier Non Absent Port TCP ou UDP de fin
remove Booléen Non Faux Indication de retrait de la règle

Type network_egress

Hérite de base_rule.

Propriété Type Requis Défaut Description
network Identifiant Oui Identifiant du réseau associé
source Adresse IP+CIDR Non network_cidr si défini sinon 0.0.0.0/0 Adresse IP du pair local
zone Identifiant Oui Zone d’hébergement du réseau

Type network_ingress

Hérite de base_rule.

Propriété Type Requis Défaut Description
ip_address Adresse IP+CIDR Oui Adresse IP externe du pair local
source Adresse IP+CIDR Non 0.0.0.0/0 Adresse IP du pair distant
zone Identifiant Oui Zone d’hébergement du réseau

Type firewall

Hérite de base_rule.

Propriété Type Requis Défaut Description
ip_address Adresse IP+CIDR Oui Adresse IP externe du pair local
source Adresse IP+CIDR Non 0.0.0.0/0 Adresse IP du pair distant

Type forwarding

Propriété Type Requis Défaut Description
protocol Identifiant Non Absent Protocole (tcp, udp, icmp)
ip_address Adresse IP+CIDR Oui Adresse IP externe du pair local
public_port Entier Si public_end_port Absent Port TCP ou UDP externe de début
private_port Entier Si private_end_port Absent Port TCP ou UDP interne de début
public_end_port Entier Non Absent Port TCP ou UDP externe de fin
private_end_port Entier Non Absent Port TCP ou UDP interne de fin
remove Booléen Non Faux Indication de retrait de la règle

Type access_rule

Hérite de base_rule.

Propriété Type Requis Défaut Description
source Adresse IP+CIDR Non 0.0.0.0/0 Adresse IP du pair distant

Variables à fournir pour ESXi

Variable Type Requis Défaut Description
vsphere_endpoint FQDN Oui Adresse du serveur ESXi
vsphere_username Identifiant Oui Nom de l’utilisateur ayant les permission requise pour créer les ressources
vsphere_password Chaîne Oui Mot de passe de l’utilisateur
vsphere_instance object instance-esxi Oui Description de l’instance à créer

Type instance-esxi

Propriété Type Requis Défaut Description
datastore Identifiant Oui Identifiant du datastore pour la configuration
name Chaîne Oui Nom de la machine virtuelle
pool Chemin Oui Chemin du pool de ressources
power_on Booléen Oui Indique si la machine doit être démarrée à la création
datacenter Identifiant Oui Identifiant du datacenter
esxi_host Adresse Oui Nom d’hôte du serveur de virtualisation
disk Dictionnaire d’objets disk-esxi Oui Liste nommée des disques à créer
network Dictionnaire d’objets network Oui Liste nommée des interfaces réseau
memory Entier Oui Taille de la mémoire en Mo
cpu Entier Oui Nombre de cœur de processeur
os Identifiant Oui Identifiant du type de système d’exploitation
scsi Identifiant Oui Identifiant du pilote SCSI (paravirtual)
firmware Identifiant Oui Type de démarrage (efi ou bios)
iso Chemin datastore Oui Chemin dans les datastore du fichier ISO pour l’installation
domains Liste d’objets domain Non Liste vide Informations de domaines à mettre en place
reverses Liste d’objets reverse Non Liste vide Informations de résolutions inverses à mettre en place

Type disk-esxi

Propriété Type Requis Défaut Description
datastore Identifiant Oui Identifiant du datastore pour le disque
size_gb Entier Oui Taille du disque
type Identifiant Oui Type de provisionnement du disque (thin, thick)

Type network

Propriété Type Requis Défaut Description
type Identifiant Oui Pilote de la carte réseau (vmxnet3)
network Chaîne Oui Nom du réseau à connecter
network_type Identifiant Oui Type du réseau (standard)
mac_address Adresse MAC Non Absent Adresse matériel manuelle

Type domain

Voir le rôle Domain.

Type reverse

Voir le rôle Reverse.

Variables à fournir pour ProxMox

Variable Type Requis Défaut Description
proxmox_endpoint FQDN Oui Adresse du cluster ProxMox (un des nœuds)
proxmox_username Identifiant Oui Nom de l’utilisateur ayant les permission requise pour créer les ressources
proxmox_password Chaîne Si pas proxmox_token_id Mot de passe de l’utilisateur
proxmox_token_id Chaîne Si pas proxmox_password Identifiant du jeton de l’utilisateur à utiliser
proxmox_token_secret Chaîne Si proxmox_token_id Secret du jeton de l’utilisateur à utiliser
proxmox_instance object instance-proxmox Oui Description de l’instance à créer

Type instance-proxmox

Propriété Type Requis Défaut Description
vmid Entier Oui Identifiant de l’instance à créer
type Choix lxc|kvm Oui Type d’instance à créer
node Identifiant Oui Nœud sur lequel créer l’instance
name Identifiant Oui Nom de l’instance
pool Chaîne Non Nom du pool de ressources à associer
cores Entier Oui Nombre de cœur de processeur
description Chaîne Non Description du conteneur
memory Entier Oui Taille de la mémoire en Mo
power_on Booléen Oui Indique si l’instance doit être démarrée à la création
domains Liste d’objets domain Non Liste vide Informations de domaines à mettre en place
reverses Liste d’objets reverse Non Liste vide Informations de résolutions inverses à mettre en place
tags Liste d’identifiants Non Liste vide Balises associées à l’instance
autostart Booléen Non Faux Indique le démarrage automatique avec le nœud
startup Entier Si autostart Ordre de démarrage automatique avec le nœud

Type = lxc

Pour les listes de valeurs disponibles : https://pve.proxmox.com/wiki/Linux_Container#pct_options.

Propriété Type Requis Défaut Description
ostype Liste de valeur documentation Non auto Type du système du conteneur
ostemplate Object lxc-template Oui Gabarit de conteneur à utiliser
swap Entier Non memory Taille du fichier d’échange
rootfs Objet disk-root Oui Paramètres du disque racine
networks Dictionnaire d’objets lxc-network Oui Liste nommée des interfaces réseau, les noms doivent être ‘net’ + num
features Dictionnaire de fonctionnalités Non Vide Fonctionnalités à configurer, voir documentation
unprivileged Booléen Non Vrai Indique si le conteneur n’est pas privilégié
searchdomain Nom de domaine Non Vide Domaine de recherche du conteneur
nameservers Liste d’IP séparées par des virgules Non Absent Configurer les serveurs DNS du conteneur, par défaut hérite du parent

TODO: Points de montage

Note : Les autorisations sur l’identifiant exacte doivent être définis avant. Chemin /vms/{vmid}.

Type = kvm

Pour les listes de valeurs disponibles : https://pve.proxmox.com/wiki/Qemu/KVM_Virtual_Machines#qm_configuration.

Propriété Type Requis Défaut Description
ostype Liste de valeur documentation Non auto Type du système du conteneur
efi Booléen Non Faux Activer le démarrage efi
efidisk Object efidisk Si efi Paramètres du disque efi
boot_order Liste de périphériques Non Ordre de démarrage sur les périphériques
machine Liste de valeur documentation Non ‘pc’ Type de matériel virtuel
cpu_type Liste de valeur documentation Non ‘host’ Type de processeur virtuel
networks Dictionnaire d’objets kvm-network Non Liste nommée des interfaces réseau, les noms doivent être ‘net’ + num
sata_disks Dictionnaire d’objets disk-sata Non Liste nommée des disques SATA, les noms doivent être ‘sata’ + num, max 6
scsi_disks Dictionnaire d’objets disk-scsi Non Liste nommée des disques SCSI, les noms doivent être ‘scsi’ + num, max 31
virtio_disks Dictionnaire d’objets disk-virtio Non Liste nommée des disques VIRTIO, les noms doivent être ‘virtio’ + num, max 16
scsihw Liste de valeur documentation Non ‘virtio-scsi-single’ Type de contrôleur SCSI
video Liste de valeur documentation Non ‘qxl’ Type de contrôleur vidéo

Type lxc-template

Propriété Type Requis Défaut Description
storage Identifiant Oui Identifiant du stockage contenant le gabarit
name Chemin Oui Nom du fichier contenant le gabarit

Type disk-root

Propriété Type Requis Défaut Description
storage Identifiant Oui Identifiant du stockage pour le disque
size_gb Entier Oui Taille du disque
options Dictionnaire d’option de rootfs Non Vide Options du disque, exemples ci-dessous

Exemples d’option :

  • acl=1
  • mountoptions=discard;noatime

Type efidisk

Propriété Type Requis Défaut Description
storage Identifiant Oui Identifiant du stockage pour le disque
efitype Choix ‘2m’|‘4m’ Oui Taille du disque
pre_enrolled_keys Booléen Si efitype == ‘4m’ Indique si les clés EFI doivent être intégrés par défaut, et active le démarrage sécurisé
format Liste de valeur documentation Non ‘raw’ Format du disque

Type disk-sata / disk-scsi / disk-virtio

Voir les options dans la documentation. Les options usuelles sont rappelées.

Propriété Type Requis Défaut Description
volume Référence de volume Non si cdrom Fichier du disque
cdrom Référence de cdrom Non si volume Fichier du cdrom
discard Choix ‘ignore’|‘on’ Non Prise en charge de discard / rtrim
media Calculé N/A Type de média automatiquement déterminé
format Liste de valeur documentation Non ‘raw’ Format du disque créé

La propriété media est définie à disk lorsque volume est défini, à cdrom lorsque cdrom est défini.

La propriété format n’est ajouté que si le disque est créé.

Référence de volume

Propriété Type Requis Défaut Description
storage Identifiant Oui Identifiant du stockage pour le disque
size Entier Si non path Taille du disque en Gio
path Chemin Si non size Nom ou chemin du disque existant

Référence de cdrom

Valeur “none” ou un objet avec les propriétés :

Propriété Type Requis Défaut Description
storage Identifiant Oui Identifiant du stockage pour le disque
image Chemin Oui Nom de l’image de CDROM

Type lxc-network

Voir les options dans la documentation. Les options usuelles sont rappelées.

Propriété Type Requis Défaut Description
name Interface (ethx) Oui Nom de l’interface dans le conteneur
ip IPv4/CIDR|‘dhcp’ Oui Adresse IPv4 de l’interface
gw IPv4 Non Passerelle par défaut
ip6 IPv6/CIDR|‘auto’|‘dhcp’ Non Adresse IPv6 de l’interface
gw6 IPv6 Non Passerelle par défaut v6
bridge Interface Oui Nom de l’interface réseau à connecter

Type kvm-network

Voir les options dans la documentation. Les options usuelles sont rappelées.

Propriété Type Requis Défaut Description
model Liste de valeur documentation Non virtio Modèle d’interface
bridge Interface Oui Nom de l’interface réseau à connecter

Type domain

Voir le rôle Domain.

Type reverse

Voir le rôle Reverse.