リソースのプロビジョニング、構成および削除
クラウドのリソースを効率的にデプロイ、変更および削除するには、Terraformを使用します。
Terraform状態ファイルについて
Terraformには、管理インフラストラクチャ・リソースを追跡し、デプロイされたリソースを構成にマップし、メタデータを追跡し、大規模なインフラストラクチャ・デプロイメントのパフォーマンスを向上させるために、状態情報が格納されます。
デフォルトでは、terraform.tfstateファイルはローカル・ホストに格納されます。このデフォルトの動作は、複数のユーザーが特定の構成で定義されているリソースを作成および破棄する必要があるIT環境では最適ではありません。マルチ・ユーザー環境でのリソースのデプロイおよび管理を制御するには、Terraform状態ファイルをOracle Cloud Infrastructure Object Storageに格納し、すべてのユーザー間で状態ファイルおよびロック・ファイルを共有します。
リソースの作成
terraform.tfvarsファイルで変数を設定した後、Terraform CLIを使用して、Terraform構成で定義されたリソースをデプロイします。
Apply complete! Resources: 33 added, 0 changed, 0 destroyed.
Outputs:
admin_private_ip = 10.0.1.10
bastion_public_ip = 203.0.113.101
kubeconfig = export KUBECONFIG=generated/kubeconfig
ocirtoken = <sensitive>
ssh_to_admin = ssh -i /home/joe/.ssh/id_rsa -J opc@203.0.113.101 opc@10.0.1.10
ssh_to_bastion = ssh -i /home/joe/.ssh/id_rsa opc@203.0.113.101kubeconfig出力には、ローカル・ホスト上のKUBECONFIG環境変数の設定に使用できるコマンドが表示されます。ローカルホストからkubectlCLIを使用してKubernetesクラスタを管理する場合は、このコマンドを実行します。このコマンドでは、KUBECONFIGをgenerated/kubeconfigファイルに設定します。このファイルは、Terraformによって構成の適用時に作成されます。ssh_to_admin出力には、管理ホストへの接続に使用できるsshコマンドが表示されます。ssh_to_bastion出力には、ベース・ホストへの接続に使用できるsshコマンドが表示されます。
注意:
terraform outputコマンドを実行して、このTerraform出力をいつでも表示できます。管理ホストにリソースの管理を許可
管理ホストがコンパートメント内のリソースを管理できるようにするには、管理ホストをインスタンス・プリンシパルとして指定します。CLIコマンドを実行する場合、または管理ホストからAPIコールを作成してトポロジ内のリソースを管理する場合は、この機能を使用します。
注意:
SSHを使用してコンピュート・インスタンスに接続できるユーザーは、インスタンスに付与されているインスタンス権限を継承します。管理ホストをインスタンス・プリンシパルとして指定するかどうかを決定する際には、このことを考慮してください。この機能は、管理ホストに影響を及ぼすことなく、いつでもオフまたは有効にできます。-
管理ホストをインスタンス・プリンシパルとして指定するには、
terraform.tfvarsで次のように設定し、terraform applyを実行します。admin_instance_principal = true管理ホストは動的グループのメンバーになり、動的グループがコンパートメント内のすべてのリソースを管理できるようにポリシー文が作成されます。
-
管理ホストからインスタンス・プリンシパル権限を取り消すには、次のように
terraform.tfvarsを設定してからterraform applyを実行します。admin_instance_principal = false
Bastionホストでの通知の有効化または無効化
Oracle Cloud Infrastructure通知サービスは、更新が適用されたとき、またはOracle Kspliceが既知の検出を試みたときに、ベース・ホストからステータス・メッセージを受信する際に使用できます。
注意:
このソリューションのTerraformコードは、デフォルトのOracle Autonomous Linuxイメージを使用する場合のみ通知を構成します。-
ベース・ホストに対して通知を有効にするには、
terraform.tfvarsで次の変数を設定します。bastion_notification_enabled = true bastion_notification_endpoint = "email_address" bastion_notification_protocol = "EMAIL" bastion_notification_topic = "topic_name"次に、通知関連の変数が定義された
terraform.tfvarsの例を示します。bastion_notification_enabled = true bastion_notification_endpoint = "joe@example.com" bastion_notification_protocol = "EMAIL" bastion_notification_topic = "bastion" - ベース・ホストがすでに作成されており、今すぐ通知を有効にする場合は、これらの変数を設定し、
terraform applyを再度実行します。- 必要なポリシーは、ベース・ホストが通知を公開できるように定義されます。
- 通知トピックが作成され、指定したEメール・アドレスがトピックに登録されます。
- ベース・ホストは通知を送信するように構成されています。
リソースが作成されると、サブスクリプションの確認を求める電子メールが届きます。
-
通知を無効化するには、
terraform.tfvarsで次のように設定し、terraform applyを実行します。bastion_notification_enabled = false admin_notification_enabled = false