#はじめに
以前にローカル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もリリースされたことだし、今後はコチラが主流になるのかな、と思います。