たそ@ITインフラ初心者

taso@初心者エンジニア

新卒2年目 エンジニアが適当に語るブログてす

コンテナレジストリを使ったEEの登録

はじめに

こんにちは たそ(@taso_int)です。
1週間ぶりです。前よりモチベが上がってます。

前回はEE(execution environment)を作成し、
AWXユーザーにイメージを直接置くことで、AAP上に実行環境として登録することができました。
今回はコンテナレジストリーを使って、AAP上に実行環境として登録させたいと思います。

コンテナレジストリとは

本題ではないので、ざっくりと説明しますが、
コンテナイメージを保管するリポジトリのことです。
Dockerの学習でbuild,ship,runという内容があり、
ここのshipでイメージの共有としてよく使われるところのことを指してます。

コンテナレジストリサービスは色々あります。
今回はクラウドサービスを利用したいと思います。

やり方はそこまで差がないと思います。

環境

AAPおよびEEイメージは既にある状態で行います。
各構築方法はこちらへ

taso-int.hatenablog.com

taso-int.hatenablog.com

AAPのライセンスに関しては
Red HatさんのRed Hat Developer Programに参加し、
Developer Subscriptionを利用しています。

詳細はこちらへ

rheb.hatenablog.com

ECRを使ったやり方

EEをECRにpushするまで

今回はPrivate Registoryの方でイメージの登録をします。

リポジトリの作成を選択し、必要な設定をします。
たぶんリポジトリ名を決めるだけで問題ないと思います。

awscliをインストールおよび設定をします。
以降はrootユーザーで作業します

awscliのインストール(venvを作らずにpipするの怖い)
pip3 install awscli

awscliの設定
aws configure
AWS Access Key ID [None]: アクセスキー
AWS Secret Access Key [None]: シークレットキー
Default region name [None]: リージョン名
Default output format [None]: json

これで準備が出来たのでimageのpushを行います。

レジストリに対して認証を行う
aws ecr get-login-password --region リージョン名 | podman login --username AWS --password-stdin アカウントID.dkr.ecr.リージョン.amazonaws.com
Login Succeeded!

イメージのタグ付け
podman tag smartcs_ee:latest アカウントID.dkr.ecr.リージョン.amazonaws.com/smartcs_ee:latest

イメージのpush
podman push アカウントID.dkr.ecr.リージョン.amazonaws.com/smartcs_ee:latest

AAPで使用するパスワードの取得(メモる)
aws ecr get-login-password

上手くいくとイメージタグにlatestがついたものがリストに載ります。

これで完了です。

コンテナレジストリを利用するとAAP上で無理にEEイメージを作成する必要性が 無くなるが割といいかなと思いました。

AAPの設定

AAPで設定を行います。
イメージをpullするのに認証情報が必要になります。

認証情報の追加

名前: ECR(なんでも)  
認証情報タイプ: コンテナーレジストリー  
タイプの詳細  
認証URL: アカウントID.dkr.ecr.リージョン.amazonaws.com  
ユーザー名: AWS  
パスワードまたはトークン: aws ecr get-login-passwordの結果  

実行環境の追加

名前: なんでも  
イメージ: アカウントID.dkr.ecr.リージョン.amazonaws.com/smartcs_ee:latest(pushした時のタグ)
プル: 実行前に必ずコンテナーをプルするorイメージが存在しない場合のみプルする
レジストリーの認証情報: 上で設定した認証情報  

これで試しに実行してみましょう
問題なく実行できました。

認証情報とかを間違えるとunauthorized: authentication required みたいなエラーが出ます。

ACRを使ったやり方

EEをACRにpushするまで

コンテナーレジストリから作成をクリックします。

設定を入れます。
リソースグループはなければ作りましょう。

サーバー側にazure-cliはいりませんでした。

そのままimageのpushを行います。

レジストリに対して認証を行う
podman login レジストリ名.azurecr.io
Username: ACRの設定にあるアクセスキーのユーザー名
Password: ACRの設定にあるアクセスキーのパスワード
Login Succeeded!

イメージのタグ付け
podman tag smartcs_ee:latest レジストリ名.azurecr.io/smartcs_ee:latest

イメージのpush
podman push レジストリ名.azurecr.io/smartcs_ee:latest

imageのpushが出来ました。

AAPで設定を行います。
こちらも同様にイメージをpullするのに認証情報が必要になります。

認証情報の追加

名前: ACR(なんでも)  
認証情報タイプ: コンテナーレジストリー  
タイプの詳細  
認証URL: レジストリ名.azurecr.io  
ユーザー名: ACRの設定にあるアクセスキーのユーザー名  
パスワードまたはトークン: ACRの設定にあるアクセスキーのパスワード 

実行環境の追加

名前: なんでも  
イメージ: レジストリ名.azurecr.io/smartcs_ee:latest(pushしたタグ)
プル: 実行前に必ずコンテナーをプルするorイメージが存在しない場合のみプルする
レジストリーの認証情報: 上で設定した認証情報  

これで試しに実行してみましょう
問題なく実行できました。

最後にAWXユーザーに入ってちゃんとイメージを取得してるか
確認して終わりたいと思います。

[awx]$ podman images
REPOSITORY                                                            TAG         IMAGE ID      CREATED      SIZE
*******.azurecr.io/smartcs_ee                                         latest      cfd020121b4a  6 days ago   449 MB
***********************************.amazonaws.com/smartcs_ee          latest      cfd020121b4a  6 days ago   449 MB
registry.redhat.io/ansible-automation-platform-22/ee-supported-rhel8  latest      5b5c0fdeca9a  5 weeks ago  1.45 GB
registry.redhat.io/ansible-automation-platform-22/ee-minimal-rhel8    latest      c2450081e5d1  5 weeks ago  286 MB
registry.redhat.io/ansible-automation-platform-22/ee-29-rhel8         latest      c39fb0c046f4  5 weeks ago  799 MB

以上となります。
ここまで読んでいただきありがとうございました。
次の記事はAAPのローカルサーバーに 生成したファイルを保存する方法について書ければなと思います。