4

クラウド サービスを強化する DC で VM の作成と削除を自動化することを計画しています。このサービスは、すべての新規顧客が専用の VM (少なくとも 3 つ) を取得できるようになっているため、VM の数は増え続けています。すでに ESXi で実行されている約 2000 の VM があります。terraform を採用する前に解決すべき 2 つの問題があります。

  1. 既存の VM を移行して Terraform で管理するにはどうすればよいでしょうか (または移行すべきでしょうか)。 リソース仕様の生成はスクリプト化できますが、何も影響を受けないように計画を検証することは困難です。VM の量とそれらがすべて稼働中であるという事実を考えると、エンジニアには余分なプレッシャーがかかります。

  2. VM の数が増えると、ディスク上の .tf ファイルの数も増え続けます。複数の VM を 1 つのファイルにまとめることはできますが、個々の VM をプログラムで削除するのは少し面倒です。ファイルを複数のディレクトリに分割することは、私が考えることができる簡単な回避策ですが... テラフォームでスケールを処理するより良い方法はありますか?

これらの問題について議論しているブログを見つけることができなかったので、ここで実際の経験からのアドバイスを探しています。

4

1 に答える 1

4

コミュニティが Stack Overflow で Terraform 関連の質問をどんどん出し始めているのを見るのは良いことです。

ご質問について:

  1. 既存の VM を Terraform で管理するように移行するということは、tfstate ファイルを更新することを意味します。現時点では、既に作成されたリソースのリソース定義を作成し、それを状態ファイルに自動的に配置する方法はありません ( Terraformingのようなツールはありますが、AWS リソースに対してのみ部分的に実行します)。そのため、リソースを*.tfファイルに記述し、tfstate ファイルを手動で更新してから、適用する必要がある変更がないことをtfstate == tf実行して確認する必要があります。terraform plantfstateファイルに正確に何を入れるかについて-最初にリソース定義を作成し、次にそれに基づいてtfダミーVM( )を作成し、更新されたファイルで関連するオブジェクトを見つけ、それらのダミー値をそのVMの実際の値で更新することをお勧めしますterraform applytfstatetfstateserialファイル (ローカル/リモート状態の不一致エラーを防ぐためにも更新する必要があります)。

  2. ディレクトリごとにグループ化する以外に、大量の関連リソースを処理するよりスマートな方法を知りません。そのようにして、論理的に分離された特定のディレクトリに対してのみ計画/適用を実行できますが、状態ファイルを分離する必要があります。それは簡単にやり過ぎかもしれません (警告のようなものなので、自宅で試してはいけません)。

ほとんどの場合、Terraform を使用する場合 (特に大量のリソースを使用する場合) に留意するこれらの提案があります。

  1. コードを編成して、1 つの場所にモジュールを配置し、別の場所でそれらにパラメーターを渡します。コードの再利用性、または現在の呼び出し方法:)
  2. terraform planterraform apply-targetなどのコマンドでフラグを使用して、アクセスするリソースを制限します。

それが役に立てば幸い!そして、より多くの人がTerraformを楽しむようになります。

于 2015-12-06T12:49:12.000 に答える