试试玩 Ansible Galaxy OSS
这篇文章是Ansible Advent Calendar 2016 的第23天的文章。
首先
前不久(好久以前?),Ansible Galaxy 成为开源软件了是吧?
红帽推出了首个开源版的 Ansible Galaxy。
我想,可能会有一些在公司内部分享一些小角色方面的东西变得更加方便的想法,所以试着构建了一下。
由于我在快速浏览过程中没有找到有关OSS安装步骤和使用经验的文章,所以我打算记录下构建步骤和一些感受。
得出结论
就先把结论写下来吧,和我原以为的完全不一样,真是我的疏忽误会了…
最初にOSS化と聞いたとき、私が思っていたのは、Ansible Galaxyをローカルに設置し、そこにロールを保存して完全にローカルで閉じることでした。ただし、それはWeb版ではなくOSSではないバージョンと同様でした。
-
- githubとの連携が不可欠
- galaxyへのroleの登録 = githubにpushされたroleへのリンクを作成
这个机制已经如此设定。
所以,尽管完全本地封闭的想法似乎不太可能实现(虽然没有确认过),但如果在GitHub企业版上有私有存储库,可以构建一个私有的Ansible Galaxy。
建立程序/所做的事情
Ansible Galaxyのページにも、
githubのREADMEにもインストール手順がなくて多少あわてましたが、
Makefileがあるからそれを見ればいいのか、と思い構築しました。
政策
在Ansible Galaxy的GitHub资源仓库中,通过查看Makefile可以发现
# Build Galaxy images
build_from_scratch:
ansible-container --var-file ansible/develop.yml build --from-scratch -- -e"@/ansible-container/ansible/develop.yml"
# Start Galaxy containers
run:
ansible-container --var-file ansible/develop.yml run -d memcache; \
ansible-container --var-file ansible/develop.yml run -d rabbit; \
ansible-container --var-file ansible/develop.yml run -d postgres; \
ansible-container --var-file ansible/develop.yml run -d elastic; \
ansible-container --var-file ansible/develop.yml --debug run django gulp
听说过。
使用ansible-container可以构建并启动。
(ansible-container是什么。。。orz)
看起来是用docker容器做的。
Ansible容器
新しいAnsible Containerを使うとPlaybookだけでDockerイメージをビルドできる
なるほど。
playbook(main.yml)でDocker imageの作成手順を記載でき、
container.ymlにdocker-compose likeの記法で、
作成/起動するイメージを記載することで、上手いことやってくれるツールなのか。
必需的工具 (bì xū de jù)
所以,在创建Ansible Galaxy容器之前需要的工具清单如下。
-
- python 2.7
-
- docker-engine
-
- pip
-
- setuptools 20.0.0+
-
- ansible-container
- git
安装这些即可完成准备。
建构
git clone --depth 1 https://github.com/ansible/galaxy.git
cd galaxy
make build_from_scratch
# すんなり行けば問題ないが、イメージ作成後のイメージcommit時にerrorが発生した。
# UnixHTTPConnectionPool(host='localhost', port=None): Read timed out
# 解決策がわからなかったので手でcommit,tag付けを行った
make run
# http://<installしたserver ip>:8000 で接続できる

我为什么会不知不觉感动起来,感叹这是真正的东西。
账户验证是必要的。尽管在使用中最终需要使用Github(正如我在[结论]中所提到的),但目前只需要进行登录操作即可,为此我已经采取了以下步骤。
# suの作成
make createsuperuser
# galaxy/accounts/admin.py
# 'fields': admin.util.flatten_fieldsets(self.add_fieldsets),
# ↓
# 'fields': admin.utils.flatten_fieldsets(self.add_fieldsets),
# へと変更(djangoのVersion upに伴いメソッド名が変わったらしい)
# その後、http://<installしたserver ip>:8000/admin に接続
这样一来,就可以进入Ansible Galaxy(Django)所使用的身份验证库(django-allauth)的管理界面。
所以,当你进行账户注册、邮箱注册/确认等操作后,就可以登录到Ansible Galaxy上。在之后的角色注册中,需要将账户与GitHub关联起来。
结束
我对Ansible Galaxy的开源版本很感兴趣,所以尝试搭建了一下。
现在要完全关闭我原本以为的可能性似乎很困难,令人遗憾,
但我希望未来能进行一些改进,使得不再依赖Github,
并且抱有对他人的期望。
※ 因为ansible-container非常易于使用,所以我打算继续使用它。
请查阅
https://github.com/ansible/ansible-container
http://docs.ansible.com/ansible-container/
以下是两个网址:
https://github.com/ansible/ansible-container
http://docs.ansible.com/ansible-container/