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.infra
、oVirt.infra
、ovirt-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 |
|
migration_policy | UNDEF | 移行ポリシーはホスト障害時に仮想マシンをライブ移行する条件を定義します。サポートされるポリシーは以下のものです:
|
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 | 移行の最大帯域幅を定義します。 以下の帯域幅オプションがサポートされます:
|
migration_bandwidth_limit | UNDEF | カスタム移行帯域幅制限を設定します。 |
network | UNDEF | クラスタホストにアクセスするための管理ネットワーク。 |
resilience_policy | UNDEF | 移行中の仮想マシンの優先順位を定義します。 以下の値がサポートされます:
|
rng_sources | UNDEF | クラスタ内のすべてのホストが使用する乱数生成デバイスを指定するリスト。サポートされているジェネレータは:hwrngおよびrandomです。 |
serial_policy | UNDEF | クラスタ内の仮想マシンに対するシリアル番号ポリシーを指定します。 以下のオプションがサポートされています:
|
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
のオプションにはdevelopment
とproduction
があり、デフォルト値は以下の通りです:
開発環境
クラスタの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 | ストレージドメインの機能。可能な値は以下です:
|
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 | ユーザーに関連する属性の辞書。利用可能な属性は以下です:
|
ユーザーグループ
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 | 権限を割り当てるために使用されるオブジェクトのタイプ。可能なオブジェクトタイプは:
|
object_name | UNDEF | 権限が割り当てられるオブジェクトの名前。 |
外部プロバイダ
外部プロバイダを設定するには、external_providers
という辞書変数を定義できます。
external_providers
リスト変数のアイテムは以下のパラメータを含むことができます:
名前 | デフォルト値 | 説明 |
---|---|---|
name | UNDEF (必須) | 外部プロバイダの名前。 |
state | present | 外部プロバイダの状態。値は:
|
type | UNDEF (必須) | 外部プロバイダのタイプ。値は:
|
url | UNDEF | 外部プロバイダがホストされているURL。状態がpresentの場合は必須。 |
username | UNDEF | 外部プロバイダへのログインに使用するユーザー名。すべてのタイプに適用されます。 |
password | UNDEF | ユーザー名パラメータで指定されたユーザーのパスワード。すべてのタイプに適用されます。 |
tenant | UNDEF | テナントの名前。 |
auth_url | UNDEF | OpenStackプロバイダのKeystone認証URL。
|
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
ライセンス
Apache License 2.0