ご参加の方々また2回目表明の方々ありがとうございます。
予想以上に参加者が増えてびっくりです。
(当初は人気(ひとけ)が無かったので、1つずつモジュールを翻訳して時間を稼ごうかと思っていました…)
3回目はさすがに厳しそうですが、余裕があれば頑張りたいところです:)
さて、Ansibleの初期構成を簡単に作るRubygemを作成しましたので紹介します。
ダウンロード/ソースコード
Rubygemsページ
ansible_tools - RubyGems
Githubページ
ansible_tools - Github
できること
- Ansibleのディレクトリ構成を3パターンで生成することが出来ます。
- roles/xxx/vars/main.yml内の変数を確認することが出来ます。
困っていたこと
- ディレクトリ構成を作るのがめんどくさい。以前、シェルスクリプトを作ったけど、不便だった。
- vas/main.yml内の変数の確認がいちいちめんどくさい。
#インストール
動作環境
次の環境で動作を確認しています。
MacOS X 10.7.5 + ruby 2.0.0p353
CentOS 6.4 + ruby 2.0.0p353
##インストール方法
$ gem install ansible_tools
#使い方
$ ansible-tools
Commands:
ansible-tools help [COMMAND] # Describe available commands or one specific command
ansible-tools init [-s][-r] # create ansible files by BestPractice
ansible-tools show # show ansible valiables in vars/main.yml
ansible-tools version # show version
##BestPracticeな構成を作る。
Best Practices - ANSIBLEWORKSに従ったディレクトリ構成とファイルを作成します。
ちなみにファイルの中身はありません。そのうち、簡単な中身も入れます。
$ ansbile-tools init
create roles/common/tasks
create roles/common/handlers
create roles/common/templates
create roles/common/vars
create roles/common/file
create group_var
create host_var
create site.yml
create roles/common/tasks/main.yml
create roles/common/handlers/main.yml
create roles/common/templates/foo.conf.j2
create roles/common/vars/main.yml
create roles/common/file/bar.txt
create production
create stage
create group_var/group1
create group_var/group2
create host_var/hostname1
create host_var/hostname2
ヘルプはこんな感じです。
$ ansible-tools help init
Usage:
ansible-tools init [-s][-r]
Options:
-s, [--simple] # simple-mode, create only setup.yml, roles/common
-r, [--role=ROLE] # create roles/ROLE
create ansible files by BestPractice
##Simpleな構成を作る。
BestPracticeのように大きい構成は必要ない時に、最小限な構成を作ります。
私はこの構成を中心に使っています。
init
に-sもしくは--simple
を付加します。
$ ansbile-tools init -s
create roles/common/tasks
create roles/common/handlers
create roles/common/templates
create roles/common/vars
create roles/common/file
create site.yml
create roles/common/tasks/main.yml
create roles/common/handlers/main.yml
create roles/common/templates/foo.conf.j2
create roles/common/vars/main.yml
create roles/common/file/bar.txt
個人的には以下のようなhostsを用意して、$ansible-playbook site.yml -i hosts
と実行しています。
# hosts
[server]
192.168.0.104
Roleの追加
Roleだけを追加したい時にディレクトリとファイルを追加します。
init
に-r nameもしくは--role=name
を付加します。
$ ansbile-tools init -r <roles name>
e.g.
$ ansible-tools init -r gitlab
create roles/gitlab/tasks
create roles/gitlab/handlers
create roles/gitlab/templates
create roles/gitlab/vars
create roles/gitlab/file
create site.yml
create roles/gitlab/tasks/main.yml
create roles/gitlab/handlers/main.yml
create roles/gitlab/templates/foo.conf.j2
create roles/gitlab/vars/main.yml
create roles/gitlab/file/bar.txt
書いている時に気づきましたが、site.ymlも作っているのであとで作らないように修正します。
現状ではsite.ymlが存在していたら作成しないので問題はありません。。
##変数の一覧表示
roles/name/vars/main.ymlの内容を一覧で表示させます。
$ ansbile-tools show
+----------------------------------------------------------------------------+
| File | Key | Value |
+----------------------------------------------------------------------------+
| roles/gitlab/vars/main.yml | mysql_gitlab_password | password |
| roles/gitlab/vars/main.yml | mysql_gitlab_database | gitlabhq_production |
| roles/mariadb/vars/main.yml | mysql_root_password | password |
| roles/Packages/vars/main.yml | www_port | 80 |
| roles/ruby/vars/main.yml | ruby_ver | 2.0.0-p247 |
+----------------------------------------------------------------------------+
TODO
- テストやドキュメントを書く。
- 何か必要そうな機能があれば作る。ansible-docを使ってtaskから要領書(word)を作るとか。書類命な勤務先ではなかなか浸透しなさそうなので。。。