role毎に別のgitレポジトリだと開発時の手間が煩雑
roleを作成してAnsible Galaxyに登録するワークフロー - Qiitaでは1つ1つのroleごとにgitレポジトリを作成して、Ansible Galaxyに登録し、ansible-galaxy install
でローカルに取得して利用していました。
が、それぞれのroleを開発中の場合は、修正してgitレポジトリにあげて、ansible-galaxy install
を --force
つきで実行して更新するという手間が面倒でした。
git subtreeを使ってみたら便利でした
そこで、git subtreeを使って各role毎にgitレポジトリは作成しつつ、その場で修正してコミットするというのを試してみました。
git subtreeを使うのは初めてでしたが、開発コラボレーションのヒント from Atlassian Blogs (6) Git Submodule の代替: Git Subtree | マイナビニュース の記事がわかりやすくて助かりました。ありがとうございます!
実際に作成したプレーブックはhnakamur/macbook_setupにあります。
例えばmacbook_setup/hnakamur.direnv at master · hnakamur/macbook_setupは
hnakamur/direnv-ansible_roleに subtree push
してあります。
role作成の手順
私が試していた手順は以下のとおりです。hnakamur.direnv
の例で説明します。
github上でroleのレポジトリを作成
githubのページの[Create new...]/[New repository]メニューでレポジトリを作ります。
git remoteを追加
git remote add direnv https://github.com/hnakamur/direnv-ansible_role
git subtreeを追加
git subtree add --prefix hnakamur.direnv direnv master
roleを開発して親レポジトリでコミット
roleのファイルを作成・修正したら親レポジトリでコミットします。
role毎のレポジトリにプッシュ
roleの開発が一区切りついたらプッシュしておきます。
git subtree push --prefix hnakamur.direnv direnv master