Ansible Galaxy OSSを触ってみて
この記事はAnsible Advent Calendar 2016 の23日目の記事です。
はじめに
ちょっと前(大分前?)にAnsible Galaxy がOSS化しましたね。
Red Hat Launches First Open Source Release of Ansible Galaxy
社内でのちょっとしたroleの共有とかが便利になるかなと思い、
試しに構築してみました。
OSSのinstall手順とか、使ってみた記事等を
パッと見た感じ、みつけられなかったので、
構築の手順とか、所感とかを諸々と残していきます。
結論
先に結論を書くと、思っていたものと違いました、ってところでした。
(勝手に勘違いしていた。。。)
そもそもOSS化、と聞いて思っていたものは、
Ansible Galaxyがローカルに建てられて、(githubではなく)そこにroleを保存して、
完全にローカルで閉じる、というものだったのですが、
Web版(OSSではない版)と同じように、
- githubとの連携が不可欠
- galaxyへのroleの登録 = githubにpushされたroleへのリンクを作成
という仕組みになっていました。
なので、
イメージしていた完全にローカルで閉じるのは無理そうですが、
(確認してはいませんが、)github enterpriseでprivateリポジトリを持っていれば、
privateな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を使えばbuildができて起動もできるようだ。
(ansible-container ってなんだ。。。orz)
でもdockerコンテナでやるっぽい。
ansible-container
新しいAnsible Containerを使うとPlaybookだけでDockerイメージをビルドできる
なるほど。
playbook(main.yml)でDocker imageの作成手順を記載でき、
container.ymlにdocker-compose likeの記法で、
作成/起動するイメージを記載することで、上手いことやってくれるツールなのか。
必要なツール
ということで、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にもログインできるようになる。
その後のroleの登録にはアカウントとgithub紐づけが必要。
終わりに
気になっていたAnsible Galaxy のOSS版を構築してみました。
思っていた完全クローズにするのは今は厳しそうで残念でしたが、
今後、githubがなくても良くなるような改修が入らないかなと、
人任せの期待を抱いています。
※ ansible-containerは結構使いやすかったので、使っていこうと思いました。
参考
https://github.com/ansible/ansible-container
http://docs.ansible.com/ansible-container/
Author And Source
この問題について(Ansible Galaxy OSSを触ってみて), 我々は、より多くの情報をここで見つけました https://qiita.com/m0riiiii/items/be1141f515e4062ccbf1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .