dehio3’s diary

仕事、生活、趣味のメモ

チーム内でのansibleリポジトリの管理方法

f:id:dehio3:20190711140040p:plain

はじめに

ansibleをリポジトリで管理してる時に、チーム内で挙動を合わせる為の対応メモ

考慮した事

  • ansibleの実行バージョンがメンバーのローカル環境のバージョンに左右されないようにする
  • 内製のroleとAnsible Galaxyのrole両方を使って運用してるので、ansible Galaxyのrole取得を容易にする

対応

pipenvで実行環境を合わせる

Ansible Galaxyからのroleを一括で取得

  • 取得するロールのリストファイル(requirements.yml)を作成
  • 作業前にコマンドで一括で取得する

構成ファイル

リポジトリ直下で以下のファイル構成を想定

Pipfile
requirements.yml
roles/
./Pipfile
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
ansible = "==2.7.9"

[dev-packages]

[requires]
python_version = "3.6"
./requirements.yml
# Datadog 
# https://galaxy.ansible.com/DataDog/datadog
- src: Datadog.datadog

作業手順

  1. 実行する仮想環境を作成
# Pipfileに指定したansibleバージョンをインストールした仮想環境作成
pipenv install
# 作成した環境にログイン
pipenv shell
  1. Ansible Galaxyからのroleを一括で取得
ansible-galaxy install -p ./roles -r requirements.yml