ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
Ansibleを使用したOracle Exadata Database Service on Cloud@Customer仮想マシン・クラスタのプロビジョニング
イントロダクション
このチュートリアルでは、OCI Ansibleコレクションを使用して、Oracle Exadata Database Service on Cloud@Customer仮想マシン(VM)クラスタをプロビジョニングする方法について説明します。Oracle Exadata Database Service on Cloud@Customer VMクラスタを作成するには、対応するVMクラスタ・ネットワークを最初に作成する必要があります。
目的
- Ansibleを使用して、Oracle Exadata Database Service on Cloud@Customer VMクラスタ・ネットワークおよびVMクラスタをプロビジョニングします。
前提条件
-
Oracle Exadata Database Service on Cloud@Customerインフラストラクチャが使用可能なOracle Cloud Infrastructure (OCI)アカウント。
-
SSHキーのペア。
-
次のコンポーネントを含む制御ノードがすでにインストールされ、適切に構成されています。
- Ansible
- OCI Ansibleコレクション。
- Oracle Cloud Infrastructureコマンドライン・インタフェース(OCI CLI)。
詳細は、Oracle Cloud InfrastructureでAnsibleを使用するための前提条件を参照してください。
タスク1: インベントリの作成
-
適切に構成されたAnsible制御ノードに接続します。
-
次の内容のインベントリ・ファイル
inventory_exacc.yml
を作成します。localhost ansible_connection=local
タスク2: 変数ファイルの作成
次の内容で説明するすべての変数を使用して、variables_exacc.yml
という名前の変数ファイルを作成します。
# Your variables file
your_region: "eu-frankfurt-1" # The OCI region where your resources will reside - This parameter is optional
your_exa_infra_id: "ocid1.exadatainfrastructure.oc1.eu-frankfurt-1.xxx" # The OCI of your Exadata infrastructure
## Variables related to your VM cluster network
your_vm_net_comp_id: "ocid1.compartment.oc1..xxx" # The compartment OCID of your VM cluster network
your_vm_net_name: "my_vm_cluster_network_name" # The display name of your VM cluster network
your_vm_net_dns: "10.109.10.2" # The list of your DNS server IP addresses. Maximum of 3 allowed.
your_vm_net_ntp: "10.109.10.3" # The list of your NTP server IP addresses. Maximum of 3 allowed.
your_vm_net_scan_ips: ["203.101.10.123", "203.101.10.124", "203.101.10.125"] # The list of your SCAN IP addresses. Three addresses should be provided.
your_vm_net_scan_listener_port_tcp: "1521" # Your SCAN TCPIP port. Default is 1521.
### Variables related to your CLIENT network
your_cli_nodes_hostname_1: "your_1st_hostname" # The hostname of your 1st node on the CLIENT network
your_cli_nodes_ip_1: "203.101.10.101" # The IP address of your 1st node on the CLIENT network
your_cli_nodes_vip_hostname_1: "your_1st_hostname-vip" # The node virtual IP (VIP) host name of your 1st node on the CLIENT network
your_cli_nodes_vip_1: "203.101.10.102" # The node virtual IP (VIP) address of your 1st node on the CLIENT network
your_db_server_ocid_1: "ocid1.dbserver.oc1.eu-frankfurt-1.xxx" # The Db server OCID associated with your 1st node on the CLIENT network
your_cli_nodes_hostname_2: "your_2nd_hostname" # The hostname of your 2nd node on the CLIENT network
your_cli_nodes_ip_2: "203.101.10.103" # The IP address of your 2nd node on the CLIENT network
your_cli_nodes_vip_hostname_2: "your_2nd_hostname-vip" # The node virtual IP (VIP) host name of your 2nd node on the CLIENT network
your_cli_nodes_vip_2: "203.101.10.104" # The node virtual IP (VIP) address of your 2nd node on the CLIENT network
your_db_server_ocid_2: "ocid1.dbserver.oc1.eu-frankfurt-1.yyy" # The Db server OCID associated with your 2nd node on the CLIENT network
your_cli_vm_net_vlan_id: "123" # Your CLIENT network VLAN ID
your_cli_vm_net_netmask: "your_client_netmask" # Your CLIENT network netmask
your_cli_vm_net_gateway: "your_client_gateway_ip" # Your CLIENT network gateway
your_cli_vm_net_domain_name: "your_client_network_domain_name" # Your CLIENT network domain name
### Variables related to your BACKUP network
your_bck_nodes_hostname_1: "your_1st_hostname-bk" # The hostname of your 1st node on the BACKUP network
your_bck_nodes_ip_1: "10.108.10.3" # The IP address of your 1st node on the BACKUP network
your_bck_nodes_hostname_2: "your_2nd_hostname-bk" # The hostname of your 2nd node on the BACKUP network
your_bck_nodes_ip_2: "10.108.10.4" # The IP address of your 2nd node on the BACKUP network
your_bck_vm_net_vlan_id: "456" # Your BACKUP network VLAN ID
your_bck_vm_net_netmask: "your_backup_netmask" # Your BACKUP network netmask
your_bck_vm_net_gateway: "your_backup_gateway_ip" # Your BACKUP network gateway
your_bck_vm_net_domain_name: "your_backup_network_domain_name" # Your BACKUP network domain name
## Variables related to your VM cluster
your_vm_cluster_comp_id: "ocid1.compartment.oc1..yyy" # The compartment OCID of your VM cluster
your_vm_cluster_name: "my_vm_cluster_name"
your_vm_clus_ssh_public_keys: [ "ssh-rsa AAAAB3NzaC...qScP4xMPQ9L5xWsqs" ]
your_license_model: "LICENSE_INCLUDED" # The Oracle license model that applies to the VM cluster. The default is BRING_YOUR_OWN_LICENSE.
タスク3: VMクラスタ・ネットワークをプロビジョニングするためのプレイブックの作成
-
playbook_exacc_vmCluster_network_creation.yml
という名前のプレイブック・ファイルを次の内容で作成します。- hosts: localhost collections: - oracle.oci vars_files: - variables_exacc.yml tasks: - name: Create VM cluster network oci_database_vm_cluster_network: region: "{{ your_region }}" compartment_id: "{{ your_vm_net_comp_id }}" exadata_infrastructure_id: "{{ your_exa_infra_id }}" display_name: "{{ your_vm_net_name }}" dns: "{{ your_vm_net_dns }}" ntp: "{{ your_vm_net_ntp }}" scans: - hostname: "{{ your_vm_clus_name }}-scan" ips: "{{ your_vm_net_scan_ips }}" scan_listener_port_tcp: "{{ your_vm_net_scan_listener_port_tcp }}" vm_networks: - network_type: CLIENT nodes: - hostname: "{{ your_cli_nodes_hostname_1 }}" ip: "{{ your_cli_nodes_ip_1 }}" vip_hostname: "{{ your_cli_nodes_vip_hostname_1 }}" vip: "{{ your_cli_nodes_vip_1 }}" db_server_id: "{{ your_db_server_ocid_1 }}" - hostname: "{{ your_cli_nodes_hostname_2 }}" ip: "{{ your_cli_nodes_ip_2 }}" vip_hostname: "{{ your_cli_nodes_vip_hostname_2 }}" vip: "{{ your_cli_nodes_vip_2 }}" db_server_id: "{{ your_db_server_ocid_2 }}" vlan_id: "{{ your_cli_vm_net_vlan_id }}" netmask: "{{ your_cli_vm_net_netmask }}" gateway: "{{ your_cli_vm_net_gateway }}" domain_name: "{{ your_cli_vm_net_domain_name }}" - network_type: BACKUP nodes: - hostname: "{{ your_bck_nodes_hostname_1 }}" ip: "{{ your_bck_nodes_ip_1 }}" vip_hostname: "{{ your_bck_nodes_vip_hostname_1 }}" vip: "{{ your_bck_nodes_vip_1 }}" db_server_id: "{{ your_db_server_ocid_1 }}" - hostname: "{{ your_bck_nodes_hostname_2 }}" ip: "{{ your_bck_nodes_ip_2 }}" vip_hostname: "{{ your_bck_nodes_vip_hostname_2 }}" vip: "{{ your_bck_nodes_vip_2 }}" db_server_id: "{{ your_db_server_ocid_2 }}" vlan_id: "{{ your_bck_vm_net_vlan_id }}" netmask: "{{ your_bck_vm_net_netmask }}" gateway: "{{ your_bck_vm_net_gateway }}" domain_name: "{{ your_bck_vm_net_domain_name }}" wait: true register: new_vmClusterNetwork
タスク・キーワード
register
は、モジュールoci_database_vm_cluster_network
の呼出しの最後にあります。つまり、モジュールの出力がnew_vmClusterNetwork
変数に登録されます。この変数には、新しく作成されたVMクラスタ・ネットワークのすべての詳細(OCIDを含む)が含まれます。ノート:このチュートリアルでは、基礎となるExadataインフラストラクチャに2つの
db servers
が含まれているため、ネットワーク・タイプごとに2つのノード・ディクショナリのみが存在します。4つまたは8つのノードを持つVMクラスタを作成するには、ネットワーク・タイプごとに適切な数のノード・ディクショナリを指定する必要があります。 -
プレイブック
playbook_exacc_vmCluster_network_creation.yml
で、次のタスクを追加して、新しく作成されたVMクラスタ・ネットワークのOCIDを取得します。- name: Get OCID of newly created VM cluster network set_fact: your_vm_net_ocid: "{{ item.id }}" loop: - "{{ new_vmClusterNetwork.vm_cluster_network }}" loop_control: label: "{{ item.display_name }}"
-
プレイブック
playbook_exacc_vmCluster_network_creation.yml
で、次のタスクを追加して、新しく作成されたVMクラスタ・ネットワークを検証し、その構成をダウンロードします。- name: Validate VM cluster network oci_database_vm_cluster_network_actions: exadata_infrastructure_id: "{{ your_exa_infra_id }}" vm_cluster_network_id: "{{ your_vm_net_ocid }}" region: "{{ your_region }}" action: validate - name: Download network configuration file of VM cluster network oci_database_vm_cluster_network_actions: exadata_infrastructure_id: "{{ your_exa_infra_id }}" vm_cluster_network_id: "{{ your_vm_net_ocid }}" action: download_vm_cluster_network_config_file config_file_dest: "/tmp/net_config_my_vm_cluster_network.json" region: "{{ your_region }}"
-
プレイブック
playbook_exacc_vmCluster_network_creation.yml
で、次のタスクを追加して、検証の実行後に新しく作成されたVMクラスタ・ネットワークの詳細を表示します。- name: Get facts of newly created VM cluster network oci_database_vm_cluster_network_facts: exadata_infrastructure_id: "{{ your_exa_infra_id }}" vm_cluster_network_id: "{{ your_vm_net_ocid }}" region: "{{ your_region }}" register: newly_created_VM_cluster_network_facts - name: Display details of newly created VM cluster network debug: msg : "{{ newly_created_VM_cluster_network_facts.vm_cluster_networks }}"
タスク4: VMクラスタ・ネットワークをプロビジョニングするためのプレイブックの実行
-
詳細オプションを使用して、VMクラスタ・ネットワーク作成プレイブックを実行します。
ansible-playbook playbook_exacc_vmCluster_network_creation.yml -i inventory_exacc.yml -vvv
ノート:詳細オプション
-vvv
を使用すると、冗長性が向上し、プレイブックの実行中に基礎となるすべてのステップを理解するのに役立ちます。 -
数分後、
oci_database_vm_cluster_network
モジュールを正常に実行すると、次の出力が返されます。changed: [localhost] => { [...], "vm_cluster_network": { "compartment_id": "ocid1.compartment.oc1..xxx", "defined_tags": { "Oracle-Tags": { "CreatedBy": "creation_user", "CreatedOn": "2025-01-09T09:30:30.631Z" } }, "display_name": "my_vm_cluster_network_name", "dns": [ "10.109.10.2" ], "dr_scans": null, "exadata_infrastructure_id": "ocid1.exadatainfrastructure.oc1.eu-frankfurt-1.xxx", "freeform_tags": {}, "id": "ocid1.vmclusternetwork.oc1.eu-frankfurt-1.xxx", "lifecycle_details": null, "lifecycle_state": "REQUIRES_VALIDATION", "ntp": [ "10.109.10.3" ], "scans": [ { "hostname": "name_of_your-scan", "ips": [ "203.101.10.123", "203.101.10.124", "203.101.10.125" ], "port": 1521, "scan_listener_port_tcp": 1521, "scan_listener_port_tcp_ssl": 2484 } ], "time_created": "2025-01-09T09:30:30.818000+00:00", "vm_cluster_id": null, "vm_networks": [ { "domain_name": "your_client_network_domain_name", "gateway": "your_client_gateway_ip", "netmask": "your_client_netmask", "network_type": "CLIENT", "nodes": [ { "db_server_id": "ocid_of_your_1st_db_server", "hostname": "your_1st_hostname", "ip": "203.101.10.101", "lifecycle_state": "REQUIRES_VALIDATION", "vip": "203.101.10.102", "vip_hostname": "your_1st_hostname-vip" }, { "db_server_id": "ocid_of_your_2nd_db_server", "hostname": "your_2nd_hostname", "ip": "203.101.10.103", "lifecycle_state": "REQUIRES_VALIDATION", "vip": "203.101.10.104", "vip_hostname": "your_2nd_hostname-vip" } ], "vlan_id": "123" }, { "domain_name": "your_backup_network_domain_name", "gateway": "your_backup_gateway_ip", "netmask": "your_backup_netmask", "network_type": "BACKUP", "nodes": [ { "db_server_id": "ocid_of_your_1st_db_server", "hostname": "your_1st_hostname-bk", "ip": "10.108.10.3", "lifecycle_state": "REQUIRES_VALIDATION", }, { "db_server_id": "ocid_of_your_2nd_db_server", "hostname": "your_2nd_hostname-bk", "ip": "10.108.10.4", "lifecycle_state": "REQUIRES_VALIDATION", } ], "vlan_id": "456" } ] } }
タスク5: VMクラスタをプロビジョニングするためのプレイブックの作成
-
playbook_exacc_vmCluster_creation.yml
という名前のプレイブック・ファイルを次の内容で作成します。- hosts: localhost collections: - oracle.oci vars_files: - variables_exacc.yml tasks: - name: Get all existing VM cluster networks oci_database_vm_cluster_network_facts: exadata_infrastructure_id: "{{ your_exa_infra_id }}" compartment_id: "{{ your_vm_net_comp_id }}" region: "{{ your_region }}" register: get_all_vmClusterNetworks - name: Get OCID of the newly created VM cluster network set_fact: your_vm_net_ocid: "{{ item.id }}" loop: "{{ get_all_vmClusterNetworks.vm_cluster_networks }}" loop_control: label: "{{ item.display_name }}" when: item.display_name == your_vm_net_name
これらの2つのタスクは、VMクラスタの作成に必要になるため、新しく作成されたVMクラスタ・ネットワークのOCIDを取得するために使用されます。
-
VMクラスタ作成タスクをプレイブック
playbook_exacc_vmCluster_creation.yml
に追加します。- name: Create VM cluster oci_database_vm_cluster: region: "{{ your_region }}" compartment_id: "{{ your_vm_cluster_comp_id }}" display_name: "{{ your_vm_cluster_name }}" exadata_infrastructure_id: "{{ your_exa_infra_id }}" vm_cluster_network_id: "{{ your_vm_net_ocid }}" gi_version: "19.0.0.0.0" cpu_core_count: "4" ssh_public_keys: "{{ your_vm_clus_ssh_public_keys }}" time_zone: "Europe/Zurich" memory_size_in_gbs: "60" db_node_storage_size_in_gbs: "120" data_storage_size_in_tbs: "2" license_model: "{{ your_license_model }}" is_sparse_diskgroup_enabled: "false" is_local_backup_enabled: "false" data_collection_options: is_diagnostics_events_enabled: "false" is_health_monitoring_enabled: "false" is_incident_logs_enabled: "false" wait: true wait_timeout: 18000
gi_version
パラメータで現在受け入れられている値は、19.0.0.0.0
および23.0.0.0.0
です。そうしないと、次のエラーが表示されます:Cannot create VM cluster because Oracle Grid Infrastructure version is invalid. Valid versions are: [19.0.0.0.0, 23.0.0.0.0].
ノート: VMクラスタの作成には通常、最大3時間かかります。このため、
wait: true
およびwait_timeout: 18000
命令がコードに追加されます。
タスク6: プレイブックを実行してVMクラスタをプロビジョニングする
-
詳細オプションを指定してVMクラスタ作成プレイブックを実行します。
ansible-playbook playbook_exacc_vmCluster_creation.yml -i inventory_exacc.yml -vvv
ノート:詳細オプション
-vvv
を使用すると、冗長性が向上し、プレイブックの実行中に基礎となるすべてのステップを理解するのに役立ちます。 -
数分後、モジュール
oci_database_vm_cluster
を正常に実行すると、次の出力が返されます。changed: [localhost] => { [...], "vm_clusters": [ { "availability_domain": "your_availability_domain", "compartment_id": "ocid1.compartment.oc1..yyy", "cpus_enabled": 4, "data_collection_options": { "is_diagnostics_events_enabled": false, "is_health_monitoring_enabled": false, "is_incident_logs_enabled": false }, "data_storage_size_in_gbs": null, "data_storage_size_in_tbs": 2.0, "db_node_storage_size_in_gbs": 120, "db_servers": [ "ocid1.dbserver.oc1.eu-frankfurt-1.xxx", "ocid1.dbserver.oc1.eu-frankfurt-1.yyy" ], "defined_tags": { "Oracle-Tags": { "CreatedBy": "creation_user", "CreatedOn": "2025-01-09T12:40:17.201Z" } }, "display_name": "my_vm_cluster_name", "exadata_infrastructure_id": "ocid1.exadatainfrastructure.oc1.eu-frankfurt-1.xxx", "file_system_configuration_details": [ { "file_system_size_gb": 15, "mount_point": "/" }, [...], { "file_system_size_gb": 16, "mount_point": "swap" } ], "freeform_tags": {}, "gi_software_image_id": null, "gi_version": "19.24.0.0.0", "id": "ocid1.vmcluster.oc1.eu-frankfurt-1.xxx", "is_local_backup_enabled": false, "is_sparse_diskgroup_enabled": false, "last_patch_history_entry_id": null, "license_model": "your_license_model", "lifecycle_details": null, "lifecycle_state": "AVAILABLE", "memory_size_in_gbs": 60, "ocpus_enabled": null, "shape": "your_ExadataCC_shape", "ssh_public_keys": null, "system_version": "24.1.6.0.0.241115", "time_created": "2025-01-09T12:40:17.256000+00:00", "time_zone": "Europe/Zurich", "vm_cluster_network_id": "your_newly_created_vmCluster_network_OCID" } ] }
タスク7: 新しく作成されたVMクラスタの状態を確認するためのプレイブックの作成
playbook_exacc_vmCluster_post_creation_checks.yml
という名前のプレイブック・ファイルを次の内容で作成します。
- hosts: localhost
collections:
- oracle.oci
vars_files:
- variables_exacc.yml
tasks:
- name: Get newly created vmCluster facts
oci_database_vm_cluster_facts:
region: "{{ your_region }}"
compartment_id: "{{ your_vm_cluster_comp_id }}"
exadata_infrastructure_id: "{{ your_exa_infra_id }}"
display_name: "{{ your_vm_cluster_name }}"
register: output_cluster_facts
- name: Set vmCluster facts
set_fact:
your_vm_cluster_id: "{{ item.id }}"
your_vm_cluster_state: "{{ item.lifecycle_state }}"
loop: "{{ output_cluster_facts.vm_clusters }}"
loop_control:
label: "{{ item.display_name }}"
when: item.display_name == your_vm_cluster_name
- name: Check VM cluster state
debug:
msg: "The VM cluster your_vm_cluster_name is in lifecycle state your_vm_cluster_state ."
タスク8: 新しく作成されたVMクラスタの状態を確認するためのプレイブックの実行
-
詳細オプションを指定してVMクラスタ・チェック・プレイブックを実行します。
ansible-playbook playbook_exacc_vmCluster_post_creation_checks.yml -i inventory_exacc.yml -vvv
ノート:詳細オプション
-vvv
を使用すると、冗長性が向上し、プレイブックの実行中に基礎となるすべてのステップを理解するのに役立ちます。 -
数秒後、プレイブック
playbook_exacc_vmCluster_post_creation_checks.yml
を正常に実行すると、次の出力が返されます。ok: [localhost] => { "msg": "The VM cluster your_vm_cluster_name is in lifecycle state AVAILABLE." }
関連リンク
承認
- 作成者 - Flora Barriele (EMEA Cloud Lift実装テクニカル・リード- データベース)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Provision an Oracle Exadata Database Service on Cloud@Customer Virtual Machine Cluster with Ansible
G27483-01
February 2025
Copyright ©2025, Oracle and/or its affiliates.