構成管理ツールAnsibleを使い始めた
2015.06.23にヒカ☆ラボにて実施された、構成管理ツール「Ansible」の勉強会に参加してきました。
登壇したのはDMM.comラボの開発者の方です。
勉強会メモ
Ansibleで何ができるのか
2013年ごろからGoogle検索のトレンドになりつつある。
Ansibleは構成管理ツールだが、デプロイもできる。 JenkinsでAnsibleを使って自動デプロイをするといったようなことも可。
OS ミドルウェアの導入、設定でChefやAnsibleがよく使われる
ソフトウェアのデプロイ、OS/ミドルウェアの構成管理、開発端末のセットアップはAnsibleだけでできる。
Ansibleのユースケース
- デプロイ
- 構成管理
- 継続的デリバリ
Ansibleのコンセプト
作者の言葉: Ansible's Architecture: Beyond Configuration Management
オーケストレーションというコンセプトもある。Ansibleはこれらを全部できる。
Ansibleは構成管理とデプロイのどちらかではなく、アプリケーションを完成させること。全てを自動化させる。
Ansibleの基本的な使い方
Ansibleの特徴
Ansibleで準備するファイル
- inventory
- 実行対象のホスト軍を定義
- playbook
- 一連のタスクを定義
- ansible.cfg
Ansibleコマンドを実行
ansible -i "127.0.0.1" all -m debug -a "msg=hello"
-i INVENTORY -m MODULE_NAME -a MODULE_ARGS
Ansible playbook
playbook.ymlという名前のファイルで作成
- hosts: local connection: local tasks: - name: ファイルの作成 file: path=/tmp/helloworld/{{item}} state=touch with_items: - test1.txt - test2.txt - name: OSXの合成音声 osx_say: msg="Hello World" voice={{item}} with_items: - whisper - kyoko - Zarvox
↑ Mac OSXのsayコマンドで合成音声ができる
(こんなコマンドがあったなんて知らなかった…w)
Moduleについて
対象ホスト or Playbookを通して実行されるもの
- copy
- filecommand
- get_url
- unarchive
- template
- service
Handlerについて
設定ファイルを書き換えた際の再起動といったユースケースではHandlerをつかう
処理が複雑になった場合
- 対策
- includeで他のファイルを読み込む
- taskを分割する
- 変数を定義する
- ロールにまとめてしまう
- playbookを構成する最適な方法
- ファイル構成に従えば、自動的にvarsなどが読み取られる
DMMでの活用事例
勉強会に参加して
社内の別の部署でChefを使った調査を実施しているのは聞いたことがあったのですが、覚えることが多すぎて利用する気になれませんでした…
今回紹介されたAnsibleはエージェントレスで実行ができ、YAML形式で定義が可能で可読性が高いということで、一目で気に入りました。これはすぐに使えそうだと実感できたんですね。
そこで、実際にAnsibleを利用してみることにしました。
私が開発を担当しているサービスでは、無償のトライアル環境を提供する際にはサイトを手動で構築することが多く、その構築作業を面倒に感じていたため、その作業をAnsibleで自動化しました。
実際に自動化した作業は下記の通りです。
これらの作業をコマンド1つで実行できるようになりました。なんでこれまで自動化しなかったんだろうというレベルですね…w
社内の勉強会でもAnsibleを紹介して評判がよかったので、これからAnsibleをうまく更に使いこなせるように勉強していきたいと思います。