BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【Ansible】AnsibleTowerでGitのリポジトリにあるPlaybookを利用する

 こんにちは!
 BFT名古屋支店の、佐野です。

 今回はAnsibleの機能拡張ソフトウェアである“AnsibleTower”に関する記事です。

 以前の記事にて、AnsibleTowerにおいてPlaybook自体の管理を行なうことができない旨と、Git、SubversionMercurialといったソースコード管理システムからPlaybookを引っ張ってくることができるといった内容を少しだけ記しました。
 今回はその件、特にGitにあるPlaybookをAnsibleTowerで用いる方法についてお送りいたします。


はじめに:Ansible TowerとGitの結びつき

 まずAnsibleTowerにおけるPlaybookの管理単位であるプロジェクトでは、AnsibleTower本体にあるPlaybookの他、Git、SubversionMercurialといったバージョン/ソースコード管理システムにあるPlaybookを利用することが可能です。
 今回の主題となるGitの場合、利用するリポジトリとURLでプロジェクトに紐づけることにより、そのリポジトリの中にあるPlaybookを使用できます。
 一般には公開しないプライベートリポジトリに関しても、プロジェクトにリポジトリの認証情報を付与することで、利用することができるようになります。

 またAnsibleTower内にPlaybookディレクトリを配置して使用する「手動」の場合と違い、以下の図で表わす通り、ひとつのリポジトリを複数のプロジェクトに割り当てることもできます。

f:id:bftnagoya:20210204181515p:plain


Gitへの認証情報登録

 前述の通り、GitのプライベートなリポジトリからPlaybookを利用するためには、そのPlaybookを利用するプロジェクトにプライベートリポジトリ向けの認証情報を与える必要があります。
 AnsibleTowerの認証情報というと、ジョブ実行時に管理対象へアクセスするためのものが第一に浮かぶと思いますが、その場合の認証情報タイプは「マシン」となっているかと思います。
 その認証情報タイプを「ソースコントロール」とすることで、Git向けの認証情報とすることができます。

以下、作成例の図となります。

f:id:bftnagoya:20210204181519p:plain

 注意点として、Gitに関する認証情報タイプに「GitHubパーソナルアクセストークン」および「GitLabパーソナルアクセストークン」というものがありますが、こちらはWebhookを使用してGitの操作や管理を行なう場合に使用するものになります。
 Gitのリポジトリの認証情報を初めて作る際に、Git関連のものということで間違いやすいかと思いますので、注意が必要です。

f:id:bftnagoya:20210204181916p:plain


Gitのリポジトリと紐づけたプロジェクトの作成(とジョブテンプレートの作成)

 認証情報を登録したら、Gitのプライベートリポジトリを使用するプロジェクトを作成し、先程作成したGitの認証情報を紐づけます。

 プロジェクトにおいてSCMタイプを“Git”とすることで、リポジトリのURLを指定するための項目「SCM URL」と、先程作成した認証情報を紐づける項目「SCM 認証情報」が表示されます。
 なおSCM URLで指定するリポジトリURLについては、httpsのものを指定します。

以下、作成例の図となります。

f:id:bftnagoya:20210204181521p:plain

 ここまで来れば、後はAnsibleTowerのローカルにあるPlaybookを紐づけたプトジェクトを利用する場合と同じように、Gitのリポジトリと紐づけたプロジェクトを使ってジョブテンプレートを作成することができるようになります。

f:id:bftnagoya:20210204181511p:plain


さいごに

 このように、AnsibleTowerでGitのリポジトリ内にあるPlaybookは簡単に利用することが可能です。
 また業務として行なうことはないと思いますが、公開されているパブリックなリポジトリであれば、当然リポジトリを利用するための認証情報は不要となり、リポジトリURLを指定するだけでリポジトリ内のPlaybookを使用することができます。

 AnsibleTower(もしくはAWX)とGitを連携させるのってハードル高そうだからやめとこう、という方もいらっしゃるかもしれませんが、リポジトリさえ用意できればすぐにできますので、AnsibleTowerを運用する際には是非活用してください。