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'environnement VMWARE_HOST.
  • L'utilisateur vCenter est défini avec vcenter_username ou la variable d'environnement VMWARE_USER.
  • Le mot de passe vCenter est défini avec vcenter_password ou la variable d'environnement VMWARE_PASSWORD.
  • La validation des certificats peut être désactivée en définissant vcenter_validate_certs=no ou en définissant la variable d'environnement VMWARE_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 datastore vmware_datastore.
  • La VM peut être placée dans un dossier en spécifiant vmware_folder et dans un pool de ressources en spécifiant vmware_resource_pool.
  • Le nom de la VM est par défaut inventory_hostname. Il peut être changé avec vm_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é avec vm_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 des ssh_keys et password 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 des ssh_keys et password 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 VMware Machine 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éfaut 8.
  • 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.

À propos du projet

Creates virtual machines based on Ubuntu Cloud Images in a vSphere environment.

Installer
ansible-galaxy install hamburger_software.vmware_ubuntu_cloud_image
Licence
mit
Téléchargements
732
Propriétaire
Product documentation and open source projects created at HS - Hamburger Software GmbH & Co. KG