37
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AnsibleAdvent Calendar 2013

Day 9

AnsibleのPlaybookを作るgemを作りました。

Last updated at Posted at 2013-12-08

ご参加の方々また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)を作るとか。書類命な勤務先ではなかなか浸透しなさそうなので。。。
37
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?