リソースのプロビジョニング、構成および削除
クラウドのリソースを効率的にデプロイ、変更および削除するには、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.101
kubeconfig
出力には、ローカル・ホスト上のKUBECONFIG
環境変数の設定に使用できるコマンドが表示されます。ローカルホストからkubectl
CLIを使用して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