DevOps気がつけば、2018年度も終了間際で時の流れの速さを実感しています。@mosuke5です。触ってみたのと、その有用性や使いみちについて考えてみました。plans)Terraformでクラウド環境のセットアップをして、その後にそのクラウド環境のサーバに対してプロビジョニングすることが一気通貫でできるようになります。素晴らしいことですね。こちらのツールを使ってみると、実現にあたっていろいろと工夫しなければ行けない点が出てきたのでご紹介していきます。ファイルの配置だったり、yumやaptなどのパッケージマネジメント、シェルの実行だったり多くのmoduleを用意しています。最近では、単なるサーバへのプロビジョニングを超えて、クラウドリソースの制御などもできるようになっており、使い方の幅が広がってきています。今回発見したのは、クラウド上のリソース管理に強みをもつTerraform(自分が好きなツールでもある)をAnsibleから実行するmoduleが出ていました。TerraformとAnsibleはカバーする領域が異なりますが、もちろんかぶる領域もあり、今回はその組み合わせ方の1つのあり方かなと思っています。最小限で試したかったのでこんな感じで用意しました。terraform_module_test.ymlがAnsibleの実行Taskが記載されたファイルで、terraform/以下がTerraformの実行ファイルを置いています。terraform.tfvars以下はAnsibleのコードです。Terraformを実行するのは今回はローカル環境なので、実行の対象ホストはこのPCで、接続方式もlocalで問題ないです。moduleは機能自体も多くなく、Terraformを実行(apply)するだけなら下記だけで十分です。presentさて、実行してみます。これだけじゃつまらんって感じです。Terraformでサーバなどのインフラ作って、Ansibleで作ったサーバに対してデプロイのフローを一気通貫でやりたいということでしょう。過程を書いてますのでご了承ください。はじめに考えたのは、Ansibleベストプラクティスに則って、以下のようなsite.yml作ればそれで終わりや。このまま実行しても正しくプロビジョニングされません。それもそのはずで、Ansible実行時にはプロビジョニングするサーバの対象がわからないからです。Inventryの話がでてくるわけです。Terraformのstateファイルから生成することにしておきます。inventry.shというのを次のように雑に書きまして。実はもう一つ考慮しなければいけないことに気づきました。matchedそれは、サーバのIPアドレスが決まるのはTerraformの実行が終わったあとになります。Inventryを作ったのはAnsibleの実行時です。なると、Terraformの実行とその後のサーバプロビジョニングがこのままでは一気通貫にできないということになります。なんかいい方法はないのかと調べると、refresh_inventryというのがありました。こちらを使って、Ansibleの実行中にTaskとしてinventryの更新が可能になります。サーバの起動を待つというのも大事な要素になりました。試行錯誤過程を書いてしまいましたが、下記を考慮しておかなければいけなさそうということです。Cloudの例にはなりますがGithubにコードをあげてあります。InventryInventryの更新サーバ起動までのWait全体を図にすると今感じです。冒頭でも少し書いたのですが、TerraformとAnsible、異なるカバー領域をもつ製品だと私は認識していますが、一方で領域が被る部分もあると思っています。この2つを一緒に使う方法についてレッドハットのホワイトペーパーをみつけました。このホワイトペーパーにも一緒に使う方法として以下2つがあると書かれていて、今回は後者の方の使い方をご紹介した形になります。この2つは正解、不正解ではなく、管理する人の立場によって大きく変わると書かれています。TerraformからAnsibleを実行する方法AnsibleからTerraformを実行する方法また、前者の方については少しアプローチが違いますが、過去に「Terraform+ユーザデータ+Ansibleでのサーバプロビジョニングを活用する」書いたことがありますので、合わせて読んでみてください。おまけこんなのも見つけました。terraform-inventoryhttps://github.com/adammck/terraform-inventory関連する記事はこちら「LeanとDevOpsの科学」を読んで。(2019/08/21)「リーンスタートアップ」を読んだ。Shopを使ったマイクロサービス体験のハンズオン「捉」2019年振り返り「LeanとDevOpsの科学」を読んで。