AWS + Ansibleのお悩み相談についてのやりとり
今日のInfrastructure as Code現状確認会の参加ブログ書いた。 #infra_sushi / “クックパッドの新オフィスでitamaeによる寿司の無限プロビジョニングを体験して、Ansibleのお悩み相談してきた…” htn.to/fJYyV3
2014-10-04 02:15:33@sechiro ブログを書きました。 / Ansibleでの連番ホスト名をつけるなど tdoc.info/blog/2014/10/0… お悩みをちゃんと解決できるかどうかは分かりませんが、ご意見いただけるとありがたく思います。
2014-10-04 23:42:16@r_rudi ブログありがとうございます! 反応いただけるとは思っていなかったので、ありがたいです。 ただ、スライドでは説明していないところがあって、その点、補足させてください。
2014-10-04 23:51:52@r_rudi ホストの自動採番は、新規だけではなくて、既存である程度のホストがあって、空きホスト名から新しいホストにホスト名を割り振るという内容でした。既存ホストの情報が必要なので、AnsibleからデプロイのたびにYAMLのホストリストファイルを更新して対処しています。
2014-10-04 23:54:45@sechiro なるほど。やはりそうでしたか。 "{{ groups['tag_role_web'] | length }}" とかで現在のホスト数を取ってそこから増やしていくことはできますが、おそらく欠番を埋めたりとかするでしょうし、そうなるとansibleではつらいですね。
2014-10-05 00:02:18@r_rudi 前者の方は、一度それもやってみたのですが、ほかのPlaybookとの組み合わせで難が出たので、EC2用の別インベントリで対応しています。
2014-10-04 23:56:17@r_rudi 具体的には、新規追加したホストのみ、共通のplaybookを適用する場面です。インベントリが既存ホストを含む場合、すでに既存サーバに適用したPlaybookを使うと新規ホストだけでなく、既存ホストにもPlaybookが適用されてしまいます。
2014-10-05 00:01:04@r_rudi 思いますが、こうすると、既存のホストにも改めてplaybookが走ってしまいます。なので、EC2デプロイ時のみ別インベントリを用意しています。playbookは冪等性を担保しているので、それでも問題はないのですが、余計な動作はなくしたいのでこの構成です。
2014-10-05 00:08:51@r_rudi 既存のホストがwebserversグループに所属していて、playbookでもwebserversグループが実行対象になっている場合、eb2モジュールで新規追加したホストも、webserversグループにadd_hostして、playbookを流すのが自然だと
2014-10-05 00:05:37@sechiro それは冪等性が確保されていれば、既存ホストに対してplaybookを再度適用されても問題ないような気がしますが、そうもいかない、ということでしょうか。
2014-10-05 00:04:34@sechiro なにが自然かは分かりませんが、"新規作成したホスト"というグループを使ったほうが楽ならばそうしたほうがいいとは思います。
2014-10-05 00:12:25@r_rudi ほかの問題としては、アブリのコードをS3から取得する必要があるため、そこでcommandを使ってしまっていて、アプリの更新がない場合もnotifyが引かれてしまうので、そこだけ冪等性に難があるというのもあります。
2014-10-05 00:14:06@r_rudi 結局のところ、自分でもAnsible内でなんどかする方向にしているので、Ansible内でできるというのは、そうだと思います。
2014-10-05 00:16:06@sechiro ふーむ。それはchanged_whenではカバーできない範囲ってことですよね。そうなると確かにつらいですね。また、必要がなければ動作させたくない、というのも分かります。
2014-10-05 00:18:35@r_rudi そうですね。commandとかshellとか冪等性が担保されないモジュールは避けたいのですが、環境上の制約からそうせざるを得ないところがあり。。。そういう場合には自作のモジュールを作るのがAnsible的な感じがするのですが、現状そこまで手が回っていない感じです。
2014-10-05 00:25:20@sechiro 分かりました。さらに言うと、Ansibleは「こうでないといけない」というのがあんまりない、とぼくは思っているので、楽に出来る方法があればそれを使うといいと思います。また、Ansibleにこだわる必要も特にないと思います。書かれていたとおり、適材適所ですね。
2014-10-05 00:26:32@r_rudi ありがとうございます。デプロイツールは、Ansibleがいいと思っているので、Ansibleと別のツールとの組み合わせを考えたいと思います。ちょっとしたつぶやきに、親切にアドバイスをいただきありがとうございます。Ansible本はいつも参考にさせてもらっています。
2014-10-05 00:28:55@sechiro Ansibleは拡張性が結構あるので、うまく組み合わせられるといいですね。また、Ansible本をご購入いただきありがとうございます!
2014-10-05 00:36:36@r_rudi アドバイス、非常に助かりました。いただいた話はAnsibleを使っていくに当たって重要な話だと思うので、Togetterでまとめて、ブログに追記したいと思うのですが問題ないでしょうか?
2014-10-05 00:38:21