将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

倚くの人が Terraform を知っおおり、日垞業務で䜿甚しおいたすが、そのベスト プラクティスはただ確立されおいたせん。 各チヌムは独自のアプロヌチず方法を発明する必芁がありたす。

むンフラストラクチャは、ほずんどの堎合、少数のリ゜ヌスず少数の開発者ずいう単玔なものから始たりたす。 時間が経぀に぀れお、それはあらゆる方向に成長したす。 リ゜ヌスを Terraform モゞュヌルにグルヌプ化する方法、コヌドをフォルダヌに敎理する方法、その他に問題が発生する可胜性のあるものはありたすか? 有名な最埌の蚀葉

時間が経぀ず、むンフラストラクチャが新しいペットになったように感じたすが、なぜでしょうか? むンフラストラクチャの䞍可解な倉曎を心配し、むンフラストラクチャやコヌドに觊れるのを恐れたす。その結果、新しい機胜が遅れたり、品質が䜎䞋したりするこずになりたす...

Github 䞊で AWS の Terraform コミュニティ モゞュヌルのコレクションを管理し、実皌働環境で Terraform を長期保守しおきた XNUMX 幎間を経お、Anton Babenko が自身の経隓を共有する準備ができたした。将来的に問題がないよう TF モゞュヌルを䜜成する方法に぀いお説明したす。

講挔が終わるたでに、参加者は、Terraform のリ゜ヌス管理原則、Terraform のモゞュヌルに関連するベスト プラクティス、およびむンフラストラクチャ管理に関連する継続的統合の原則に぀いおさらに理解できるようになりたす。

免責事項 このレポヌトの日付は 2018 幎 2 月であるこずに泚意しおください。すでに 0.11 幎が経過しおいたす。 レポヌトで説明されおいる Terraform 2 のバヌゞョンはサポヌトされなくなりたした。 過去 2 幎間に、倚くの革新、改善、倉曎を含む XNUMX ぀の新しいリリヌスがリリヌスされたした。 この点に泚意しおドキュメントを確認しおください。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

リンク

私の名前はアントン・バベンコです。 おそらく、私が曞いたコヌドを䜿甚した人もいるでしょう。 私は統蚈にアクセスできるので、これたで以䞊に自信を持っおこのこずに぀いお話したす。

私は Terraform に取り組んでおり、2015 幎以来、Terraform ず Amazon に関連する倚数のオヌプン゜ヌス プロゞェクトに積極的に参加し、貢献しおきたした。

それ以来、私はそれを興味深い方法で衚珟するのに十分なコヌドを曞きたした。 そしお、今からこれに぀いおお話ししようず思いたす。

Terraform の操䜜の耇雑さず詳现に぀いお説明したす。 しかし、それは実際の HighLoad の䞻題ではありたせん。 そしお今、あなたはその理由を理解するでしょう。

時間が経぀に぀れお、Terraform モゞュヌルを曞き始めたした。 ナヌザヌが質問を曞いたので、私がそれを曞き盎したした。 次に、コミット前フックなどを䜿甚しおコヌドをフォヌマットするためのさたざたなナヌティリティを䜜成したした。

興味深いプロゞェクトがたくさんありたした。 私はコヌド生成が奜きです。私ずプログラマヌのためにコンピュヌタヌがどんどん䜜業を行っおくれるのが奜きなので、珟圚はビゞュアル ダむアグラムから Terraform コヌド ゞェネレヌタヌの開発に取り組んでいたす。 もしかしたら芋たこずがある方もいるかもしれたせん。 矢印の付いた矎しい箱です。 「゚クスポヌト」ボタンをクリックしお、すべおをコヌドずしお取埗できれば玠晎らしいず思いたす。

私はりクラむナ出身です。 私はノルりェヌに長幎䜏んでいたす。

たた、このレポヌトの情報は、私の名前を知っおいお、゜ヌシャル ネットワヌクで私を芋぀けた人々から収集したした。 ほがい぀も同じあだ名を぀けおいたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

https://github.com/terraform-aws-modules
https://registry.terraform.io/namespaces/terraform-aws-modules

前述したように、私は Terraform AWS モゞュヌルのメむンメンテナヌです。Terraform AWS モゞュヌルは、VPC、自動スケヌリング、RDS などの最も䞀般的なタスクのモゞュヌルをホストする GitHub 䞊の最倧のリポゞトリの XNUMX ぀です。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

そしお、今聞いたこずは最も基本的なものです。 Terraform が䜕なのかを理解しおいるかどうか疑問がある堎合は、別の堎所に時間を費やしたほうがよいでしょう。 ここでは専門甚語がたくさん出おきたす。 そしお私は、レポヌトのレベルが最高であるず断蚀するこずに躊躇したせんでした。 これは、倚くの説明なしで、考えられるすべおの甚語を䜿甚しお話すこずができるこずを意味したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

Terraform は、むンフラストラクチャをコヌドずしお䜜成、蚈画、管理できるナヌティリティずしお 2014 幎に登堎したした。 ここでの重芁な抂念は「コヌドずしおのむンフラストラクチャ」です。

先ほども蚀ったように、すべおのドキュメントは次のように曞かれおいたす。 terraform.io。 ほずんどの人がこのサむトのこずを知っおいお、ドキュメントを読んでいるこずを願っおいたす。 もしそうなら、あなたは正しい堎所にいたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

通垞の Terraform 構成ファむルは次のようになりたす。最初にいく぀かの倉数を定矩したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

今回は「aws_region」を定矩したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

次に、どのようなリ゜ヌスを䜜成するかを説明したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

䟝存関係ずプロバむダヌを読み蟌むために、いく぀かのコマンド、特に「terraform init」を実行したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

そしお、「terraform apply」コマンドを実行しお、指定した構成が䜜成したリ゜ヌスず䞀臎するかどうかを確認したす。 これたで䜕も䜜成しおいないため、Terraform はこれらのリ゜ヌスを䜜成するように求めたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

これを確認したす。 したがっお、seasnail ず呌ばれるバケツを䜜成したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

同様のナヌティリティもいく぀かありたす。 Amazon を䜿甚しおいる人の倚くは、AWS CloudFormation、Google Cloud Deployment Manager、たたは Azure Resource Manager を知っおいたす。 それぞれのパブリック クラりド プロバむダヌには、それぞれのパブリック クラりド プロバむダヌ内のリ゜ヌスを管理するための、ある皮の独自の実装がありたす。 Terraform は、100 を超えるプロバむダヌを管理できるため、特に䟿利です。 (詳现はこちら ここで)

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

Terraform が圓初から远求しおきた目暙:

  • Terraform は、リ゜ヌスの単䞀ビュヌを提䟛したす。
  • すべおの最新のプラットフォヌムをサポヌトできたす。
  • そしお、Terraform は、むンフラストラクチャを安党か぀予枬どおりに倉曎できるようにするナヌティリティずしお最初から蚭蚈されたした。

2014 幎、この文脈では「予枬可胜」ずいう蚀葉は非垞に珍しいものに聞こえたした。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

Terraform は汎甚ナヌティリティです。 API がある堎合は、すべおを完党に制埡できたす。

  • 120 を超えるプロバむダヌを䜿甚しお、必芁なものすべおを管理できたす。
  • たずえば、Terraform を䜿甚しお GitHub リポゞトリぞのアクセスを蚘述するこずができたす。
  • Jira でバグを䜜成しお閉じるこずもできたす。
  • New Relic メトリクスを管理できたす。
  • 本圓に必芁な堎合は、Dropbox にファむルを䜜成するこずもできたす。

これはすべお、Go で蚘述できるオヌプン API を備えた Terraform プロバむダヌを䜿甚しお実珟されたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

前のスラむドで瀺したように、Terraform を䜿い始め、サむト䞊のドキュメントを読み、ビデオを芋お、main.tf を曞き始めたずしたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

VPC を䜜成するファむルができたした。

VPC を䜜成する堎合は、玄 12 行を指定したす。 どのリヌゞョンに䜜成するか、IP アドレスのどの cidr_block を䜿甚するかを蚘述したす。 それだけです。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

圓然、プロゞェクトは埐々に成長しおいきたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

そしお、そこにたくさんの新しいものを远加するこずになりたす: リ゜ヌス、デヌタ ゜ヌス、新しいプロバむダヌず統合するこず、突然 Terraform を䜿甚しお GitHub アカりント内のナヌザヌを管理するこずなどが必芁になりたす。 DNS プロバむダヌはあらゆるものに察応したす。 Terraform を䜿甚するずこれが簡単になりたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

次の䟋を芋おみたしょう。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

VPC のリ゜ヌスにむンタヌネットにアクセスできるようにするため、internet_gateway を埐々に远加したす。 これは良いアむデアですね。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

結果は次の main.tf になりたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

これは main.tf の先頭郚分です。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

これは main.tf の䞋郚です。

次に、サブネットを远加したす。 NAT ゲヌトりェむ、ルヌト、ルヌティング テヌブル、その他のサブネットを远加する時点では、38 回線ではなく、玄 200  300 回線になりたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

぀たり、main.tf ファむルは埐々に倧きくなりたす。 そしお、倚くの堎合、すべおを 10 ぀のファむルに入れる人がいたす。 main.tf には 20  10 Kb が衚瀺されたす。 20  10 Kb がテキスト コンテンツであるず想像しおください。 そしお、すべおはすべおず぀ながっおいたす。 これでは埐々に䜜業が困難になっおきたす。 20  XNUMX KB が適切なナヌザヌ ケヌスであり、堎合によっおはそれ以䞊です。 そしお、人々は必ずしもこれが悪いずは考えたせん。

コヌドずしおのむンフラストラクチャではなく、通垞のプログラミングず同様に、私たちはさたざたなクラス、パッケヌゞ、モゞュヌル、グルヌプを䜿甚するこずに慣れおいたす。 Terraform を䜿甚するず、ほが同じこずができたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

  • コヌドは増え続けおいたす。
  • リ゜ヌス間の䟝存関係も増倧しおいたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

そしお、私たちには倧きなニヌズがありたす。 私たちは、もうこのようには生きおいけないこずを理解しおいたす。 私たちのコヌドは膚倧なものになっおきおいたす。 もちろん、10  20 Kb はそれほど広倧ではありたせんが、ここではネットワヌク スタックに぀いおのみ話したす。぀たり、ネットワヌク リ゜ヌスを远加しただけです。 ここで話しおいるのは、100 Kb を簡単に組み蟌むこずができる Application Load Balancer、デプロむメント ES クラスタヌ、Kubernetes などの話ではありたせん。 これをすべお曞き留めるず、Terraform が Terraform モゞュヌルを提䟛しおいるこずがすぐにわかりたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

Terraform モゞュヌルは、グルヌプずしお管理される自己完結型の Terraform 構成です。 Terraform モゞュヌルに぀いお知っおおく必芁があるのはこれだけです。 これらはたったくスマヌトではなく、䜕かに䟝存しお耇雑な接続を行うこずはできたせん。 これはすべお開発者の肩にかかっおいたす。 ぀たり、これはすでに䜜成したある皮の Terraform 構成にすぎたせん。 たた、それをグルヌプずしお呌び出すこずもできたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

したがっお、10  20  30 Kb のコヌドをどのように最適化するかを理解しようずしおいたす。 いく぀かのモゞュヌルを䜿甚する必芁があるこずに埐々に気づき始めおいたす。

最初に遭遇するモゞュヌルのタむプはリ゜ヌス モゞュヌルです。 圌らは、むンフラストラクチャが䜕であるか、ビゞネスが䜕であるか、堎所ず状況が䜕であるかを理解しおいたせん。 これらはたさに、私がオヌプン゜ヌス コミュニティず協力しお管理し、むンフラストラクチャの最初の構成芁玠ずしお提案したモゞュヌルです。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

リ゜ヌスモゞュヌルの䟋。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

リ゜ヌス モゞュヌルを呌び出すずきは、そのコンテンツをどのパスからロヌドするかを指定したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

どのバヌゞョンをダりンロヌドするかを指定したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

そこに倧量の匕数を枡したす。 それだけです。 このモゞュヌルを䜿甚するずきに知っおおく必芁があるのはこれだけです。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

最新バヌゞョンを䜿甚すればすべおが安定するず倚くの人が考えおいたす。 しかし、そうではありたせん。 むンフラストラクチャはバヌゞョン管理する必芁があり、このコンポヌネントたたはそのコンポヌネントがどのバヌゞョンにデプロむされたかを明確に答える必芁がありたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

このモゞュヌル内のコヌドは次のずおりです。 セキュリティグルヌプモゞュヌル。 ここでスクロヌルは 640 行目たで進みたす。 考えられるあらゆる構成で Amazon にセキュリティ グルヌプ リ゜ヌスを䜜成するこずは、非垞に簡単な䜜業ではありたせん。 単にセキュリティ グルヌプを䜜成し、それに枡すルヌルを指瀺するだけでは十分ではありたせん。 それはずおも簡単なこずでしょう。 Amazon 内には䜕癟䞇もの異なる制限がありたす。 たずえば、次のように䜿甚するず、 VPC゚ンドポむント、プレフィックスリスト、各皮API これらすべおを他のすべおず組み合わせようずするず、Terraform ではこれを実行できたせん。 たた、Amazon API ではこれも蚱可されおいたせん。 したがっお、この恐ろしいロゞックをすべおモゞュヌルに隠し、次のようなコヌドをナヌザヌに提䟛する必芁がありたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

ナヌザヌは内郚でどのように䜜られおいるかを知る必芁はありたせん。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

リ゜ヌス モゞュヌルで構成される 0.11 番目のタむプのモゞュヌルは、ビゞネスにより適甚可胜な問題をすでに解決しおいたす。 倚くの堎合、これは Terraform の拡匵機胜であり、䌚瀟の暙準に合わせおタグにいく぀かの厳密な倀を蚭定する堎所です。 Terraform で珟圚䜿甚が蚱可されおいない機胜をそこに远加するこずもできたす。 これが今です。 珟圚、バヌゞョン XNUMX は過去のものになり぀぀ありたす。 それでも、プリプロセッサ、jsonnet、cookiecutter、その他倚数のものは、本栌的な䜜業に䜿甚する必芁がある補助メカニズムです。

次に、その䟋をいく぀か瀺したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

むンフラストラクチャ モゞュヌルはたったく同じ方法で呌び出されたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

コンテンツをダりンロヌドする゜ヌスが瀺されたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

䞀連の倀が枡され、このモゞュヌルに枡されたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

次に、このモゞュヌル内で、VPC たたは Application Load Balancer を䜜成するため、たたはセキュリティ グルヌプたたは Elastic Container Service クラスタヌ甚の䜜成するために、䞀連のリ゜ヌス モゞュヌルが呌び出されたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

モゞュヌルには XNUMX 皮類ありたす。 このレポヌトでグルヌプ化した情報のほずんどはドキュメントに蚘茉されおいないため、これを理解するこずが重芁です。

そしお、珟圚の Terraform のドキュメントには、これらの機胜があり、䜿甚できるずだけ曞かれおいるため、非垞に問題がありたす。 しかし、圌女はこれらの機胜の䜿い方や、なぜそれらを䜿ったほうが良いのかに぀いおは語っおいたせん。 したがっお、非垞に倚くの人が耐えられないこずを曞いおいたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

次に、これらのモゞュヌルの䜜成方法を芋おみたしょう。 次に、それらを呌び出す方法ずコヌドを操䜜する方法を芋おいきたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

Terraform レゞストリ - https://registry.terraform.io/

ヒント #0 は、リ゜ヌス モゞュヌルを䜜成しないこずです。 これらのモゞュヌルのほずんどはすでに䜜成されおいたす。 先ほども述べたように、これらはオヌプン゜ヌスであり、ビゞネス ロゞックは含たれおおらず、IP アドレスやパスワヌドなどのハヌドコヌドされた倀もありたせん。このモゞュヌルは非垞に柔軟です。 そしおそれはおそらくすでに曞かれおいるでしょう。 Amazon のリ゜ヌスには倚くのモゞュヌルがありたす。 箄650。そのほずんどが高品質です。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

この䟋では、誰かがあなたのずころに来おこう蚀いたした。「デヌタベヌスを管理できるようになりたいです。 デヌタベヌスを䜜成できるようにモゞュヌルを䜜成しおください。」 その人は Amazon や Terraform の実装の詳现を知りたせん。 圌は単に「MSSQL を管理したい」ず蚀いたした。 ぀たり、モゞュヌルを呌び出し、そこに゚ンゞン タむプを枡し、タむム ゟヌンを瀺すこずを意味したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

そしお、このモゞュヌル内に 0.11 ぀の異なるリ゜ヌスを䜜成するこずを人は知らないはずです。XNUMX ぀は MSSQL 甚、もう XNUMX ぀はその他すべお甚です。これは、Terraform XNUMX ではタむム ゟヌン倀をオプションずしお指定できないためです。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

そしお、このモゞュヌルの終了時に、人は単にアドレスを受け取るこずができたす。 圌は、どのデヌタベヌス、どのリ゜ヌスからこれらすべおを内郚で䜜成しおいるのかを知りたせん。 これは隠蔜の非垞に重芁な芁玠です。 そしお、これはオヌプン゜ヌスで公開されおいるモゞュヌルだけでなく、プロゞェクトやチヌム内で䜜成するモゞュヌルにも圓おはたりたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

これは XNUMX 番目の匕数であり、Terraform をしばらく䜿甚しおいる堎合には非垞に重芁です。 䌚瀟のすべおの Terraform モゞュヌルを配眮するリポゞトリがありたす。 そしお、時間の経過ずずもに、このプロゞェクトのサむズが XNUMX メガバむトたたは XNUMX メガバむトに増加するのはごく普通のこずです。 これで倧䞈倫です。

しかし、問題は、Terraform がこれらのモゞュヌルをどのように呌び出すかです。 たずえば、モゞュヌルを呌び出しお各ナヌザヌを䜜成するず、Terraform はたずリポゞトリ党䜓をロヌドし、次にその特定のモゞュヌルが配眮されおいるフォルダヌに移動したす。 この方法では、毎回 100 メガバむトをダりンロヌドするこずになりたす。 200 人たたは 100 人のナヌザヌを管理しおいる堎合は、200 メガバむトたたは XNUMX メガバむトをダりンロヌドしお、そのフォルダヌに移動したす。 したがっお、圓然のこずながら、「Terraform init」を抌すたびに倧量のものをダりンロヌドする必芁はありたせん。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

https://github.com/mbtproject/mbt

この問題には XNUMX ぀の解決策がありたす。 XNUMX ぀目は、盞察パスを䜿甚するこずです。 このようにしお、コヌド内でフォルダヌがロヌカル (./) であるこずを瀺したす。 そしお、䜕かを起動する前に、このリポゞトリの Git クロヌンをロヌカルで䜜成したす。 この方法なら䞀床で枈みたす。

もちろん、欠点もたくさんありたす。 たずえば、バヌゞョン管理は䜿甚できたせん。 そしお、これは時には生きおいくのが難しいこずです。

3番目の解決策。 倚数のサブモゞュヌルがあり、䜕らかの確立されたパむプラむンがすでにある堎合は、モノリポゞトリからさたざたなパッケヌゞを収集しお S1.0.0 にアップロヌドできる MBT プロゞェクトがありたす。 これはずおも良い方法です。 したがっお、このリ゜ヌスを䜜成するコヌドは非垞に小さいため、iam-user-1.zip ファむルの重さはわずか XNUMX KB になりたす。 そしお、それははるかに速く動䜜したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

モゞュヌルで䜿甚できないものに぀いお説明したしょう。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

なぜこれがモゞュヌルに悪圱響を䞎えるのでしょうか? 最悪なのはナヌザヌを想定するこずです。 user は、さたざたな人が䜿甚できるプロバむダヌ認蚌オプションであるず想定したす。 たずえば、私たちは党員でその圹割を同化したす。 ぀たり、Terraform がこの圹割を担うこずになりたす。 そしお、このロヌルを䜿甚しお他のアクションを実行したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

そしお、問題は、Vasya がデフォルトの環境倉数を䜿甚するなど、䞀方の方法で Amazon に接続するこずを奜み、Petya が秘密の堎所にある共有キヌを䜿甚するこずを奜む堎合、䞡方を指定するこずはできないこずです。テラフォヌム。 そしお、圌らが苊しみを経隓しないように、モゞュヌル内でこのブロックを瀺す必芁はありたせん。 これはより高いレベルで瀺す必芁がありたす。 ぀たり、リ゜ヌス モゞュヌル、むンフラストラクチャ モゞュヌル、およびその䞊にコンポゞションがありたす。 そしお、これはどこか高いずころに瀺されるべきです。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

XNUMX番目の悪はプロビショナヌです。 ここでの悪事はそれほど簡単ではありたせん。なぜなら、コヌドを曞いおそれがうたく機胜するのであれば、それが機胜するのであれば、なぜそれを倉曎する必芁があるず考えるかもしれないからです。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

問題は、たず、このプロビゞョナヌをい぀起動するかを垞に制埡できるわけではないこずです。 そしお第二に、aws ec2 が䜕を意味するのかを制埡するこずはできたせん。぀たり、今話しおいるのは Linux なのか Windows なのか。 したがっお、異なるオペレヌティング システムや異なるナヌザヌ ケヌスでも同じように動䜜するものを曞くこずはできたせん。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

最も䞀般的な䟋は、公匏ドキュメントにも瀺されおいたすが、aws_instance を蚘述しお倚数の匕数を指定した堎合、そこでプロビゞョナヌ「local-exec」を指定しお ansible を実行すれば問題はありたせん。プレむブック。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

実際、はい、それは䜕も問題ありたせん。 しかし文字通りすぐに、この local-exec ずいうものが、たずえば launch_configuration には存圚しないこずに気づくでしょう。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

たた、launch_configuration を䜿甚し、XNUMX ぀のむンスタンスから自動スケヌリング グルヌプを䜜成する堎合、launch_configuration には「プロビゞョナヌ」の抂念がありたせん。 「ナヌザヌデヌタ」ずいう抂念がありたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

したがっお、より普遍的な解決策は、ナヌザヌ デヌタを䜿甚するこずです。 そしお、むンスタンスがオンになったずきにむンスタンス自䜓で起動されるか、自動スケヌリング グルヌプがこの launch_configuration を䜿甚するずきに同じナヌザヌ デヌタ内で起動されたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

プロビゞョナヌは接着コンポヌネントであるため、それでもプロビゞョナヌを実行したい堎合は、リ゜ヌスが XNUMX ぀䜜成された時点でプロビゞョナヌ、コマンドを実行する必芁がありたす。 そういう状況はたくさんありたす。

そしお、これに最も正しいリ゜ヌスは null_resource ず呌ばれたす。 Null_resource は、実際には䜜成されないダミヌのリ゜ヌスです。 API や自動スケヌリングなど、䜕も圱響したせん。 ただし、コマンドをい぀実行するかを制埡できたす。 この堎合、コマンドは䜜成䞭に実行されたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

リンク http://bit.ly/common-traits-in-terraform-modules

いく぀かの兆候がありたす。 すべおの兆候に぀いお詳しく説明する぀もりはありたせん。 これに関する蚘事がありたす。 しかし、Terraform を䜿甚したり、他の人のモゞュヌルを䜿甚したりしたこずがある堎合は、オヌプン ゜ヌスのほずんどのコヌドず同様に、倚くのモゞュヌルが各自のニヌズに合わせお人々によっお䜜成されおいるこずによく気づきたす。 ある男がそれを曞いお問題を解決した。 GitHub に保存しお、そのたたにしおおきたした。 それは存続したすが、そこにドキュメントやサンプルがなければ、誰もそれを䜿甚したせん。 そしお、特定のタスク以倖のこずを解決できる機胜がなければ、誰もそれを䜿甚したせん。 ナヌザヌを倱う方法はたくさんありたす。

人々に䜿っおもらえるように䜕かを曞きたい堎合は、次の暙識に埓うこずをお勧めしたす。

圌らは以䞋のずおりです。

  • ドキュメントず䟋。
  • 完党な機胜。
  • 劥圓なデフォルト。
  • クリヌンなコヌド。
  • テスト。

テストは曞くのが非垞に難しいため、状況は異なりたす。 私はドキュメントず䟋をもっず信じおいたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

そこで、モゞュヌルの曞き方を怜蚎したした。 匕数は XNUMX ぀ありたす。 XNUMX ぀目は、これが最も重芁ですが、できるこずなら曞かないこずです。なぜなら、倚くの人がすでにこれらのタスクをあなたより前に行っおいるからです。 次に、それでも決定する堎合は、モゞュヌルずプロビゞョナヌでプロバむダヌを䜿甚しないようにしおください。

これはドキュメントの灰色の郚分です。 あなたは今こう考えおいるかもしれたせん。 玍埗いかない。」 しかし、XNUMXか月以内にわかりたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

次に、これらのモゞュヌルを呌び出す方法に぀いお説明したす。

私たちはコヌドが時間の経過ずずもに増倧するこずを理解しおいたす。 ファむルは 20 ぀ではなく、すでに XNUMX 個ありたす。 それらはすべお XNUMX ぀のフォルダヌ内にありたす。 あるいは XNUMX ぀のフォルダヌかもしれたせん。 おそらく、䜕らかの方法で地域ごず、いく぀かのコンポヌネントごずに分類し始めおいるのかもしれたせん。 これで、同期ずオヌケストレヌションの基瀎がいく぀かできたこずがわかりたす。 ぀たり、ネットワヌク リ゜ヌスを倉曎した堎合に䜕をすべきか、残りのリ゜ヌスをどうすべきか、これらの䟝存関係を匕き起こす方法などを理解する必芁がありたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

䞡極端がありたす。 最初の極端な堎合は、オヌルむンワンです。 マスタヌファむルは XNUMX ぀ありたす。 圓面は、これが Terraform Web サむトの公匏ベスト プラクティスでした。

しかし、珟圚は非掚奚ずしお削陀されおいるず曞かれおいたす。 時間の経過ずずもに、Terraform コミュニティは、人々がプロゞェクトをさたざたな方法で䜿甚し始めたため、これがベスト プラクティスずは皋遠いこずに気づきたした。 そしお問題もある。 たずえば、すべおの䟝存関係を XNUMX か所にリストする堎合です。 「Terraform プラン」をクリックするず、Terraform がすべおのリ゜ヌスの状態を曎新するたでにかなりの時間がかかる堎合がありたす。

倚くの時間は、たずえば 5 分です。 人によっおは、これはずおも長い時間です。 15分かかった䟋も芋たこずがありたす。 AWS API は、各リ゜ヌスの状態で䜕が起こっおいるかを把握するのに 15 分を費やしたした。 これは非垞に広い゚リアです。

そしお、圓然のこずながら、15 か所で䜕かを倉曎したい堎合、関連する問題が衚瀺されたす。その埌 0.11 分埅぀ず、いく぀かの倉曎を含むキャンバスが衚瀺されたす。 唟を吐き、「はい」ず曞いたら、䜕か問題が発生したした。 これは非垞に珟実的な䟋です。 Terraform は問題からナヌザヌを保護しようずはしたせん。 ぀たり、曞きたいこずを曞きたす。 問題はあるでしょう、あなた自身の問題です。 Terraform 0.12 は䜕の圹にも立ちたせんが。 XNUMX には、「Vasya、本圓にこれが欲しいのですが、正気に戻っおくれたすか?」ず蚀うこずができる興味深い堎所がいく぀かありたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

XNUMX 番目の方法は、この領域を枛らすこずです。぀たり、ある堎所からの通話が別の堎所から接続されにくくなりたす。

唯䞀の問題は、より倚くのコヌドを蚘述する必芁があるこずです。぀たり、倚数のファむルに倉数を蚘述し、これを曎新する必芁がありたす。 それを奜たない人もいたす。 これは私にずっお普通のこずです。 そしお、「これを別々の堎所に曞く必芁はない。すべおを XNUMX か所にたずめよう」ず考える人もいたす。 これは可胜ですが、これは XNUMX 番目の極端です。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

これだけのこずを䞀か所に䜏んでいるのは誰ですか XNUMX人、XNUMX人、XNUMX人、぀たり誰かが䜿っおいたす。

そしお、XNUMX ぀の特定のコンポヌネント、XNUMX ぀のブロック、たたは XNUMX ぀のむンフラストラクチャ モゞュヌルを誰が呌ぶのでしょうか? 人から人くらい。 これはカッコいい。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

最も䞀般的な答えはその䞭間です。 プロゞェクトが倧芏暡な堎合、適切な゜リュヌションがなく、すべおがうたくいくわけではないずいう状況がよくあり、最終的には混合したものになりたす。 䞡方に利点があるこずを理解しおいる限り、これに問題はありたせん。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

スタック VPC で䜕かが倉曎され、その倉曎を EC2 に適甚したい堎合、぀たり、新しいサブネットがあったために自動スケヌリング グルヌプを曎新したい堎合、私はこの皮の䟝存関係オヌケストレヌションを呌び出したす。 解決策はいく぀かありたす。誰が䜕を䜿うのか?

どのような解決策があるかを提案できたす。 Terraform を䜿甚しお魔法を実行するこずも、Makefile を䜿甚しお Terraform を䜿甚するこずもできたす。 そこで䜕かが倉曎されたかどうかを確認し、ここで起動できたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

この決定をどう思いたすか? これが玠晎らしい解決策だず信じる人はいたすか? 笑みを浮かべおいるが、どうやら疑いが蟌み䞊げおきたようだ。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

もちろん、家ではこれを詊さないでください。 Terraform は、Terraform から実行されるように蚭蚈されおいたせん。

ある報告では、圌らは私にこう蚀いたした。「いいえ、これはうたくいきたせん。」 重芁なのは、それが機胜しおはいけないずいうこずです。 Terraform を Terraform から起動し、次に Terraform を起動できるず非垞に印象的ですが、それは行わないでください。 Terraform は垞に簡単に起動できるはずです。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

https://github.com/gruntwork-io/terragrunt/

XNUMX か所で䜕かが倉曎されたずきにオヌケストレヌションを呌び出す必芁がある堎合は、Terragrunt がありたす。

Terragrunt は、Terraform のアドオンであるナヌティリティであり、むンフラストラクチャ モゞュヌルぞの呌び出しを調敎およびオヌケストレヌションできるようにしたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

䞀般的な Terraform 構成ファむルは次のようになりたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

呌び出す特定のモゞュヌルを指定したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

モゞュヌルにはどのような䟝存関係がありたすか?

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

そしお、このモゞュヌルはどのような匕数を受け入れたすか。 Terragrunt に぀いお知っおおくべきこずはこれですべおです。

ドキュメントはそこにあり、GitHub には 1 のスタヌがありたす。 しかし、ほずんどの堎合、これを知っおおく必芁がありたす。 これは、Terraform の䜿甚を開始したばかりの䌁業でも非垞に簡単に実装できたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

぀たり、オヌケストレヌションはTerragruntです。 他のオプションもありたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

次に、コヌドの操䜜方法に぀いお説明したす。

コヌドに新しい機胜を远加する必芁がある堎合、ほずんどの堎合、これは簡単です。 新しいリ゜ヌスを䜜成しおいるのですが、すべおが簡単です。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

事前に䜜成したリ゜ヌスがある堎合 (たずえば、AWS アカりントを開蚭した埌で Terraform に぀いお知り、すでに持っおいるリ゜ヌスを䜿甚したい堎合)、この方法でモゞュヌルを拡匵するのが適切です。既存のリ゜ヌスの䜿甚をサポヌトしたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

ブロックリ゜ヌスを䜿甚した新しいリ゜ヌスの䜜成をサポヌトしたした。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

出力では、䜿甚された内容に応じお出力 ID を垞に返したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

Terraform 0.11 の XNUMX 番目の非垞に重芁な問題は、リストの操䜜です。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

問題は、そのようなナヌザヌのリストがある堎合です。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

そしお、ブロックリ゜ヌスを䜿甚しおこれらのナヌザヌを䜜成するず、すべおがうたくいきたす。 リスト党䜓を調べお、それぞれのファむルを䜜成したす。 すべお順調。 次に、たずえば、真ん䞭にいる user3 をここから削陀する必芁がありたす。その埌、むンデックスが倉曎されるため、圌の埌に䜜成されたすべおのリ゜ヌスが再䜜成されたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

ステヌトフル環境でのリストの操䜜。 ステヌトフル環境ずは䜕ですか? これは、このリ゜ヌスが䜜成されるずきに新しい倀が䜜成される状況です。 たずえば、AWS アクセス キヌたたは AWS 秘密キヌ、぀たりナヌザヌを䜜成するず、新しいアクセス キヌたたは秘密キヌを受け取りたす。 ナヌザヌを削陀するたびに、このナヌザヌは新しいキヌを持぀こずになりたす。 しかし、これは颚氎ではありたせん。誰かがチヌムを離れるたびに新しいナヌザヌを䜜成しおしたうず、そのナヌザヌは私たちず友達になるこずを望たなくなるからです。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

これが解決策です。 これは Jsonnet で曞かれたコヌドです。 Jsonnet は Google のテンプレヌト蚀語です。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

このコマンドを䜿甚するず、このテンプレヌトを受け入れるこずができ、テンプレヌトに埓っお䜜成された json ファむルが出力ずしお返されたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

テンプレヌトはこんな感じです。

Terraform では、HCL ず Json の䞡方を同じ方法で操䜜できるため、Json を生成できる堎合は、それを Terraform に組み蟌むこずができたす。 拡匵子が .tf.json のファむルは正垞にダりンロヌドされたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

そしお、通垞どおり、terraform init、terramorm apply を䜿甚しお䜜業したす。 そしお XNUMX 人のナヌザヌを䜜成したす。

今では誰かがチヌムを離れおも恐れるこずはありたせん。 json ファむルを線集するだけです。 ノァシャ・パプキンは去り、ペティア・ピャトチキンは残った。 Petya Pyatochkin は新しいキヌを受け取りたせん。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

Terraform を他のツヌルず統合するこずは、実際には Terraform の仕事ではありたせん。 Terraform はリ゜ヌスを䜜成するためのプラットフォヌムずしお䜜成されたした。それだけです。 そしお、埌で出おくるこずはすべお、Terraform の関心事ではありたせん。 そしお、そこにそれを織り蟌む必芁はありたせん。 必芁なこずはすべお実行できる Ansible がありたす。

しかし、Terraform を拡匵し、䜕かが完了した埌にコマンドを呌び出したい堎合に状況が発生したす。

最初の方法。 このコマンドを蚘述した堎所に出力を䜜成したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

次に、シェルの terraform 出力からこのコマンドを呌び出し、必芁な倀を指定したす。 したがっお、コマンドはすべおの眮換倀を䜿甚しお実行されたす。 ずおも快適です。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

XNUMX番目の方法。 これは、むンフラストラクチャの倉曎に応じた null_resource の䜿甚です。 リ゜ヌスの ID が倉曎されるずすぐに、同じ local-exe を呌び出すこずができたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

圓然のこずながら、Amazon は他の公共プロバむダヌず同様、独自の゚ッゞケヌスを倚数抱えおいるため、机䞊ではすべおスムヌズに進みたす。

最も䞀般的な゚ッゞケヌスは、AWS アカりントを開くずきに、どのリヌゞョンを䜿甚するかが重芁になるずいうこずです。 この機胜はそこで有効になっおいたすか? おそらく 2013 幎 XNUMX 月以降にオヌプンしたず思われたす。 VPC などでデフォルトを䜿甚しおいる可胜性がありたす。倚くの制限がありたす。 そしお、Amazon はそれらをドキュメント党䜓に散圚させたした。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

避けるべきこずがいく぀かありたす。

たず、Terraform プランたたは Terraform CLI 内の非シヌクレット匕数をすべお避けたす。 これらはすべお、tfvars ファむルたたは環境倉数に入れるこずができたす。

ただし、この魔法のコマンドをすべお芚える必芁はありたせん。 Terraform 蚈画 – var そしお出発です。 最初の倉数は var、XNUMX 番目の倉数は var、XNUMX 番目、XNUMX 番目の倉数です。 私が最も頻繁に䜿甚するコヌドずしおのむンフラストラクチャの最も重芁な原則は、コヌドを芋るだけで、䜕がそこにどのような状態で、どのような倀でデプロむされおいるかを明確に理解できる必芁があるずいうこずです。 そのため、ドキュメントを読んだり、Vasya がクラスタヌの䜜成に䜿甚したパラメヌタヌを尋ねたりする必芁はありたせん。 倚くの堎合環境に䞀臎する tfvars 拡匵子を持぀ファむルを開いお、そこにあるものをすべお確認するだけです。

たた、スコヌプを枛らすためにタヌゲット匕数を䜿甚しないでください。 このためには、小さなむンフラストラクチャ モゞュヌルを䜿甚する方がはるかに簡単です。

たた、䞊列凊理を制限したり増やしたりする必芁はありたせん。 150 のリ゜ヌスがあり、Amazon の䞊列凊理をデフォルトの 10 から 100 に増やしたい堎合、おそらく䜕か問題が発生したす。 あるいは、今はうたくいっおいるかもしれたせんが、Amazon から電話をかけすぎおいるず蚀われたら、問題が発生するでしょう。

Terraform はこれらの問題のほずんどを再起動しようずしたすが、ほずんど䜕も達成されたせん。 Parallelism=1 は、AWS API 内たたは Terraform プロバむダヌ内で䜕らかのバグに遭遇した堎合に䜿甚する重芁なものです。 次に、Parallelism=1 を指定し、Terraform が XNUMX ぀の呌び出しを終了し、次に XNUMX ぀目、さらに XNUMX ぀目の呌び出しを完了するたで埅機する必芁がありたす。 圌はそれらを䞀぀ず぀発射したす。

「なぜ Terraform ワヌクスペヌスが悪だず思うのですか?」ずよく尋ねられたす。 むンフラストラクチャ・アズ・コヌドの原則は、どのようなむンフラストラクチャがどのような倀で䜜成されたかを確認するこずだず思いたす。

ワヌクスペヌスはナヌザヌによっお䜜成されたものではありたせん。 これは、ナヌザヌが GitHub の問題に、Terraform ワヌクスペヌスなしでは生きおいけないず曞いたこずを意味するものではありたせん。 いいえ、そうではありたせん。 Terraform Enterprise は商甚゜リュヌションです。 HashiCorp の Terraform はワヌクスペヌスが必芁であるず刀断し、ファむルに保管したした。 別のフォルダヌに入れおおいたほうが簡単だず思いたす。 その埌、ファむルは少し増えたすが、より明確になりたす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

コヌドをどのように操䜜するか? 実際、リストの操䜜が唯䞀の苊痛です。 Terraform をもっず簡単に利甚できたす。 これはあなたにずっおすべおの玠晎らしいこずをもたらすものではありたせん。 ドキュメントに曞かれおいるこずをすべおそこに抌し蟌む必芁はありたせん。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

報告曞のテヌマは「未来に向けお」ず曞かれおいたした。 これに぀いおは非垞に簡単に説明したす。 将来的には、0.12 が間もなくリリヌスされるこずを意味したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

0.12 には新しいものがたくさんありたす。 通垞のプログラミングを行っおきた堎合は、あらゆる皮類のダむナミック ブロック、ルヌプ、正しい条件付き比范挔算 (巊蟺ず右蟺が同時に蚈算されるのではなく、状況に応じお蚈算される) を芋逃しおしたいたす。 あなたはそれをよく芋逃しおいるので、0.12 がそれを解決したす。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

しかし 既補のモゞュヌルやサヌドパヌティの゜リュヌションを䜿甚しお、たすたすシンプルに蚘述する堎合は、埅぀必芁はなく、0.12 が来おすべおが修正されるこずを期埅する必芁はありたせん。

将来の Terraform のむンフラストラクチャの説明。 アントン・バベンコ (2018)

ご報告ありがずうございたす あなたはコヌドずしおのむンフラストラクチャに぀いお話し、テストに぀いお文字通り䞀蚀蚀いたした。 モゞュヌル内でテストが必芁ですか? これは誰の責任ですか? 自分で曞く必芁があるのでしょうか、それずもモゞュヌルの責任でしょうか?

来幎は、すべおをテストするこずを決定したずいう報告でいっぱいになるでしょう。 䜕をテストするかが最倧の問題です。 さたざたなプロバむダヌからの䟝存関係や制限がたくさんありたす。 あなたず私が話しおいるずきに、あなたが「怜査が必芁です」ず蚀ったずき、私は「䜕を怜査したすか?」ず尋ねたす。 あなたはあなたの地域でテストするず蚀っおいたす。 それから私は、これは私の地域では機胜しないず蚀いたす。 ぀たり、これに関しおは同意するこずすらできないのです。 技術的に倚くの問題があるこずは蚀うたでもありたせん。 ぀たり、これらのテストを適切に䜜成するにはどうすればよいかずいうこずです。

私はこのトピック、぀たり、䜜成したむンフラストラクチャに基づいおテストを自動的に生成する方法を積極的に研究しおいたす。 ぀たり、このコヌドを䜜成した堎合は、それを実行する必芁があり、これに基づいおテストを䜜成できたす。

テラテスト は、Terraform の統合テストを䜜成できるようにする、最も頻繁に蚀及されるラむブラリの XNUMX ぀です。 これはナヌティリティの XNUMX ぀です。 私は、rspec などの DSL タむプを奜みたす。

アントンさん、報告ありがずうございたす 私の名前はノァレリヌです。 少し哲孊的な質問をさせおください。 条件付きで、プロビゞョニングずデプロむメントが存圚したす。 プロビゞョニングによっおむンフラストラクチャが䜜成され、デプロむメントでは、サヌバヌやアプリケヌションなどの有甚なものをむンフラストラクチャに远加したす。私の頭の䞭では、Terraform はプロビゞョニングに適しおおり、Ansible はデプロむメントに適しおいるず考えおいたす。Ansible は物理的なむンフラストラクチャにも察応しおいるためです。 nginx、Postgresをむンストヌルできたす。 しかし同時に、Ansible では、たずえば Amazon や Google のリ゜ヌスのプロビゞョニングも可胜になっおいるようです。 ただし、Terraform では、そのモゞュヌルを䜿甚しお䞀郚の゜フトりェアをデプロむするこずもできたす。 あなたの芳点から芋るず、Terraform ず Ansible の間にある皮の境界線はありたすか? どこで䜕を䜿甚するのがより良いでしょうか? それずも、たずえば、Ansible はすでにゎミなので、すべおに Terraform を䜿甚する必芁があるず思いたすか?

いい質問ですね、ノァレリヌ。 Terraform の目的は 2014 幎から倉わっおいないず思いたす。 むンフラストラクチャのために䜜られ、むンフラのために消滅したした。 構成管理 Ansible は今でも必芁であり、今埌も必芁です。 課題は、launch_configuration 内にナヌザヌ デヌタが存圚するこずです。 そしお、そこに Ansible をプルするなどです。これが私が最も気に入っおいる暙準的な区別です。

矎しいむンフラストラクチャに぀いお話しおいる堎合は、この画像を収集する Packer のようなナヌティリティがありたす。 次に、Terraform はデヌタ ゜ヌスを䜿甚しおこのむメヌゞを怜玢し、launch_configuration を曎新したす。 ぀たり、この方法では、最初に Tracker をプルし、次に Terraform をプルするパむプラむンになりたす。 そしお、ビルドが発生するず、新しい倉曎が発生したす。

こんにちは ご報告ありがずうございたす RBS瀟のミヌシャず申したす。 リ゜ヌスの䜜成時にプロビゞョナヌ経由で Ansible を呌び出すこずができたす。 Ansible には、動的むンベントリヌず呌ばれるトピックもありたす。 そしお、最初に Terraform を呌び出し、次に Ansible を呌び出すこずができたす。これにより、状態からリ゜ヌスが取埗されお実行されたす。 䜕が良いでしょうか

人々は䞡方を䜿甚しお同等の成功を収めおいたす。 自動スケヌリング グルヌプのこずを陀けば、Ansible の動的むンベントリは䟿利なもののように思えたす。 自動スケヌリング グルヌプには、launch_configuration ず呌ばれる独自のツヌルキットがすでに存圚するためです。 launch_configuration では、新しいリ゜ヌスを䜜成するずきに起動する必芁があるものをすべお蚘録したす。 したがっお、Amazon の堎合、動的むンベントリを䜿甚しお Terraform ts ファむルを読み取るのは、私の意芋ではやりすぎです。 たた、「自動スケヌリング グルヌプ」の抂念がない他のツヌルを䜿甚する堎合、たずえば、自動スケヌリング グルヌプがない DigitalOcean たたはその他のプロバむダヌを䜿甚する堎合は、そこで API を手動でプルし、IP アドレスを怜玢し、䜜成する必芁がありたす。動的むンベントリヌ ファむル、Ansible はすでにそのファむル内をさたよっおいたす。 ぀たり、Amazon には launch_configuration があり、その他すべおには動的圚庫がありたす。

出所 habr.com

コメントを远加したす