以下の内容はhttps://zaki-hmkc.hatenablog.com/entry/2025/11/15/224018より取得しました。


[AAP 2.4/2.5/2.6] 自己署名証明書などのinsecureなコンテナレジストリからイメージをpullするワークアラウンド

2025.12.16:AWXの場合を追記

AAP(Ansible Automation Platform)のAutomation Controller標準機能の設定で(Container Registryの認証情報でSSL検証をオフにしておけば)できると思っていたら実はできなかったので、回避策について調べてみた。
結論としては、ジョブのコンテナが動作するランタイムであるPodmanの設定で、pullしたいレジストリに対するinsecure設定を行えばOK
場合分けして説明しているが、内容は同じ。ただし公式手順ではないと思うので、「こうやったら動いた」という情報。
設定がなければTLS Verifyのエラーになる

tls: failed to verify certificate: x509: certificate signed by unknown authority

証明書にCNを使っていると以下

tls: failed to verify certificate: x509: certificate relies on legacy Common Name field, use SANs instead

なお、文中のinsecureなレジストリmy-registry.local.example.org:5000とする。

Podmanが動作するユーザー限定で設定

RPM版AAP (AAP 2.4-13で確認)

RPM版のAAPは、デフォルトではホストOSのawxユーザーで動作し、ジョブを起動した際はawxユーザー権限でコンテナがデプロイされる。
よって、awxユーザーで対象レジストリをinsecureでも許容するように認識されていれば良い。

awxユーザー限定でinsecureなレジストリアクセスを許容するには、以下設定の$HOME/.config/containers/registries.confを作成する。

[registries.insecure]
registries = ['my-registry.local.example.org:5000']

設定確認は以下。これはファイルを作成すれば即時反映される。

[awx@rhel9-dev3 ~]$ id
uid=985(awx) gid=985(awx) groups=985(awx),984(receptor),986(nginx),987(redis) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[awx@rhel9-dev3 ~]$ podman info -f json | jq '.registries'
{
  "my-registry.local.example.org:5000": {
    "Prefix": "my-registry.local.example.org:5000",
    "Location": "my-registry.local.example.org:5000",
    "Insecure": true,
    "PullFromMirror": "",
    "Mirrors": [],
    "Blocked": false,
    "MirrorByDigestOnly": false
  }
}

この状態になれば、対象レジストリからイメージpullがawxユーザーで成功するので、ジョブは正常に動作する。

コンテナ版AAP (containerized AAP 2.5-18 / 2.6-2で確認)

コンテナ版のAAPはRPM版と異なり、インストールを実施したユーザー権限のPodmanで動作する。また、ジョブのコンテナはホストOS上でなく、AAPのコンポーネントの一つであるreceptorコンテナ内にデプロイされる(Podman in Podman構成)

よって、receptorコンテナ内で上記と同様にinsecureレジストリ設定が必要になる。
が、receptorコンテナ内の設定をデプロイ後に編集できるのか??という疑問はあったが、幸いというかそういう仕様なのか、ホストOSのPodman設定がreceptorコンテナ内のPodman設定に貫通しているため、RPM版同様にホストOSでinsecureレジストリを許容するように設定すればOK

awxユーザーではなく、AAPをインストールしたユーザーで$HOME/.config/containers/registries.confを作成する。

[registries.insecure]
registries = ['my-registry.local.example.org:5000']

ファイルを作成すると、receptorコンテナ内のpodman infoでも即時反映を確認できる。(なのでコンテナ起動時の状態でなく、ホストOSの設定を直接参照していると思われる)

[zaki@rhel10-dev3 ~]$ podman exec receptor podman info -f json | jq '.registries'
{
  "my-registry.local.example.org:5000": {
    "Blocked": false,
    "Insecure": true,
    "Location": "my-registry.local.example.org:5000",
    "MirrorByDigestOnly": false,
    "Mirrors": [],
    "Prefix": "my-registry.local.example.org:5000",
    "PullFromMirror": ""
  }
}

システムワイドに設定する

ユーザー単位でなくシステムワイドにレジストリ設定をするには/etc/containers/registries.confに設定する。
と言いたいとこだけど、ドロップイン用のディレクトリが/etc/containers/registries.conf.dにあるので、このディレクトリに専用ファイルを作成する方が良い。ファイル名は.confが付いていればなんでもよい(以下、/etc/containers/registries.conf.d/insecure-registry.confとする)
ただし、前述同様の設定内容だと下記エラーが出力される。

Error: getting registries: loading drop-in registries configuration "/etc/containers/registries.conf.d/insecure-registry.conf": registry must be in v2 format but is in v1

正しくは、v2形式の書式で書く必要があり、以下のように記述すればOK

$ cat /etc/containers/registries.conf.d/insecure-registry.conf
[[registry]]
location = "my-registry.local.example.org:5000"
insecure = true

補足

コンテナ版AAPのホストOSのPodman設定がreceptorコンテナ内Podmanに貫通するこの動作はいつまで使えるかは不明。
ただ現状のreceptorコンテナ内のPodmanは、AAP2.5ではpodman-remote version 4.9.4-rhel、AAP2.6だとpodman-remote version 5.4.0が動作しており、名前からしてホストOSのpodmanを利用する形式だと思われるため、この方法が使えると考えてよさそう。

AAP2.5環境

[zaki@rhel10-dev3 ~]$ podman exec receptor podman --version
podman-remote version 4.9.4-rhel
[zaki@rhel10-dev3 ~]$ podman --version
podman version 5.4.0
[zaki@rhel10-dev3 ~]$ 

AAP2.6環境

[zaki@rhel10-dev4 ~]$ podman exec receptor podman --version
podman-remote version 5.4.0
[zaki@rhel10-dev4 ~]$ podman --version
podman version 5.6.0
[zaki@rhel10-dev4 ~]$ 

AWXの場合

AWXはKubernetesで動作するので、「Kubernetesでinsecureなレジストリを使用する方法」の観点の設定が必要。
よってKubernetesディストリビューションによって異なる。 基本的にコンテナランタイムによってノードOSに設定を加える形になる。

K3sであれば/etc/rancher/k3s/registries.yamlでinsecureレジストリ設定が可能。

docs.k3s.io

2025.12.16追記
K3sの場合の記述は以下の通り。

configs:
  "my-registry.local.example.org:5000":
    tls:
      insecure_skip_verify: true



以上の内容はhttps://zaki-hmkc.hatenablog.com/entry/2025/11/15/224018より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14