今週、Ansible の勉強会に参加してきました。
Ansible の勉強会は、これが第一回目だそうです。
Ansible 勉強会 #1 (2014.6.10)
恵比寿の本会場が満員御礼だったので、西新宿のリモート会場での参加。
リモート会場への参加は今回が初めてでした。
が、たまに(頻繁に?)ストリーミングの画質が荒れてしまって、デモが見れなかったり字が読めなかったりといろいろ辛かったです。。盛り上がりも本会場とリモートでは全然違うし、その場にいて雰囲気を感じるって大事だなぁ、と感じた勉強会でした。
ありがたいことに、ストリーミング動画も公開されています。
資料
私自身の Ansible歴としては、昨年の「Ansible Advent Calendar 2013」向けに記事を2本ほど書いたものの、所詮趣味で使っているレベルで、業務でも一応使ってはいるものの先人が作った Playbook をそのまま流すという感じで、Playbook を試行錯誤しながら育てていくといったことは生業としていません。ちなみに、インフラ屋でもありません。
この勉強会で登壇されていた皆さんは、それこそ100台1000台という単位のサーバを扱うためのツールとして Ansible を使っているわけで、相当ディープな話を聞くことができました。が、ディープ過ぎて正直半分くらいしか分からないところもありました(笑)。
この勉強会での大きな収穫の一つは、「Ansible はビジネスレベルでも安心して使い込めるツール」であると証明されたことでしょうかね。
Ansible の基本 + MySQL レプリケーションを設定する事例
by @IanMLewis さん
Slide: https://speakerdeck.com/ianlewis/ansible-falseji-ben-plus-mysql-repurikesiyonwoshe-ding-surushi-li
- 基本の話。用語とか
- Playbook
- YAMLで作られている。Chef でいうレシピ
- ベストプラクティスは、http://docs.ansible.com/playbooks_best_practices.html
- Roles
- task, handler, 必要なfileなどが入っている
- Tasks
- main.yml を必ず読む。分割できる
- Modules
- プラグインみたいなもの。commandモジュールとか
- 複雑なことをしたい場合は自前で作ることも出来る
- Handlers
- 何かが変わったらこれを実行とか。
- 大枠のイメージは、Playbookの中にRoleがあり、その中にTaskがあって、たまにTaskがHandlerを呼び出す、という感じ
- 事例
dynamic inventoryが便利な話: no more host list!
by @tagomoris さん
Slide: http://www.slideshare.net/tagomoris/ansibleja
Lineの人。
概要は理解できたのですが、後半はちょっと付いてけませんでした。。
1000台オーバーのサーバを管理するにはインベントリファイルでは管理しきれないので、Yabitz(ヤビツ)という Webベースのサーバ管理ツールに登録したサーバの情報をもとに、API経由で動的に生成されたインベントリファイルを受け取って、 Ansible に流して処理をするような仕組みということでしょうか。
なるほど、フラットなインベントリファイルをゴニョゴニョ工夫するよりも管理がすっきりしそうですが、ご本人もおっしゃっているように、100台以下の単位のサーバ数ではメリットが少ないのかもしれません。
- たくさんのサーバにバッチを流すとかで使ってる
- OpenSSLのアレとか!
- Ansibleの良いところ
- 操作するサーバに必要なスペックが少ない。ミニマルな環境でも動く
- Simple tool chain and files
- Chefとかだと、シェルを書き直す手間が必要
- 日本語の記事があんまり無いのが難点!?
- Inventoryは、ホストとかグループをまとめたもの。グループのグループも指定できる
www[01:30].blog local virtualip=203.0.119.13
とかも可能
- 数百台のホストがあると、フラットなインベントリファイルだけでは大変。
- Yabitz
- どうするか? → Dynamic inventoryの仕組みを使う
- 引っ張ってきた情報を(実行した戻り値??)をInventoryとして使う?
- AWS EC2 external inventory scriptなども
- Custom dynamic inventory も作成可能
- サーバが増えたときに自動的に追加されるようにもできる
- 2000台で実行した実績もある
- NO MORE HOST LISTS
- "--list"のoutputのJSONに"_meta"を含めておくと、ホストのリストをダイナミックに生成する時間が減って楽かも?
以下、LT。
callback pluginを使ったタスク実行時間の可視化について(案)
by @rudy さん
- module と pluginで拡張できる
- pluginはPythonのみ
- lookup, connection, filter, vars, callbackという種類のPluginがある
- callbackは、いろいろなタイミングで呼ばれるcallbackを登録できる
- 裏技。「-i "localhost, "」などと、カンマを付けてダブルクォートで囲むと、インベントリファイルを作らなくて済む
AnsibleのJUNOS設定モジュールを書いてみた
by @saito_hideki さん
Slide: http://www.slideshare.net/h-saito/ansible-study1
- コンテナ型データセンタの運用とOpenStack
- それを Ansibleで
- 特に、ベアメタルプロビジョニング
- Cobblerを使う手前を Ansibleで
- モジュールがない。。作った!
- JUNOSはFreeBSDベースのスイッチ
- PythonのランタイムがないスイッチにどうやってAnsibleを実行するの?
- NETCONF over SSH
- レガシーのスイッチは反映に60秒ほどかかるので、冪等性が。。
インフラ屋とAnsible(仮)
by @LaughK さん
Slide: https://speakerdeck.com/laughk/mspdatutepurobiziyonsitai
- MSP(管理・運用代行)で、規模が小さいケース
- クライアント阿川に特別なツールの導入の必要がない
- sshconfigが使える → 踏み台を越えられるのも嬉しいところ
目指せ、サーバー構築1200台(仮)
by @myb1126 さん
Slide: https://speakerdeck.com/gracefullife/ansibledao-ru-madefalsedao
ああ、画質がぁ。。全然見えん。。
- 導入のキモは、エージェントレス型
- 半年かけてようやく、Ansibleでのオーケストレーション導入に至る
- ユースケース:コンフィグ生成+配置
- ベアメタルサーバのプロビジョンと組み合わせて
構成管理ツールAnsibleの構成管理について
by @iktakahiro さん
Blog: http://prezi.com/durqq6i8vfhn/ansible-in-ansible-1/
- ディレクトリ構成の話。
- https://github.com/iktakahiro/ansible_playbooks
- 汎用パッケージが増えすぎる?
- 発火点となるyamlは、ignitionというのを勝手に作ってみた
- roles/package/tasks につらつらと
- ファイルのダウンロードは社内から取ってきた方がいい。死んでるときがある??
- 課題
- Tagをもうちょっと活用したい
- Jenkinsとの連携
- 冪等性のことは忘れよう(笑)
Vagrant × Ansible
by @tomohiro_urakawa さん
- Vagrant に provisionerという機能がある(vagrant provision で?)
- vagrant provision では、インベントリファイルは自動生成してくれる
- 直接SSHが繋がらない場合は、export ANSIBLE_SSH_ARGS=xxx してから vagrant provision
chefからansibleに乗り換えた話
by @futoase さん
Slide: https://speakerdeck.com/futoase/chef-replaced-to-ansible
最後のどんでん返しネタが面白かったです(笑)。
- 前職で、chefのcookbookが元からあった
- Chefは学習コストが高い(僕にとっては)
- 実行順序が人間にやさしくない。。notify地獄
- オレオレcookbook。全部bashで書くとか
- 書き換えるときは、serverspecを使って環境を担保
- 撲滅まで 2.5ヶ月
- 導入の説明量が減った