hamburger_software.vmware_ubuntu_cloud_image
vmware_ubuntu_cloud_image
Rola Ansible do tworzenia maszyn wirtualnych na podstawie Obrazów Chmurowych Ubuntu w środowisku vSphere.
Obrazy Chmurowe Ubuntu
Ubuntu oferuje obrazy wstępnie zainstalowane do wykorzystania w chmurze. Jednym z dostępnych formatów obrazów jest Open Virtualization Appliance (OVA), który można zaimportować do VMware. Obrazy wykorzystują mechanizm cloud-init, który pozwala na podstawową konfigurację. Niestety, nie ma wsparcia dla używania statycznych adresów IP ani dostosowywania sprzętu podczas tworzenia maszyny.
Ta rola dodaje wsparcie dla tych funkcji.
Cechy
- Tworzy maszynę wirtualną (VM) z wcześniej pobranego pliku OVA.
- Ustawia nazwę hosta.
- Dodaje jeden lub więcej kluczy publicznych ssh i/lub hasło dla domyślnego użytkownika "ubuntu", aby Ansible mógł połączyć się z nową maszyną.
- Opcjonalnie dostosowuje sprzęt, np. liczbę CPU lub pamięć, zobacz vmware_guest w celu dostępnych dostosowań.
- Opcjonalnie ustawia notatki VM (adnotacje), parametry pliku konfiguracyjnego VM i/lub własności niestandardowe VM.
- Można zwiększyć rozmiar dysku (domyślnie 10GB), można także stworzyć i dodać dodatkowe dyski.
- Opcjonalnie zmienia dynamiczny adres IP na statyczny (uzyskany z playbooka lub z DNS).
- VM jest uruchamiana i może być używana w tym samym playbooku, który wywołał tę rolę.
- Można utworzyć kilka maszyn wirtualnych równolegle.
- Testowane z obrazami chmurowymi Ubuntu 21.04, 20.10, 20.04, 19.10, 19.04, 18.10, 18.04 i 17.10.
Starsze wersje nie działają, ponieważ nie używają
netplan
do konfiguracji sieci.
Wymagania
Aby używać tej roli, potrzebujesz:
- środowiska vSphere, w którym będzie wdrażana VM.
- Poświadczeń dla serwera vCenter tego środowiska z odpowiednimi uprawnieniami, patrz poniżej.
- Pliku OVA, np. ubuntu-18.04-server-cloudimg-amd64.ova na maszynie kontrolnej.
Jeśli chcesz pobierać adresy IP maszyn wirtualnych z DNS, musisz także:
- zainstalować dnspython (biblioteka w języku Python, http://www.dnspython.org/) na maszynie kontrolnej.
- używać w pełni kwalifikowanych nazw domenowych (FQDN, np. host.example.org) w inwentarzu. FQDN zostanie także użyty jako nazwa VM.
- dodać rekordy A dla każdej VM, którą chcesz stworzyć.
Minimalna wersja Ansible to 2.10.7. Minimalna wersja kolekcji community.vmware to 1.8.0, która jest częścią pakietu społeczności Ansible 3.2.0.
Uprawnienia vSphere
Minimalne uprawnienia do stworzenia VM za pomocą tej roli to:
DataStore > Przydziel miejsce
Sieć > Przypisz sieć
Zasób > Przypisz maszynę wirtualną do puli zasobów
vApp > Import
Maszyna Wirtualna > Interakcja > Włącz
Maszyna Wirtualna > Konfiguracja > Dodaj nowy dysk
Aby dostosować ustawienia CPU i pamięci, potrzebujesz:
Maszyna Wirtualna > Konfiguracja > Zmień liczbę CPU
Maszyna Wirtualna > Konfiguracja > Pamięć
Aby dostosować rozmiar dysku, potrzebujesz:
Maszyna Wirtualna > Konfiguracja > Rozszerz dysk wirtualny
Opcje zaawansowane mogą wymagać dodatkowych uprawnień.
Zmienne roli
Połączenie z vCenter
- Adres URL serwera vCenter ustawia się za pomocą
vcenter_hostname
lub zmiennej środowiskowejVMWARE_HOST
. - Użytkownik vCenter ustawia się za pomocą
vcenter_username
lub zmiennej środowiskowejVMWARE_USER
. - Hasło vCenter ustawia się za pomocą
vcenter_password
lub zmiennej środowiskowejVMWARE_PASSWORD
. - Weryfikacja certyfikatu może być wyłączona ustawiając
vcenter_validate_certs=no
lub zmieniając zmienną środowiskowąVMWARE_VALIDATE_CERTS
nano
.
Ustawienia VMware
- Plik OVA na maszynie kontrolnej określa się za pomocą
ova_file
. - VM jest tworzona w centrum danych
vmware_datacenter
na zasobie danychvmware_datastore
. - VM można umieścić w folderze, określając
vmware_folder
, oraz w puli zasobów, określającvmware_resource_pool
. - Nazwa VM to domyślnie
inventory_hostname
. Można ją zmienić za pomocąvm_guestname
.
Ustawienia VM
- Nazwa hosta maszyny to domyślnie
inventory_hostname_short
. Można ją zmienić za pomocąvm_hostname
. - Użyj
ssh_keys
, aby ustawić listę kluczy publicznych, które zostaną dodane do pliku authorized_keys użytkownika "ubuntu". Przynajmniej jeden zssh_keys
ipassword
musi być określony, aby Ansible mógł połączyć się z nową maszyną. - Użyj
password
, aby ustawić hasło dla użytkownika "ubuntu". Przynajmniej jeden zssh_keys
ipassword
musi być określony, aby Ansible mógł połączyć się z nową maszyną. - Sprzęt można określić za pomocą
hardware
, zawierającego słownik zgodnie z opisem w vmware_guest. - Rozmiar dysku można dostosować za pomocą
disk
. Ten parametr akceptuje listę specyfikacji dysków, jak opisano w vmware_guest_disk. Pierwszy dysk odpowiada zaimportowanemu dyskowi wirtualnemu. Jego rozmiar może być tylko zwiększany. Zobacz przykładowy playbook poniżej, aby uzyskać więcej informacji. - Można określić niestandardowe mapowania sieciowe za pomocą
networks
, zobacz vmware_deploy_ovf w celu szczegółów. - Notatki VM można ustawić za pomocą
annotation
.
Aby używać tej funkcji, wymagane są uprawnienia VMwareMaszyna Wirtualna > Konfiguracja > Ustaw adnotację
. - Aby ustawić parametry pliku konfiguracyjnego VM, dostarcz
advanced_settings
z listą słowników jak w pokazanym w przykładzie playbook. - Aby ustawić niestandardowe atrybuty VM, dostarcz
customvalues
z listą słowników pokazanych w przykładzie playbook. Należy zwrócić uwagę, że nowe niestandardowe wartości nie będą tworzone, powinny istnieć w vCenter przed wdrożeniem.
Aby użyć statycznego adresu IP, użyj następujących kluczy w słowniku static_ip
:
ipv4
- konkretny adres IPv4, który chcesz przypisać. Domyślnie to adres IPv4 znaleziony w DNS dla FQDN.netmask
- maska sieci w notacji CIDR, domyślnie to8
.gateway
- domyślny brama (wymagana)dns_servers
- lista adresów IP serwerów DNS, domyślnie to publiczne serwery DNS Google.dns_search
- lista nazw domen, które powinny być używane jako sufiksy wyszukiwania w DNS. Używaj tego, aby umieścić swoją VM w domenie.
Ustawienia inwentarza
Ponieważ VM jeszcze nie istnieją, klucz ssh serwera jest nieznany. Aby połączyć się z nowymi VM, musisz wyłączyć weryfikację klucza hosta ssh. Jeśli planujesz często tworzyć VM z tymi samymi FQDN, ssh nie powinno przechowywać odcisków palców w pliku known_hosts.
Dlatego zalecane są następujące zmienne hosta/grupy:
ansible_user=ubuntu
ansible_ssh_extra_args=-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
Zależności
Ta rola nie zależy od innych ról.
Przykładowy Playbook
playbook:
- name: Wdrożenie wirtualnej maszyny obrazu chmurowego Ubuntu
hosts: cloudimg
gather_facts: no
roles:
- role: hamburger_software.vmware_ubuntu_cloud_image
vars:
vcenter_hostname: vcenter.your.domain
vcenter_username: [email protected]
vcenter_password: verysecret
vcenter_validate_certs: no
vmware_datacenter: your-datacenter
vmware_datastore: your-datastore
vmware_folder: your-datacenter/vm/some-folder
ova_file: ubuntu-20.04-server-cloudimg-amd64.ova
hardware:
num_cpus: 4
memory_mb: 2048
annotation: 'przykładowa VM oparta na Obrazie Chmurowym Ubuntu'
# to unika nadmiernych komunikatów syslog od multipathd w Ubuntu 20.04
advanced_settings:
- key: disk.EnableUUID
value: 'TRUE'
customvalues:
- key: 'yourkey'
value: 'yourvalue'
disk:
- size_gb: 20
datastore: your-datastore
scsi_controller: 0
unit_number: 0
- size_mb: 250
datastore: your-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:
- your.domain
ssh_keys:
- ssh-rsa AAAAB3Nz[...]== some-key-name
password: passw0rd
inwentarz z 5 hostami:
[cloudimg]
vm-[1:5].your.domain
[cloudimg:vars]
ansible_user=ubuntu
ansible_password=passw0rd
ansible_ssh_extra_args=-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
Licencja
MIT
Informacje o autorze
Ta rola została stworzona przez Haralda Albersa w 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