hamburger_software.vmware_ubuntu_cloud_image
vmware_ubuntu_cloud_image
vSphere環境でUbuntu Cloud Imagesに基づいた仮想マシンを作成するためのAnsibleロールです。
Ubuntu Cloud Images
Ubuntuはクラウドで使用できる事前インストール済みのイメージを提供しています。
利用可能なイメージフォーマットのひとつは_Open Virtualization Appliance_(OVA)で、これはVMwareにインポートできます。
これらのイメージは、非常に基本的な設定を行うためにcloud-initメカニズムを使用しています。
残念ながら、静的IPアドレスの使用や、マシン作成中のハードウェア調整のサポートはありません。
このロールはこれらの機能を追加します。
機能
- ダウンロード済みのOVAファイルから仮想マシン(VM)を作成します。
- ホスト名を設定します。
- Ansibleが新しいマシンに接続できるように、デフォルトユーザー「ubuntu」に対して1つ以上のssh公開鍵やパスワードを追加します。
- オプションでハードウェアを調整します。たとえばCPUの数やメモリのサイズなど、可能なカスタマイズについてはvmware_guestを参照してください。
- オプションでVMのノート(注釈)、VMの構成ファイルのパラメータ、および/またはVMのカスタム属性を設定します。
- ディスクサイズを増加させることができます(デフォルトは10GB)。追加のディスクを作成して追加することも可能です。
- オプションで動的IPアドレスを静的IPアドレスに変更します(プレイブックまたはDNSから取得)。
- VMは起動され、当該ロールを呼び出した同じプレイブックで使用できます。
- 複数のVMを同時に作成することができます。
- Ubuntu Cloud Imagesの21.04、20.10、20.04、19.10、19.04、18.10、18.04、および17.10でテスト済みです。
古いバージョンはnetplan
を使用していないため動作しません。
要件
このロールを使用するには、次のものが必要です。
- VMをデプロイするvSphere環境。
- 適切な権限を持つvCenterサーバの認証情報(詳細は下記)。
- コントロールマシン上のOVAファイル(例: ubuntu-18.04-server-cloudimg-amd64.ova)。
VMのIPアドレスをDNSから取得したい場合は、次も必要です。
- コントロールマシンに_dnspython_(Pythonライブラリ、http://www.dnspython.org/)をインストールします。
- インベントリで完全修飾ドメイン名(FQDN、例: host.example.org)を使用します。
FQDNはVM名としても使用されます。 - 作成したい各VMについてAレコードを追加します。
Ansibleの最小バージョンは2.10.7です。
community.vmwareコレクションの最小バージョンは1.8.0で、これはAnsibleコミュニティパッケージ3.2.0の一部です。
vSphere権限
このロールでVMを作成するための最小権限は次のとおりです。
DataStore > Allocate Space
Network > Assign Network
Resource > Assign Virtual Machine to Resource Pool
vApp > Import
Virtual Machine > Interaction > Power On
Virtual Machine > Configuration > Add New Disk
CPUとメモリ設定を調整するには、次が必要です。
Virtual Machine > Configuration > Change CPU count
Virtual Machine > Configuration > Memory
ディスクサイズを調整するには、次が必要です。
Virtual Machine > Configuration > Extend virtual disk
高度な構成オプションには追加の権限が必要な場合があります。
ロール変数
vCenter接続
- vCenterサーバのURLは
vcenter_hostname
または環境変数VMWARE_HOST
で設定されます。 - vCenterユーザーは
vcenter_username
または環境変数VMWARE_USER
で設定されます。 - vCenterパスワードは
vcenter_password
または環境変数VMWARE_PASSWORD
で設定されます。 - 証明書の検証は、
vcenter_validate_certs=no
を設定するか、環境変数VMWARE_VALIDATE_CERTS
をno
に設定することで無効にできます。
VMware設定
- コントロールマシン上のOVAファイルは
ova_file
で指定します。 - VMは
vmware_datacenter
のデータセンター内のvmware_datastore
で作成されます。 - VMは、
vmware_folder
を指定することでフォルダに配置し、vmware_resource_pool
を指定することでリソースプールに配置できます。 - VM名はデフォルトで
inventory_hostname
です。vm_guestname
で変更できます。
VM設定
- マシンのホスト名はデフォルトで
inventory_hostname_short
です。vm_hostname
で変更できます。 ssh_keys
を使用して、「ubuntu」ユーザーのauthorized_keysファイルに追加される公開鍵のリストを設定します。
Ansibleが新しいマシンに接続できるようにするために、ssh_keys
またはpassword
のいずれかを指定する必要があります。password
を使用して「ubuntu」ユーザーのパスワードを設定します。
Ansibleが新しいマシンに接続できるようにするために、ssh_keys
またはpassword
のいずれかを指定する必要があります。- ハードウェアは、vmware_guestで指定されたディクショナリとして
hardware
で指定できます。 - ディスクサイズは
disk
で調整できます。このパラメータは、vmware_guest_diskに記載されたディスク仕様のリストを受け入れます。
最初のディスクはインポートされた仮想ディスクに対応し、サイズは増加させることができます。
使用例については以下の例を参照してください。 - ユーザー定義のネットワークマッピングは
networks
で指定できます。vmware_deploy_ovfをご覧ください。 - VMノートは
annotation
で設定できます。
この機能を使用するには、VMwareの権限Virtual Machine > Configuration > Set annotation
が必要です。 - VM構成ファイルパラメータを設定するには、例のプレイブックに示されているように、
advanced_settings
でディクショナリのリストを供給します。 - VMのカスタム属性を設定するには、例のプレイブックに示されたように
customvalues
でディクショナリのリストを供給します。
新しいカスタム値は作成されず、デプロイ前にvCenterに存在する必要があります。
静的IPアドレスを使用するには、ディクショナリstatic_ip
に次のキーを使用します。
ipv4
- 割り当てたい特定のIPv4アドレスです。デフォルトはFQDNに対してDNSで見つかったIPv4アドレスです。netmask
- CIDR表記でのネットマスクで、デフォルトは8
です。gateway
- デフォルトゲートウェイ(必須)。dns_servers
- DNSサーバのIPアドレスのリストで、デフォルトはGoogleの公共DNSサーバです。dns_search
- DNS検索に使用されるドメイン名のリストです。
VMをドメインに置くために使用します。
インベントリ設定
VMはまだ存在しないため、sshサーバーのキーは不明です。
新しいVMに接続するには、sshホストキーのチェックをオフにする必要があります。
同じFQDNでVMを頻繁に再作成する予定がある場合、sshはフィンガープリントを_known_hosts_ファイルに保存すべきではありません。
したがって、推奨されるホスト/グループ変数は次のとおりです。
ansible_user=ubuntu
ansible_ssh_extra_args=-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
依存関係
このロールは他のロールに依存していません。
例プレイブック
プレイブック:
- name: Ubuntu Cloud Image仮想アプライアンスをデプロイする
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: 'Ubuntu Cloud Imageに基づいたサンプルVM'
# これによりUbuntu 20.04のmultipathdからの過剰なsyslogメッセージが回避されます
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
5つのホストを持つインベントリ:
[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
ライセンス
MIT
著者情報
このロールは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