LoginSignup
37
37

More than 5 years have passed since last update.

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