このエントリーをはてなブックマークに追加

Ansible入門...?という発表をしました

この記事はAnsible Advent Calender 2013の記事です。

Pyfesでの発表

11月30日に#pyfesというイベントで、Ansible入門...?という発表を行いました。

slideshareにその時の資料を上げておきます。

http://www.slideshare.net/r_rudi/ansible-28755803

この発表で伝えたかったこと

今回の発表で伝えたかったことは3つです。

  1. AnsibleはProvisioning Toolとしてだけではなく、Orchestrationまでカバーできること
  2. 豊富なモジュールがあること
  3. 簡単にモジュールが作成できること

1. Orchestration

Ansibleを最初に触った時から、「これはむしろFabric + Cuisineだ」と思っていたので、Chefやpuppetとの対比には少し違和感がありました。(ちなみにAnsibleの前はChefを使っていました)

ですので、今回の発表はshell moduleやRolling Updateなど、Orchestrationでの使用を想定されている機能を紹介しました。

2. 豊富なモジュールがあること

発表では意図して多くのモジュールに触れました。homebrewモジュールもあるんですよ(ちなみにmacportsもあります)

Ansibleのポリシーとして、ちょっとでもみんなの役に立つならモジュールに入れよう、というのがあるようです。ChefでいうCommunity Cookbookの代わりにモジュールがある、という感じの位置づけです。

ですから、たくさんのモジュールがあるし、どんどん増えていっています。そして、なにか有用なモジュールを作ったのならばどんどんPull Requestしてくれ、だそうです。

Aristaモジュールとか、ChefやPuppetではあんまり対象に入っていないことだと思うので、そのあたりも差別化要因になるかと思います。

3. モジュールが簡単に書けること

AnsibleはYAMLだから記述力が低いんじゃないか、という話があります。そもそもYAMLが嫌い、ということは別途ありますが、AnsibleはYAMLで書きにくいものはモジュールを作成してくれ、というスタンスです。

そのために、モジュールは非常に簡単に、しかもいろいろな言語で書けるようになっています。その例がShell Script、というより単にcurlを呼び出しているだけのデモです。

まあ、「電話での通知」をやってみたかっただけ、ですけどね!

TwilioはSMSも送れたり、電話会議もできるので、

  • Provisioningが終わったらSMSで通知
  • エラーになったら関係者で対応策を会議

とかいろいろ応用が聞くと思うので、ぜひみなさんも作ってみてください。

補足

発表で時間の都合上端折った点がありますので、ここで補足させてください。

1. タグ機能について

Ansibleの各taskにはtagを付けることができます。

- name: タグ付きタスク
  debug: msg=タグ
  tags:
    - test
    - debug

こうしておいて、

% ansible-playbook test.yml -t test

とすると、testというタグが付けられたtaskだけが実行されます。

これをうまく使うと、ProvisioningとOrchestrationの二つを使い分けることができます。

また、Playbookを作成しているときはいろいろと試行錯誤しますがその時にこのtaskだけ実行したい、ということがよくあります。ぼくはそういうときにdebugタグをよく使っています。

2. pull-mode

Ansibleはsshを通じてコマンドを送るpush型ですが、ansible-pullという遠隔サーバー上で実行するpull modeもあります。

pull-modeをcronで定期的に実行する、あるいはリポジトリが変化した時などに実行する、などと設定しておくと完全に自動で更新が行われます。

Accerated Modeを使うことでAnsibleの実行速度は遅くはないですが、Pull-modeを使うことによりそもそも手動で実行する必要がなくなります。

ぜひご検討ください。

まとめ

スライドにもありますが、

  1. Ansibleは遠隔実行ツールとしても使える
  2. モジュールが豊富
  3. モジュールは簡単に作成できる

の3つが伝えたいことでした。

ということで、発表もしてAdvent Calendarも書く、というひと粒で二度美味しい、ということを目指したエントリーでした。

おしまい