月曜日までに考えておきます

ITネタとゲームネタ中心に興味のあること色々書きます。

Ansible Meetup in Tokyo 2014.09に参加してきました #ansiblejp

Ansible Meetup in Tokyo 2014.09に参加してきました #ansiblejp

昨日、大手町で行われた「Ansible Meetup in Tokyo 2014.09」に参加してきました。

http://ansible-users.connpass.com/event/7942/

職場ではサーバのプロビジョニングツールとしてAnsibleを使用しているため、さらに便利な使い方ができないかを探るためです。

テーマは以下のような内容でした。

  1. 「Hi Japan! / What's new In Ansible 1.8」
  2. 「知っているとちょっと便利なこと」
  3. 「InfluxDB」
  4. 「Ansible Meets Windows
  5. (LT)「ANSIBLE_KEEP_REMOTE_FILESをTrueにしてみよう!」
  6. (LT)「実用plugin」
  7. (LT)「Ansibleとテスト」
  8. (LT)「Dynamic Inventory」
  9. (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が散らばっている場合、ansible.cfgに"roles_path"を設定できる
  • roleの検索順序
    • 自分のディレクトリのroles以下
    • 自分のディレクトリ
    • 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 さんがブログに詳しくまとめられているので、気になる方はぜひそちらを見てみてください。

Ansible meets Windows というタイトルで Ansible meetup in Tokyo 2014.09にて、発表してきました。 #ansiblejp - Hack the World!


ここから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を作った話。

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で設定を最新版にしてcapistranoRailsをデプロイしている話とかLTするといいのかな、とか思いました。

ステッカーもらいましたよ。