Ansible Meetup in Tokyo 2014.09に参加してきました #ansiblejp
昨日、大手町で行われた「Ansible Meetup in Tokyo 2014.09」に参加してきました。
http://ansible-users.connpass.com/event/7942/
職場ではサーバのプロビジョニングツールとしてAnsibleを使用しているため、さらに便利な使い方ができないかを探るためです。
テーマは以下のような内容でした。
- 「Hi Japan! / What's new In Ansible 1.8」
- 「知っているとちょっと便利なこと」
- 「InfluxDB」
- 「Ansible Meets Windows」
- (LT)「ANSIBLE_KEEP_REMOTE_FILESをTrueにしてみよう!」
- (LT)「実用plugin」
- (LT)「Ansibleとテスト」
- (LT)「Dynamic Inventory」
- (LT)「Where to start Ansible ~初心者のためのAnsibleの始め方」
自分がAnsibleを活用していることもあり、印象に残ったのは以下の内容ですね。
Ansible1.8について
Ansibleの中の人による、GoogleHangoutを用いての遠隔からのプレゼン。最新バージョンのAnsibleについての話でした。
- Redisなどを利用してのFact Caching
- Docker対応
その他、GUIツールのAnsible Towerというものが話に上がっていました。 GUIあるとわかりやすそうな気はしますが、プロビジョニングツールはターミナルから実行するのに慣れてしまっているので実際に便利なのかどうかはちょっとわからないですね。
Ansible Tower | Ansible.com http://www.ansible.com/tower
知っているとちょっと便利なこと
入門Ansibleの著者である @r_rudi さんによる発表。
http://www.slideshare.net/r_rudi/ansible-meetup201409
個人的には今回聞いて一番良かった内容ですね。
1. roles_path
今のプロジェクトで他の場所にあるroleはシンボリックリンクで参照していたのですが、これ使えばそんなことしないでも済みますね。
2. whenの複数条件
when: ansible_os_family == "RedHat" and mode == "prod..."
と書くと長すぎるので、
when: - ansible_os_family == "RedHat" - mode == "production"
と書けるというもの。yamlの配列の書き方で表現できるのですね。
3. shellで環境変数の読み込み
- shell: something.sh environment: PATH: /opt/bin
4. 数字として比較
普通に書くと文字列での比較になるので、以下のようにしないといけない。
when: logline.stdout > 300 ↓ when logline.stdount | int > 300
他に、バージョン比較や正規表現での比較もできるようです。 数字比較は知ってると便利というよりは知らないと一番重要なところで致命傷を受けて死ぬという話な気がしましたw
5. cronモジュール
crontabの書き方を忘れる minute, hourなどで指定可能
cron: name="check" minute=30 hour="5,"
同じくcronの書き方忘れるので、Railsデプロイするときはwhenever使ってます。
6. local_fact
対象ホストの
/etc/ansible/facts.d/hosts.fact
にファイルを置くとfactとなるようです。
自分はこの話を聞いた時に、同じroleでstagingとproductionの出し分けに使えるのかなぁと思ったのですがどうなんでしょう。
7. chatops
slack + hubot からansibleみたいです。
https://gist.github.com/shirou/978aac75b6ea2d09257d
ansibleコマンドよく間違えるので、確かにチャットオプスにするの良さそうですね。
DevOps visibility in a box: InfluxDB + Grafana + Collectd
InfluxDBの中の人によるInfluxDBの話。Ansibleにあまり関係なかったw
あたりをウリにしていました。MongoDB 改みたいな印象を持ったんですがどうなんでしょう。
Ansible Meets Windows
AnsibleのWindows対応についてとても詳しく話されていました。 実機、サーバ共にWindowsをさわる機会がないので参考として聞いていたのですが、アーキテクチャについては面白かったですね。
Ansible for windowsのアーキテクチャ
発表者の @myb1126 さんがブログに詳しくまとめられているので、気になる方はぜひそちらを見てみてください。
ここからLT
ANSIBLE_KEEP_REMOTE_FILESをTrueに by @saito_hideki さん
Ansibleのモジュールを自作したいときに、Ansibleがモジュールから生成した実行プログラムを参考にしたいけれど終了後に消えてしまいます。それを、ANSIBLE_KEEP_REMOTE_FILES=True
にしておくことでプログラムが残るそうです。
プラグインを作成する場合のみならず、playbookがうまく動かないケースにも対応できそうですね。
実用plugin by @choplin さん
Ansibleのプラグインの種類についてのわかりやすいまとめでした。
pluginの種類は以下のようになっており、
- Connection TYpe Plugins
- Lookup Plugins
- Vars Plugins
- Filter Plugins
- Callbacks Plugins
Connection Type Plugins
- remoteにつなぎに行く方法
- ssh, paramiko, local
- 標準で十分
Lookup Plugin
with_*, もしくはlookup()
- with_*
- 制御構文
- lookup
- 外部リソースによる変数
- 標準でわりと事足りる
Vars Plugins
- hosts_vars, group_vars
Filter Plugins
- some_var | to_nice_yaml
- 変数の変換
- 標準ではjinja2 + ansible
Callbacks
- 実行の各ポイントで任意の処理を追加
- 任意のmoduleを実行可能
- 実現できることが幅広い
- 使ってる
Ansileとテスト by @volanja さん
ansibleとserverspecを連携する、ansible_specを作った話。
- volanja/ansible_spec https://github.com/volanja/ansible_spec
AnsibleのドキュメントにTesting Strategiesがあるので、ansible_specを用いてテストを書くことについては今悩みを感じているところということでした。 自分が会社で使っているAnsibleはまったくテストがないのでなんかやらないといけないなと思いつつもまだ手が回ってない状況なので、こういう情報はありがたいですね。
Dynamic Inventory by @bungoume さん
資料: https://speakerdeck.com/bungoume/dynamic-inventorytocan-zhao-bian-shu
会場を提供してくださった日経新聞の新人の方による発表。 日経新聞社がこういう優れた若手エンジニアを採用しているんだ、というのがまず驚きでした。
Dynamic Inventory Hostsの話でした。今、私の悩みとしてオートスケールでIPが変わってしまって手でhosts直す作業をしているところを解決したいのですが、これ使えばうまく行きそうな気がしますね。
Welcome Ansible by @tesuya さん
飛び込みLTでAnsible始めたばかりの方による発表でした。 初めてとは思えないぐらいに落ち着いた発表でした。最初、カオスな開発環境で開発していて、今その辺をプロビジョニング等で整理しているという状況のベンチャー企業の方で、シチュエーションが自分とわりと似ている部分あるなぁと思いました。
まとめとかその他気になったこととか
ansible-lint というものを耳に挟みました。どうやらjs-lintのようにplaybookをきれいに書くヒントをくれるものらしいので試していこうと思います。 あと、昨日はオートスケールの話とかなかったので、自分が仕事でやってるオートスケールで起動時にAnsibleで設定を最新版にしてcapistranoでRailsをデプロイしている話とかLTするといいのかな、とか思いました。
ステッカーもらいましたよ。