- ホーム
- マルチクラウドネットワーク
- Multi-cloud networking CE-HA demo
- デモのデプロイ
デモのデプロイ
- Terraform は
terraform/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 つだけが意図的にデフォルトなしとされています。
cd terraformcp 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.tf の postcondition は、
環境が別のテナントを指定している場合に plan を失敗させます。
状態を変更するものを実行せずに、どちらの値も読み取れます。
terraform output -raw xc_tenant # what the deployment targetsterraform output -raw xc_env_tenant # what your shell claims — diagnostic onlyf5-sales-demof5-sales-demo-
初期化します。 バックエンド構成はコミットされていません。自身のものを指定してください。
Terminal window terraform init -backend-config=backend.hcl -
最初の apply。 これにより Azure、CE サイト、登録トークンが構築され、CE が起動します。
Terminal window terraform apply -
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 によって書き込まれ、
初回起動時に一度だけ実行されます。
terraform destroyアプリの名前空間は残ります。読み取られるだけで管理されないため、destroy が無関係なデモを
保持している名前空間を一緒に削除することはできません。リソースグループ内のそれ以外の
すべては削除されます。