我开发了一个用于创建Ansible Playbook的Gem
非常感谢参与的人们和第二次表示自己的人们。
参加者的增加超出了预期,让我感到惊讶。
(最初我以为不会有很多人,所以考虑逐个模块进行翻译,以此来争取时间…)
第三次可能会很严苛,但如果有余力,我想要努力一下:)
通过创建一个简单的Rubygem来介绍我刚刚实现的用于快速配置Ansible的工具。
下载/源代码
RubyGems页面上的ansible_tools。
Github页面
ansible_tools – Github
可以做的事情 zuò de
-
- Ansibleのディレクトリ構成を3パターンで生成することが出来ます。
- roles/xxx/vars/main.yml内の変数を確認することが出来ます。
我遇到了困难的情况
-
- ディレクトリ構成を作るのがめんどくさい。以前、シェルスクリプトを作ったけど、不便だった。
- vas/main.yml内の変数の確認がいちいちめんどくさい。
安装
行动环境 zuò
我正在这个环境下进行操作验证。
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
创建最佳实践的结构。
按照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
构建一个简单的结构。
当不需要像Best Practice那样大型的配置时,我们会创建最小限度的配置。
我主要使用这个配置。
在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
增加角色
当您只想添加角色时,需要添加目录和文件。
在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 |
+----------------------------------------------------------------------------+
待办事项
-
- テストやドキュメントを書く。
- 何か必要そうな機能があれば作る。ansible-docを使ってtaskから要領書(word)を作るとか。書類命な勤務先ではなかなか浸透しなさそうなので。。。