ローカルAnsible GalaxyでプライベートなCollection管理(Galaxy NG編)


はじめに

以前にローカルAnsible GalaxyでプライベートなCollection管理という記事を書きました。
今回はGalaxy NGという別実装を試してみます。

フロントエンド側のリポジトリを見ると「Frontend for Ansible Automation Hub」と記載があるので、Tower 3.8.0から同梱されるようになったAutomation Hub※のOSS版というような位置付けでしょうか。

※参考:https://tekunabe.hatenablog.jp/entry/2020/11/19/091903

試した環境

Galaxy NG 4.2.0
CentOS Linux release 7.8.2003(Galaxy NGのインストール先。今回はOracle CloudのAlways Free枠で建てたCPU1コア・メモリ1GBのサーバを利用しています)
Ansible 2.9.13(インストールに使用。上記のCentOSではなく、自分の端末にインストールして使用しています)
AWX 15.0.1(インストール後の動作確認環境)

インストール手順

リポジトリ内にドキュメントがあるので、そのとおりに進めます。

Ansibleがインストールされている端末から、以下を実行していきます。

必要なコレクションをインストール。

$ ansible-galaxy collection install pulp.pulp_installer
$ ansible-galaxy collection install ansible.galaxy_collection

インストールに利用するPlaybookなどを取得します。

$ git clone https://gist.github.com/629ba52d68301cc9798227b87704df84.git example
$ cd example

enduser-install-vars.yml内の「pulp_default_admin_password」の値を変更しておきます。
この値が管理ユーザーのログインパスワードになります。

$ vi enduser-install-vars.yml

最初にインストールしたpulp_installerの動作に必要なロール・コレクションをインストール。

$ ansible-galaxy install -r ~/.ansible/collections/ansible_collections/pulp/pulp_installer/requirements.yml

インストール先のサーバのinventoryファイルを作成します。

$ vi hosts
XXX.XXX.XXX.XXX ansible_user=opc

Ansibleを使ってインストールします。
ドキュメントにはPythonパッケージを利用する方法とRPMパッケージを利用する方法の2パターン記載がありましたが、私はPythonパッケージ利用の方法で実行しました。

$ ansible-playbook enduser-install.yml -i hosts --extra-vars "@enduser-install-vars.yml"

完了したらブラウザで「https://<サーバーIP>」を開くと、ログイン画面に遷移します。
Usernameは「admin」、パスワードは上記で設定したものでログイン可能です。

コレクションのアップロード

まずはNamespaceを作成してみましょう。
左のメニューの「My Namespaces」をクリックし、「Create」ボタンを押下し作成します。

Namespaceを作成したら、「Upload collection」を押下しアップロードします。

また、コレクションのアップロードはコマンドからも可能です。
左メニューのAPI Tokenからトークンを発行し、

以下のようにコマンドを実行します。

$ ansible-galaxy collection publish <Collectionのtar.gz> --api-key <発行したトークン> --server https://<サーバーのIP>/api/galaxy/ --ignore-certs

AWXから利用する

以前は「設定」の中に参照するGalaxyサーバーの設定がありましたが、バージョン15あたりから「認証情報」に変わったようです。

「認証情報タイプ」で『Ansible Galaxy/Automation Hub API トークン』を選択、
「GALAXY SERVER URL」に『https://<サーバーのIP>/api/galaxy/』、
「APIトークン」にGalaxy NG側で発行したAPIトークンを入力し保存します。

次に「組織」の設定で『GALAXY 認証情報』に上記で作成した認証情報を追加。

最後に「設定 -> ジョブ」にて『ANSIBLE GALAXY SSL 証明書の検証を無視する』を有効化します。

以上で設定は終了です。以前の記事で書いたようにcollections/requirements.ymlを含めたプロジェクトを作成すれば、Galaxy NGにアップロードしたコレクションを利用できます。

終わりに

インストールや初期設定は通常のGalaxyよりコチラの方が簡単な印象。
Private Automation Hubもリリースされたことだし、今後はコチラが主流になるのかな、と思います。