ovirt.infra

oVirt インフラ

この役割は oVirt Ansible Collectionに移行されました。最新のバージョンをこちらから使用してください。このリポジトリは現在読み取り専用で、アクティブな開発には使用されていません。

ovirt.infra ロールを使用すると、macプール、データセンター、クラスタ、ネットワーク、ホスト、ユーザー、およびグループを含むoVirtインフラストラクチャをセットアップできます。

対象のマシン

このロールをユーザー管理に使用する場合、エンジンマシンにあるovirt-aaa-jdbc-toolを使用するため、ロールはエンジンマシン上で実行する必要があります。

注意

Ansible Galaxyからこのロールをインストールする際に、次のコマンドを実行するよう指示されます:

$ ansible-galaxy install ovirt.infra

これにより、コマンドラインで指定した名前(この場合はovirt.infra)のディレクトリにロールがダウンロードされます。ただし、大文字と小文字が区別されるため、例えばOVIRT.infraと指定すると、同じロールがダウンロードされますが、OVIRT.infraという名前のディレクトリに追加されます。したがって、このロールを使用する際には常に大文字の接頭辞を使用しなければなりません。コマンドラインでロールの名前を指定する際は注意してください。

RPMインストールの場合、ovirt.infraoVirt.infraovirt-infraの3つのレガシー名をインストールします。このため、いずれかの名前を使用できます。このドキュメント及びこのリポジトリ内の例ではovirt.infraという名前を使用しています。oVirt.infraおよびovirt-infraというロール名は非推奨です。

要件

  • oVirt Python SDK バージョン 4.3
  • Ansible バージョン 2.9

ロール変数

データセンター

データセンターの設定/クリーンアップには、次の変数を使用できます。

名前 デフォルト値 説明
data_center_name UNDEF データセンターの名前。
data_center_description UNDEF データセンターの説明。
data_center_local false データセンターが共有かローカルか指定します。
compatibility_version UNDEF データセンターの互換性バージョン。
data_center_state present データセンターが存在するかどうか指定します。
recursive_cleanup false データセンター内のすべてのエンティティを再帰的に削除するかどうか指定します。 (状態 == absent の場合のみ有効)
format_storages false データセンターの一部として削除されるすべてのストレージをフォーマットするかどうか指定します。 (data_center_state == absent かつ recursive_cleanup == true の場合のみ有効)

MACプール

MACプールを設定するには、mac_poolsというリスト変数を定義できます。 mac_poolsリスト変数のアイテムは次のパラメータを含むことができます:

名前 デフォルト値 説明
mac_pool_name UNDEF 管理するMACプールの名前。
mac_pool_ranges UNDEF MACの範囲のリスト。範囲はカンマで区切る必要があります。 例: 00:1a:4a:16:01:51,00:1a:4a:16:01:61
mac_pool_allow_duplicates UNDEF (true)の場合、MACアドレスをプール内で複数回使用することを許可します。デフォルト値はoVirtエンジンによってfalseに設定されています。

クラスタ

クラスタを設定するには、clustersというリスト変数を定義できます。 clustersリスト変数のアイテムは次のパラメータを含むことができます:

名前 デフォルト値 説明
name UNDEF (必須) クラスタの名前。
state present クラスタの状態。
cpu_type Intel Conroe Family クラスタのCPUタイプ。
profile UNDEF クラスタプロファイル。事前定義されたクラスタプロファイルを選択できます。
ballooning UNDEF Trueの場合、メモリバルーニング最適化を有効にします。
description UNDEF クラスタの説明。
ksm UNDEF Trueの場合、必要に応じてカーネル同ページマージ(KSM)を実行します。
ksm_numa UNDEF Trueの場合、NUMAノード内でのKSMのパフォーマンスを最適化します。
vm_reason UNDEF Trueの場合、マネージャから仮想マシンがシャットダウンされる際に理由フィールドを有効にします。
host_reason UNDEF Trueの場合、マネージャからホストがメンテナンスモードに入れられる際に理由フィールドを有効にします。
memory_policy
alias: performance_preset
UNDEF
  • disabled - メモリページ共有を無効にします。
  • server - 各ホストのシステムメモリの150%にメモリページ共有の閾値を設定します。
  • desktop - 各ホストのシステムメモリの200%にメモリページ共有の閾値を設定します。
migration_policy UNDEF 移行ポリシーはホスト障害時に仮想マシンをライブ移行する条件を定義します。サポートされるポリシーは以下のものです:
  • legacy - 3.6バージョンの従来の動作。
  • minimal_downtime - 仮想マシンは大きなダウンタイムを経験しないべきです。
  • suspend_workload - 仮想マシンはより大きなダウンタイムを経験する可能性があります。
  • post_copy - 仮想マシンは大きなダウンタイムを経験しないべきです。もしVMの移行が長時間収束しない場合、移行はポストコピーに切り替えられます。
scheduling_policy UNDEF クラスタが使用するスケジューリングポリシー。
ha_reservation UNDEF Trueの場合、oVirt/RHVが高可用性の仮想マシンのためにクラスタの能力を監視します。
fence_enabled UNDEF Trueの場合、クラスタのフェンシングを有効にします。
fence_connectivity_threshold UNDEF fence_skip_if_connectivity_brokenが使用する閾値。
fence_skip_if_connectivity_broken UNDEF Trueの場合、クラスタ内で接続の問題があるホストの割合が定義された閾値以上の場合、一時的にフェンシングが無効になります。
fence_skip_if_sd_active UNDEF Trueの場合、ストレージに接続されているが応答しないクラスタ内のホストはフェンスされません。
mac_pool UNDEF MACプールの名前。
comment UNDEF クラスタのコメント。
migration_bandwidth UNDEF 移行の最大帯域幅を定義します。
以下の帯域幅オプションがサポートされます:
  • auto - 帯域幅はデータセンターのホストネットワークQoSのレート制限(Mbps)設定からコピーされます。
  • hypervisor_default - 帯域幅は送信ホストのローカルVDSM設定によって制御されます。
  • custom - ユーザーによって定義されます(Mbps単位)。
migration_bandwidth_limit UNDEF カスタム移行帯域幅制限を設定します。
network UNDEF クラスタホストにアクセスするための管理ネットワーク。
resilience_policy UNDEF 移行中の仮想マシンの優先順位を定義します。
以下の値がサポートされます:
  • do_not_migrate - 仮想マシンの移行を防ぎます。
  • migrate - 定義された優先順位で仮想マシンを移行します。
  • migrate_highly_available - 他のホストを過負荷にしないように高可用性の仮想マシンのみを移行します。
rng_sources UNDEF クラスタ内のすべてのホストが使用する乱数生成デバイスを指定するリスト。サポートされているジェネレータは:hwrngおよびrandomです。
serial_policy UNDEF クラスタ内の仮想マシンに対するシリアル番号ポリシーを指定します。
以下のオプションがサポートされています:
  • vm - 仮想マシンのUUIDをシリアル番号として設定します。
  • host - ホストのUUIDを仮想マシンのシリアル番号として設定します。
  • custom - serial_policy_valueでカスタムシリアル番号を指定できます。
serial_policy_value UNDEF カスタムシリアル番号を指定できます。このパラメータはserial_policyがカスタムのときのみ使用されます。
spice_proxy UNDEF SPICEクライアントが仮想マシンに接続するためのプロキシ。アドレスは以下の形式でなければなりません:protocol://[host]:[port]
switch_type UNDEF 指定されたクラスタ内のすべてのネットワークで使用されるスイッチのタイプ。Linuxブリッジを使用するレガシーまたはOpen vSwitchを使用するovsのいずれか。
threads_as_cores UNDEF Trueの場合、公開されたホストスレッドは仮想マシンによって利用できるコアと見なされます。
trusted_service UNDEF Trueの場合、OpenAttestationサーバーとの統合を有効にします。
virt UNDEF Trueの場合、このクラスタのホストは仮想マシンを実行するために使用されます。デフォルトはtrueです。
gluster UNDEF Trueの場合、このクラスタのホストはGluster Storageサーバーノードとして扱われ、仮想マシンを実行するためには使用されません。
external_network_providers UNDEF クラスタ内で利用可能な外部ネットワークプロバイダを指定するリスト。

パラメータに関する詳細は、ovirt_clusterモジュールのドキュメントで確認できます。

クラスタプロファイル

クラスタのprofileのオプションにはdevelopmentproductionがあり、デフォルト値は以下の通りです:

開発環境

クラスタのdevelopmentプロファイルには、以下の値が事前定義されています:

パラメータ
ballooning true
ksm true
host_reason false
vm_reason false
memory_policy server
migration_policy post_copy
生産環境

クラスタのproductionプロファイルには、以下の値が事前定義されています:

パラメータ
ballooning false
ksm false
host_reason true
vm_reason true
memory_policy disabled
migration_policy suspend_workload
scheduling_policy evenly_distributed
ha_reservation true
fence_enabled true
fence_skip_if_connectivity_broken true
fence_skip_if_sd_active true

ホスト

ホストを設定するには、hostsというリスト変数を定義できます。 hostsリスト変数のアイテムは次のパラメータを含むことができます:

名前 デフォルト値 説明
name UNDEF (必須) ホストの名前。
state present ホストがpresentまたはabsentであるかどうかを指定します。
address UNDEF ホストのIPアドレスまたはFQDN。
password UNDEF ホストのルートパスワード。public_keyがfalseの場合は必須。
public_key UNDEF trueの場合、公開鍵を使用してホストに認証します。
cluster UNDEF (必須) ホストが接続するクラスタ。
timeout 1800 ホストがUP状態であるまでの最大待機時間。
poll_interval 20 ホストの状態を確認するためのポーリング間隔。
hosted_engine UNDEF ホストがホステッドエンジンとしてデプロイされるかどうかを指定します。
power_management UNDEF 電源管理を指定します。事前定義された変数を選択できます。

もしプレイブックで何らかの理由でhosts変数を使用できない場合は、hosts_var_name変数の値を上書きしてこの変数の名前を変更できます。例:

- name: oVirtインフラのセットアップ
  hosts: engine

  roles:
    - role: ovirt.infra
      vars:
        hosts_var_name: ovirt_hosts
        ovirt_hosts:
          - name: host_0
            state: present
            address: 1.2.3.4
            password: 123456
            cluster: Default
ホスト電源管理

power_managementには以下のように事前定義された値があります:

名前 デフォルト値 説明
address UNDEF 電源管理インターフェースのアドレス。
state present ホスト電源管理が存在するかどうか。
username UNDEF 電源管理インターフェースに接続するために使用されるユーザー名。
password UNDEF C(username)パラメータで指定されたユーザーのパスワード。
type UNDEF 電源管理のタイプ。oVirt/RHVで事前定義されている値はdrac5、ipmilan、rsa、bladecenter、alom、apc、apc_snmp、eps、wti、rsb、cisco_ucs、drac7、hpblade、ilo、ilo2、ilo3、ilo4、ilo_sshのいずれか、ユーザーがカスタムタイプを定義することもできます。
options UNDEF 追加のフェンスエージェントオプションの辞書(電源管理スロットを含む)。オプションについての追加情報はhttps://github.com/ClusterLabs/fence-agents/blob/master/doc/FenceAgentAPI.mdで確認できます。
port UNDEF 電源管理インターフェースポート。

ネットワーク

論理ネットワーク

論理ネットワークを設定するには、logical_networksというリスト変数を定義できます。 logical_networksリストには以下のパラメータが含まれることができます:

名前 デフォルト値 説明
name UNDEF ネットワークの名前。
state present ネットワークの状態がpresentまたはabsentであるかを指定します。
vlan_tag UNDEF VLANタグを指定します。
vm_network True Trueの場合、ネットワークはVM用のネットワークとしてマークされます。
mtu UNDEF ネットワークの最大転送単位 (MTU)。
description UNDEF ネットワークの説明。
clusters UNDEF 特定のクラスタでネットワークがどのように管理されるかを説明する辞書のリスト。
label UNDEF ネットワークに割り当てるラベルの名前。

パラメータに関する詳細は、ovirt_networkモジュールのドキュメントで確認できます。

ホストネットワーク

ホストネットワークを設定するには、host_networksというリスト変数を定義できます。 host_networksリストには以下のパラメータが含まれることができます:

名前 デフォルト値 説明
name UNDEF ホストの名前。
state UNDEF ネットワークの状態がpresentまたはabsentであるかを指定します。
check UNDEF trueの場合、ホストとエンジンの接続を検証します。
save UNDEF trueの場合、ネットワーク設定は永続的になります。デフォルトでは一時的です。
bond UNDEF ネットワークボンドを説明する辞書。
networks UNDEF インターフェースまたはボンドに接続されるネットワークを説明する辞書。
labels UNDEF ボンドまたはインターフェースに割り当てるネットワークラベルの名前のリスト。
interface UNDEF 論理ネットワークが接続されるべきネットワークインターフェースの名前。

パラメータに関する詳細は、ovirt_host_networkモジュールのドキュメントで確認できます。

ストレージ

ストレージを設定するには、storagesという辞書変数を定義できます。 storages辞書内のアイテムの値は以下のパラメータを含むことができます(キーは常にストレージの名前):

名前 デフォルト値 説明
master false Trueの場合、ストレージは最初のストレージとして追加され、マスターストレージになります。
domain_function data ストレージドメインの機能。可能な値は以下です:
  • iso
  • export
  • data
localfs UNDEF ローカルストレージを定義する辞書。
nfs UNDEF NFSストレージを定義する辞書。
iscsi UNDEF iSCSIストレージを定義する辞書。
posixfs UNDEF PosixFSストレージを定義する辞書。
fcp UNDEF FCPストレージを定義する辞書。
glusterfs UNDEF glusterFSストレージを定義する辞書。
discard_after_delete UNDEF Trueの場合、ストレージドメインブロックは削除時に破棄されます。デフォルトで有効です。これはブロックベースのストレージドメインのみに関連します。

パラメータに関する詳細は、ovirt_storage_domainモジュールのドキュメントで確認できます。

AAA JDBC

ユーザー

AAA JDBCプロバイダでユーザーを設定するには、usersという辞書変数を定義できます。 usersリストのアイテムは以下のパラメータを含むことができます:

名前 デフォルト値 説明
state present ユーザーがpresentまたはabsentであるかを指定します。
name UNDEF ユーザーの名前。
authz_name UNDEF ユーザーの認可プロバイダ。
password UNDEF ユーザーのパスワード。
valid_to UNDEF アカウントが有効である日付を指定します。
attributes UNDEF ユーザーに関連する属性の辞書。利用可能な属性は以下です:
  • department
  • description
  • displayName
  • email
  • firstName
  • lastName
  • title
ユーザーグループ

AAA JDBCプロバイダでユーザーグループを設定するには、user_groupsという辞書変数を定義できます。 user_groupsリストのアイテムは以下のパラメータを含むことができます:

名前 デフォルト値 説明
state present グループがpresentまたはabsentであるかを指定します。
name UNDEF グループの名前。
authz_name UNDEF グループの認可プロバイダ。
users UNDEF このグループに属するユーザーのリスト。

権限

ユーザーまたはグループの権限を設定するには、permissionsという辞書変数を定義できます。 permissionsリスト変数のアイテムは以下のパラメータを含むことができます:

名前 デフォルト値 説明
state present 権限の状態がpresentまたはabsentであるかを指定します。
user_name UNDEF 権限を管理するユーザー。
group_name UNDEF 権限を管理するグループの名前。
authz_name UNDEF グループまたはユーザーの認可プロバイダの名前。
role UNDEF ユーザーまたはグループに割り当てる役割。
object_type UNDEF 権限を割り当てるために使用されるオブジェクトのタイプ。可能なオブジェクトタイプは:
  • data_center
  • cluster
  • host
  • storage_domain
  • network
  • disk
  • vm
  • vm_pool
  • template
  • cpu_profile
  • disk_profile
  • vnic_profile
  • system
object_name UNDEF 権限が割り当てられるオブジェクトの名前。

外部プロバイダ

外部プロバイダを設定するには、external_providersという辞書変数を定義できます。 external_providersリスト変数のアイテムは以下のパラメータを含むことができます:

名前 デフォルト値 説明
name UNDEF (必須) 外部プロバイダの名前。
state present 外部プロバイダの状態。値は:
  • present
  • absent
type UNDEF (必須) 外部プロバイダのタイプ。値は:
  • os_image
  • network
  • os_volume
  • foreman
url UNDEF 外部プロバイダがホストされているURL。状態がpresentの場合は必須。
username UNDEF 外部プロバイダへのログインに使用するユーザー名。すべてのタイプに適用されます。
password UNDEF ユーザー名パラメータで指定されたユーザーのパスワード。すべてのタイプに適用されます。
tenant UNDEF テナントの名前。
auth_url UNDEF OpenStackプロバイダのKeystone認証URL。
  • os_image
  • network
  • os_volume
のために必要。
data_center UNDEF プロバイダが接続されるデータセンターの名前。os_volumeタイプに適用されます。
authentication_keys UNDEF 認証キーのリスト。各キーは{'uuid': 'my-uuid', 'value': 'secret value'}のような辞書で表されます。ansible 2.6で追加されました。os_volumeタイプに適用されます。

パラメータに関する詳細は、ovirt_external_providerモジュールのドキュメントで確認できます。

例プレイブック

---
- name: oVirt infra
  hosts: localhost
  connection: local
  gather_facts: false

  vars:
     engine_fqdn: ovirt-engine.example.com
     engine_user: admin@internal
     engine_password: 123456
     engine_cafile: /etc/pki/ovirt-engine/ca.pem
     data_center_name: mydatacenter
     compatibility_version: 4.1

     mac_pools:
      - mac_pool_name: "Default"
        mac_pool_ranges:
          - "00:1a:4a:16:01:51,00:1a:4a:16:01:61"

     clusters:
      - name: production
        cpu_type: Intel Conroe Family
        profile: production

     hosts:
      - name: myhost
        address: 1.2.3.4
        cluster: production
        password: 123456
      - name: myhost1
        address: 5.6.7.8
        cluster: production
        password: 123456
        power_management:
          address: 9.8.7.6
          username: root
          password: password
          type: ipmilan
          options:
            myoption1: x
            myoption2: y
            slot: myslot

     storages:
       mynfsstorage:
         master: true
         state: present
         nfs:
           address: 10.11.12.13
           path: /the_path
       myiscsistorage:
         state: present
         iscsi:
           target: iqn.2014-07.org.ovirt:storage
           port: 3260
           address: 100.101.102.103
           username: username
           password: password
           lun_id: 3600140551fcc8348ea74a99b6760fbb4
       mytemplates:
         domain_function: export
         nfs:
           address: 100.101.102.104
           path: /exports/nfs/exported
       myisostorage:
         domain_function: iso
         nfs:
           address: 100.101.102.105
           path: /exports/nfs/iso

     logical_networks:
       - name: mynetwork
         clusters:
           - name: production
             assigned: yes
             required: no
             display: no
             migration: yes
             gluster: no

     host_networks:
       - name: myhost1
         check: true
         save: true
         bond:
           name: bond0
           mode: 2
           interfaces:
             - eth2
             - eth3
         networks:
           - name: mynetwork
             boot_protocol: dhcp

     users:
      - name: john.doe
        authz_name: internal-authz
        password: 123456
        valid_to: "2018-01-01 00:00:00Z"
      - name: joe.doe
        authz_name: internal-authz
        password: 123456
        valid_to: "2018-01-01 00:00:00Z"

     user_groups:
      - name: admins
        authz_name: internal-authz
        users:
         - john.doe
         - joe.doe

     permissions:
      - state: present
        user_name: john.doe
        authz_name: internal-authz
        role: UserROle
        object_type: cluster
        object_name: production

      - state: present
        group_name: admins
        authz_name: internal-authz
        role: UserVmManager
        object_type: cluster
        object_name: production

     external_providers:
       - name: myglance
         type: os_image
         state: present
         url: http://externalprovider.example.com:9292
         username: admin
         password: secret
         tenant: admin
         auth_url: http://externalprovider.example.com:35357/v2.0/

  pre_tasks:
    - name: oVirtにログイン
      ovirt_auth:
        hostname: "{{ engine_fqdn }}"
        username: "{{ engine_user }}"
        password: "{{ engine_password }}"
        ca_file: "{{ engine_cafile | default(omit) }}"
        insecure: "{{ engine_insecure | default(true) }}"
      tags:
        - always

  roles:
    - ovirt.infra

  post_tasks:
    - name: oVirtからログアウト
      ovirt_auth:
        state: absent
        ovirt_auth: "{{ ovirt_auth }}"
      tags:
        - always

asciicast

ライセンス

Apache License 2.0

プロジェクトについて

Role to manage oVirt infrastructure.

インストール
ansible-galaxy install ovirt.infra
ライセンス
apache-2.0
ダウンロード
153.3k
所有者
Open Virtual Datacenter