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.0420.1020.0419.1019.0418.1018.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_CERTSnoに設定することで無効にできます。

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
ライセンス
mit
ダウンロード
732
所有者
Product documentation and open source projects created at HS - Hamburger Software GmbH & Co. KG