リモート状態およびワークスペース間アクセス

IBM Cloud® は、Terraform の組み込み リモート状態 管理を提供します。 Terraform 状態ファイルは、実行と実行の間は自動的に保持され、 IBM Cloud® コマンドおよび操作によってアクセスできます。 IBM Cloud® リモート状態管理により、チームの作業およびワークスペースの共有操作が可能になります。組み込み状態のロックにより、同じ状態ファイルに対する同時操作が防止されます。

組み込みワークスペースのリモート状態管理は、いくつかの Schematics ユース・ケースをサポートします。

  • ワークスペース間でのリソース情報の共有。 これにより、インフラストラクチャーをより小さなコンポーネントに分割し、 Schematics リモート状態データ・ソースを使用して、環境間で読み取り専用のリソース情報を渡すことができます。 データ・ソースによってリンクされた個別の環境では、インフラストラクチャーのさまざまな要素に対する責任を、読み取り専用リソースとしてワークスペース間で共有される情報を使用して、さまざまなチームに委任することができます。
  • ワークスペース操作とアクション操作の 「アクション」 との統合。 ワークスペース・リソース情報は、手動でホスト・インベントリーを作成したり、インベントリー・スクリプトを使用したりすることなく、 Ansible 動的インベントリー として直接渡すことができます。

ワークスペースの状態および出力へのアクセス

ibm_schematics_output および ibm_schematics_state データ・ソースを使用して、アカウント内の他のワークスペースから、ワークスペースで管理するリソースに関する情報にアクセスできます。

IBM Cloud® は、 local 組み込み Terraform 状態サポートを使用し、Terraform バックエンド ・サポートを使用しません。 IBM Cloud® のリモート状態管理を有効にするために、 Terraform configs 内で追加の構成を行う必要はありません。 Schematics は Terraform remote_state データ・ソースを使用しません。代わりに、 ibm_schematics_output データ・ソースを使用して情報にアクセスします。

ibm_schematics_state データソースは remote_state データソースとどう違うのですか?
remote_state データソースを使用する場合は、ワークスペースに接続するバックエンドを構成する必要があります。 ibm_schematics_state データソースを使用すると、自動的に組み込みの Schematics バックエンドにアクセスでき、ワークスペース情報に直接アクセスできます。

他のワークスペースのリソース情報にアクセスするにはどうすればよいですか?
remote_state データ・ソースと同様、Terraform テンプレートで出力値として構成した情報にのみアクセスできます。 例えば、VPC をプロビジョンするために使用したワークスペースがあるとします。 この VPC ID にアクセスするには、Terraform 構成ファイルでこの ID を出力変数として定義しなければなりません。

ibm_schematics_output データ・ソースを使用するには、次のようにします

  1. 入門チュートリアルの 例に従って、 Schematics ワークスペースを作成し、VPC 内で仮想サーバーをプロビジョニングします。 手順に従い、vpc.tf Terraform 構成ファイルの最後で定義されている出力変数を確認します。

    もしすでに別のTerraform設定ファイルをワークスペースの1つで使っているのであれば、このワークスペースを演習に使うことができます。 この例で取り上げられている出力値を構成ファイルに追加し、後ほどワークスペース情報にアクセスできるようにします。

    output sshcommand {
        value = "ssh root@ibm_is_floating_ip.fip1.address"
    }
    
    output vpc_id {
    value = ibm_is_vpc.vpc.id
    }
    

    この例では 2 つの出力値、つまり VPC で仮想サーバー・インスタンスにアクセスする sshcommandvpc_id が定義されています。

  2. 作成した VPC ワークスペースの ID を取得します。

    コンソールを使用する場合:

    • ワークスペース・ダッシュボード 外部リンク・アイコンから、VPC ワークスペースを選択します。
    • **「設定」**タブを選択します。
    • **「サマリー」**セクションでワークスペース ID を確認します。

    CLI を使用する場合:

    • アカウントで使用できるワークスペースをリスト表示します。
      ibmcloud schematics workspace list
      
    • コマンド・ライン出力の ID 列でワークスペース ID を確認します。

    Schematics ibmcloud terraform コマンドを使用すると、 エイリアス 'terraform' が非推奨であるため、警告と非推奨メッセージが表示されます。 コマンドには'schematics'または'sch'を使う。

  3. remotestate.tf データ・ソースを使用して vpc.tf ファイルの出力パラメーターにアクセスするため、ibm_schematics_output という名前の Terraform 構成ファイルをもう 1 つ作成します。 このファイルのバージョン管理を行えるようにするには、この構成ファイルを GitHub リポジトリーまたは GitLab リポジトリーに格納します。

    data "ibm_schematics_workspace" "vpc" {
        workspace_id = "<schematics_workspace_ID>"
    }
    
    data "ibm_schematics_output" "vpc" {
        workspace_id = "<schematics_workspace_ID>"
        template_id = data.ibm_schematics_workspace.vpc.runtime_data.0.id
    }
    
    output "output_vars" {
        value = data.ibm_schematics_output.vpc.output_values
    }
    
    output "ssh_command" {
        value = data.ibm_schematics_output.vpc.output_values.sshcommand
    }
    
    output "vpc_id" {
        value = data.ibm_schematics_output.vpc.output_values.vpc_id
    }
    
    構成ファイルのコンポーネント
    アイデア・アイコン 構成ファイルの構成要素について
    data.ibm_schematics_workspace.workspace_id アクセスする出力値が定義されている VPC ワークスペースの ID を入力します。 このデータ・ソースは、ibm_schematics_output データ・ソース内のワークスペースのテンプレート ID を取得するために必要です。
    data.ibm_schematics_output.workspace_id アクセスする出力値が定義されている VPC ワークスペースの ID を入力します。
    data.ibm_schematics_output.template_id ワークスペースの Terraform テンプレートを参照するには、data.ibm_schematics_workspace.vpc.runtime_data.0.id を入力します。
    output.output_vars.value ibm_schematics_output データ・ソースの output_values 出力パラメーターを使用して vpc.tf ファイルに定義したすべての出力値にアクセスするには、Terraform 補間構文を使用します。 output_values 出力パラメーターは、すべての出力値をリストとして返します。
    output.sshcomand.value および output.vpc_id.value ibm_schematics_output データ・ソースに出力値の ID を追加すると、output_values リスト内の特定の値にアクセスできます。 例えば、vpc_id にアクセスするには、単に data.ibm_schematics_output.vpc.output_values.vpc_id を使用します。
  4. ワークスペースの作成。GitHub または GitLab リポジトリー内の remotestate.tf ファイルを指します。 代わりにローカル・マシンからテープ・アーカイブ・ファイル (.tar) をアップロードする場合は、ibmcloud schematics workspace upload コマンドを使用します。

  5. Schematics で Terraform コードを実行します。 ログを調べると、Output セクションで VPC ワークスペースの出力値を確認できます。

    出力例

    ...
    2020/02/21 19:49:30 Terraform show | Outputs:
    2020/02/21 19:49:30 Terraform show |
    2020/02/21 19:49:30 Terraform show | Output_vars = {
    2020/02/21 19:49:30 Terraform show |   sshcommand = ssh root@169.61.225.111
    2020/02/21 19:49:30 Terraform show |   vpc_id = a1a11aa1-a111-a11a-a111-aa1aa11a1a1a
    2020/02/21 19:49:30 Terraform show | }
    2020/02/21 19:49:30 Terraform show | sshcommand = ssh root@169.61.225.111
    2020/02/21 19:49:30 Terraform show | vpc_id = a1a11aa1-a111-a11a-a111-aa1aa11a1a1a