コンテンツにスキップ

デモのデプロイ

  • Terraformterraform/versions.tf に記載されたバージョン下限 — >= 1.8 — 以上。 プロバイダー定義関数と、VIP を保護する check ブロックのために必要です。
  • xcsh プロバイダー。 バージョンは一切固定されていません。.terraform.lock.hcl は gitignore されており、制約は上限のない下限のみであるため、init のたびに最新の公開 リリースが解決されます。これはプレリリースのプロジェクトとして意図的なものです。デモは、 プロバイダーのリグレッションを隠す古いバージョンに留まるのではなく、そのリグレッションで 失敗すべきです。
  • var.expected_xc_tenant のテナント向けの F5 XC API 資格情報XCSH_API_TOKEN としてエクスポートします(または P12/PEM のペア)。エクスポートするのは資格情報のみで、 URL は決してエクスポートしないでください — 下記を参照。
  • リソースグループ、VNet、Route Server、VM を作成する権限を持つ Azure 資格情報
  • アプリ層向けの 既存の F5 XC 名前空間。デプロイはそれを読み取るだけで、作成も破棄も しないため、無関係なデモを保持している名前空間がこのスタックの destroy 対象リストに 含まれることはありません。

デフォルト値のない 2 つの値を指定する

Section titled “デフォルト値のない 2 つの値を指定する”

その他のすべての変数には動作するデフォルト値があり、すべてのオブジェクト名は var.component から導出されます。2 つだけが意図的にデフォルトなしとされています。

Terminal window
cd terraform
cp terraform.tfvars.example terraform.tfvars
変数デフォルトがない理由
origin_ipどんなデフォルトも特定の 1 台のマシンを指します。古い値は、失敗する代わりに新しいデプロイのトラフィックを他人のホストへ送ってしまいます。
lb_domainロードバランサーは Host でマッチするため、これはすべてのリクエストが送信しなければならない値です。デプロイを実行する人に属する値です。

どちらも形式が検証されるため、タイプミスはデモではなくプランの段階で失敗します。

terraform.tfvars は gitignore されており、その状態を維持しなければなりません。 サブスクリプション ID とエンジニアごとの値を含んでいるためです。

テナントは構成であり、シェルがエクスポートしている値ではありません

Section titled “テナントは構成であり、シェルがエクスポートしている値ではありません”

var.expected_xc_tenant がテナントを指定し、テナントが指定される場所はここだけです。 providers.tf はこれから xcsh プロバイダーの api_url を導出し、環境の XCSH_API_URL を意図的に上書きします。また terraform/main.tfpostcondition は、 環境が別のテナントを指定している場合に plan を失敗させます。

状態を変更するものを実行せずに、どちらの値も読み取れます。

Terminal window
terraform output -raw xc_tenant # what the deployment targets
terraform output -raw xc_env_tenant # what your shell claims — diagnostic only
f5-sales-demo
f5-sales-demo
  1. 初期化します。 バックエンド構成はコミットされていません。自身のものを指定してください。

    Terminal window
    terraform init -backend-config=backend.hcl
  2. 最初の apply。 これにより Azure、CE サイト、登録トークンが構築され、CE が起動します。

    Terminal window
    terraform apply
  3. CE が登録された後に再度 apply します。 これは省略できません。その理由は、自分で 発見するものではなく以下に記載してあります。

    Terminal window
    terraform apply

その後、誰かに見せる前に 正常性を証明する に進んでください。

登録承認は自動化されていますが、apply は依然として 2 段階です

Section titled “登録承認は自動化されていますが、apply は依然として 2 段階です”

登録承認にコンソールでの人手は不要になりました。xcsh_registration_approval リソースが それを実行し、サイトモジュールがどの登録を承認するかを解決します。

それでもデプロイが一度の手放し apply になるわけではなく、その理由は、最初の実行を見て 失敗したと結論づける前に理解しておく価値があります。

  • CE の登録オブジェクトの名前は r-<uuid> です。サイト名に由来する名前が付くことは 決してないため、プラン時点で名前を予測できるものはありません。
  • 登録は、VM が起動して vpm が登録を行った後にのみ存在します。
  • したがって 最初の apply では承認がまったく計画されません。CE が登録された後に 再度 apply すると、承認が作成されます。

terraform/main.tf はこの順序をファイル冒頭に記載しており、それが正式版です。 デプロイ手順は、それを実装するコードと共に存在します。

オペレーター SSH は構築時の決定事項です

Section titled “オペレーター SSH は構築時の決定事項です”

デプロイは、ログインシェルが Site CLI であるアプライアンスの admin アカウントに オペレーターキーを書き込みます。これは cloud-init の write_files によって書き込まれ、 初回起動時に一度だけ実行されます。

Terminal window
terraform destroy

アプリの名前空間は残ります。読み取られるだけで管理されないため、destroy が無関係なデモを 保持している名前空間を一緒に削除することはできません。リソースグループ内のそれ以外の すべては削除されます。