LoginSignup
8
4

More than 5 years have passed since last update.

Ansible Galaxy OSSを触ってみて

Posted at

この記事は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を見ると、

Makefile_L.57-59
# Build Galaxy images 
build_from_scratch:
    ansible-container --var-file ansible/develop.yml build --from-scratch -- -e"@/ansible-container/ansible/develop.yml"
Makefile_L.76-82
# 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 で接続できる

そうしたところ、以下が表示された。
top_1.PNG

本物だ!!となぜか感動してしまった。

アカウント認証は、
(使用していくのには[結論]でも書いたように最終的には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/

8
4
2

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
8
4