IBM Cloud Docs
ホスト接続スクリプトによって Terraform の状態変更がトリガーされるのはなぜですか?

ホスト接続スクリプトによって Terraform の状態変更がトリガーされるのはなぜですか?

更新されたホスト・スクリプトを自分の場所にダウンロードします。このスクリプトは毎年実行する必要があります。そうしないと、 スクリプトの有効期限が切れます。 Terraform スクリプトを使用して Satellite のロケーションとホストを管理する場合、更新されたホスト・スクリプトでは、既存のすべてのホストを更新し、それらを新しいホストに置き換える必要があります。

attach-host スクリプトでは、少なくとも年に 1 回更新する必要があります。 更新されたスクリプトは、Terraform の状態変更と見なされ、クラスターまたはロケーション・コントロール・プレーンに接続されているホストも含めて、すべてのホストの更新要件をトリガーします。 attach-host スクリプトの更新について詳しくは、 unassigned ホストが応答しない状況になるのはなぜですか? を参照してください。

この問題を解決するには、Terraform スクリプトを更新して、ホスト・インスタンスを作成または変更するスクリプトの引数の例を以下に示します。 <host-script> を、 attach-host スクリプトをホスト・インスタンスに提供するために使用したフィールド名に置き換えます。

  lifecycle {
    ignore_changes = [
      <host-script>,
    ]
  }

例えば、 Azure Terraform スクリプトで、 instance.tf ファイルを編集し、 <host-script>custom_data に置き換えます。これは、 azurerm_linux_virtual_machine リソースによって定義されたフィールドの名前です。

  lifecycle {
    ignore_changes = [
      custom_data,
    ]
  }

このコードを追加すると、ロケーションに現在接続されているホストのうち、「未割り当て」状態のホストが含まれているものは、Terraform スクリプトによって無視されます。 ロケーションに接続するすべての新規ホストは、更新されたアタッチ・スクリプトを使用します。