hamburger_software.vmware_ubuntu_cloud_image
vmware_ubuntu_cloud_image
Rôle Ansible pour créer des machines virtuelles basées sur les Images Cloud Ubuntu dans un environnement vSphere.
Images Cloud Ubuntu
Ubuntu propose des images préinstallées pour une utilisation dans les clouds. L'un des formats d'image disponibles est Open Virtualization Appliance (OVA) qui peut être importé dans VMware. Les images utilisent le mécanisme cloud-init pour permettre une configuration très basique. Malheureusement, il n'y a pas de support pour l'utilisation d'adresses IP statiques et pour ajuster le matériel lors de la création de la machine.
Ce rôle ajoute le support pour ces fonctionnalités.
Fonctionnalités
- Crée une machine virtuelle (VM) à partir d'un fichier OVA téléchargé au préalable.
- Définit le nom d'hôte.
- Ajoute une ou plusieurs clés publiques ssh et/ou un mot de passe pour l'utilisateur par défaut "ubuntu" afin qu'Ansible puisse se connecter à la nouvelle machine.
- Ajuste en option le matériel, par exemple le nombre de CPU ou la mémoire, voir vmware_guest pour les personnalisation possibles.
- Définit en option des notes pour la VM (annotations), des paramètres de fichier de configuration et/ou des attributs personnalisés pour la VM.
- La taille du disque peut être augmentée (par défaut 10 Go), des disques supplémentaires peuvent être créés et ajoutés.
- Change en option l'adresse IP dynamique en une adresse statique (prenant soit dans le playbook, soit à partir de DNS).
- La VM est allumée et peut être utilisée dans le même playbook qui a invoqué ce rôle.
- Plusieurs VMs peuvent être créées en parallèle.
- Testé avec les Images Cloud Ubuntu 21.04, 20.10, 20.04, 19.10, 19.04, 18.10, 18.04 et 17.10.
Les versions plus anciennes ne fonctionnent pas car elles n'utilisent pas
netplan
pour la configuration réseau.
Exigences
Pour utiliser ce rôle, vous avez besoin de :
- Un environnement vSphere où la VM sera déployée.
- Des identifiants pour le serveur vCenter de cet environnement avec les autorisations appropriées, voir ci-dessous.
- Un fichier OVA, par exemple ubuntu-18.04-server-cloudimg-amd64.ova sur la machine de contrôle.
Si vous voulez récupérer les adresses IP de la VM à partir de DNS, vous devez également :
- Installer dnspython (bibliothèque python, http://www.dnspython.org/) sur la machine de contrôle.
- Utiliser des noms de domaine pleinement qualifiés (FQDN, par exemple host.example.org) dans l’inventaire. Le FQDN sera également utilisé comme nom de la VM.
- Ajouter des enregistrements A pour chaque VM que vous souhaitez créer.
La version minimale d'Ansible est 2.10.7. La version minimale de la collection community.vmware est 1.8.0, qui fait partie du package Ansible community 3.2.0.
Permissions vSphere
Les autorisations minimales pour créer une VM avec ce rôle sont :
DataStore > Allouer de l'espace
Network > Attribuer un réseau
Resource > Assigner la Machine Virtuelle à un Pool de Ressources
vApp > Importer
Machine Virtuelle > Interaction > Allumer
Machine Virtuelle > Configuration > Ajouter un nouveau disque
Pour ajuster les paramètres du CPU et de la mémoire, vous avez besoin de
Machine Virtuelle > Configuration > Changer le nombre de CPUs
Machine Virtuelle > Configuration > Mémoire
Pour ajuster la taille du disque, vous avez besoin de
Machine Virtuelle > Configuration > Étendre le disque virtuel
Des options de configuration avancées peuvent nécessiter des privilèges supplémentaires.
Variables de rôle
Connexion vCenter
- L'URL du serveur vCenter est définie avec
vcenter_hostname
ou la variable d'environnementVMWARE_HOST
. - L'utilisateur vCenter est défini avec
vcenter_username
ou la variable d'environnementVMWARE_USER
. - Le mot de passe vCenter est défini avec
vcenter_password
ou la variable d'environnementVMWARE_PASSWORD
. - La validation des certificats peut être désactivée en définissant
vcenter_validate_certs=no
ou en définissant la variable d'environnementVMWARE_VALIDATE_CERTS
àno
.
Paramètres VMware
- Le fichier OVA sur la machine de contrôle est spécifié avec
ova_file
. - La VM est créée dans le datacenter
vmware_datacenter
sur le datastorevmware_datastore
. - La VM peut être placée dans un dossier en spécifiant
vmware_folder
et dans un pool de ressources en spécifiantvmware_resource_pool
. - Le nom de la VM est par défaut
inventory_hostname
. Il peut être changé avecvm_guestname
.
Paramètres de la VM
- Le nom d'hôte de la machine est par défaut
inventory_hostname_short
. Il peut être changé avecvm_hostname
. - Utilisez
ssh_keys
pour définir une liste de clés publiques qui seront ajoutées au fichier authorized_keys de l'utilisateur "ubuntu". Au moins l'un desssh_keys
etpassword
doit être spécifié pour qu'Ansible puisse se connecter à la nouvelle machine. - Utilisez
password
pour définir un mot de passe pour l'utilisateur "ubuntu". Au moins l'un desssh_keys
etpassword
doit être spécifié pour qu'Ansible puisse se connecter à la nouvelle machine. - Le matériel peut être spécifié avec
hardware
, contenant un dictionnaire comme spécifié dans vmware_guest. - La taille du disque peut être ajustée avec
disk
. Ce paramètre accepte une liste de spécifications de disque conformément à vmware_guest_disk. Le premier disque correspond au disque virtuel importé. Sa taille ne peut être qu'augmentée. Voir le playbook d'exemple ci-dessous pour usage. - Les mappages de réseau définis par l'utilisateur peuvent être spécifiés avec
networks
, voir vmware_deploy_ovf pour la sémantique. - Les notes de la VM peuvent être définies avec
annotation
.
Pour utiliser cette fonctionnalité, la permission VMwareMachine Virtuelle > Configuration > Définir l'annotation
est requise. - Pour définir des paramètres de fichier de configuration de la VM, fournissez
advanced_settings
avec une liste de dictionnaires comme montré dans le playbook d'exemple. - Pour définir des attributs personnalisés de la VM, fournissez
customvalues
avec une liste de dictionnaires comme montré dans le playbook d'exemple. Notez que de nouvelles valeurs personnalisées ne seront pas créées, elles doivent exister dans vCenter avant le déploiement.
Pour utiliser une adresse IP statique, utilisez les clés suivantes dans le dictionnaire static_ip
:
ipv4
- une adresse IPv4 spécifique que vous souhaitez attribuer. Par défaut, il s'agit de l'adresse IPv4 trouvée dans DNS pour le FQDN.netmask
- le masque de sous-réseau en notation CIDR, par défaut8
.gateway
- la passerelle par défaut (requise)dns_servers
- une liste des adresses IP des serveurs DNS, par défaut les serveurs DNS publics de Google.dns_search
- une liste de noms de domaine qui devraient être utilisés comme suffixes de recherche DNS. Utilisez cela pour placer votre VM dans un domaine.
Paramètres d'inventaire
Comme les VMs n'existent pas encore, la clé du serveur ssh est inconnue. Pour se connecter aux nouvelles VMs, vous devez désactiver la vérification de la clé hôte ssh. Si vous prévoyez de recréer fréquemment des VMs avec les mêmes FQDN, ssh ne devrait pas stocker les empreintes dans le fichier known_hosts.
Par conséquent, les variables d'hôte/groupe recommandées sont :
ansible_user=ubuntu
ansible_ssh_extra_args=-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
Dépendances
Ce rôle ne dépend pas d'autres rôles.
Exemple de Playbook
playbook :
- name: Déployer une Appliance Virtuelle Image Cloud Ubuntu
hosts: cloudimg
gather_facts: no
roles:
- role: hamburger_software.vmware_ubuntu_cloud_image
vars:
vcenter_hostname: vcenter.votre.domaine
vcenter_username: [email protected]
vcenter_password: verysecret
vcenter_validate_certs: no
vmware_datacenter: votre-datacenter
vmware_datastore: votre-datastore
vmware_folder: votre-datacenter/vm/un-dossier
ova_file: ubuntu-20.04-server-cloudimg-amd64.ova
hardware:
num_cpus: 4
memory_mb: 2048
annotation: 'exemple de VM basée sur une Image Cloud Ubuntu'
# ceci évite les messages syslog excessifs de multipathd sous Ubuntu 20.04
advanced_settings:
- key: disk.EnableUUID
value: 'TRUE'
customvalues:
- key: 'votrecle'
value: 'votrevaleur'
disk:
- size_gb: 20
datastore: votre-datastore
scsi_controller: 0
unit_number: 0
- size_mb: 250
datastore: votre-datastore
scsi_controller: 0
unit_number: 1
type: thin
static_ip:
netmask: 16
gateway: 10.0.42.1
dns_servers: [10.0.47.11, 10.0.48.12]
dns_search:
- votre.domaine
ssh_keys:
- ssh-rsa AAAAB3Nz[...]== nom-de-la-cle
password: passw0rd
inventaire avec 5 hôtes :
[cloudimg]
vm-[1:5].votre.domaine
[cloudimg:vars]
ansible_user=ubuntu
ansible_password=passw0rd
ansible_ssh_extra_args=-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
Licence
MIT
Informations sur l'auteur
Ce rôle a été créé par Harald Albers chez HS - Hamburger Software GmbH & Co. KG.
Creates virtual machines based on Ubuntu Cloud Images in a vSphere environment.
ansible-galaxy install hamburger_software.vmware_ubuntu_cloud_image