LDAP/Containerにてopenldapのコンテナをpodmanで作ってみた

次に LDAP Account Manager もコンテナとして組み込んで compose を作ってみた

参照先 https://qiita.com/luhoriuchi/items/bf29f886a78a3500e759

ここではdockerではなく podman で作ってます

準備

[root@ldap ~]# cat /etc/redhat-release
Rocky Linux release 9.7 (Blue Onyx)
 
[root@ldap ~]# dnf install epel-release
[root@ldap ~]# dnf install podman podman-compose

あとfirewallにあなを開けます

[root@ldap ~]# firewall-cmd --add-service=ldap --add-service=ldaps --add-service=http --zone=public --permanent
[root@ldap ~]# firewall-cmd --reload
 
[root@ldap ~]# getenforce
Enforcing
[root@ldap ~]#

compose.ymlの作成

LDAP/Containerの内容を踏襲します

[root@ldap ~]# mkdir -p /srv/openldap/certs
[root@ldap ~]# cd /srv/openldap/certs
[root@ldap certs]# vi cert.cnf
[req]
distinguished_name = dn
x509_extensions = v3_req
prompt = no
[dn]
CN = ldap.cluster.internal
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = ldap.cluster.internal
 
[root@ldap certs]# openssl genrsa 2048 > cert.key
[root@ldap certs]# openssl req -new -x509  -key cert.key -out cert.crt -days 3650 -config cert.cnf -extensions v3_req
[root@ldap certs]# cp cert.crt ca.crt

そして compose.yml ファイルを用意します
「OPENLDAP_BOOTSTRAP_CONFIG_ROOT_PASSWORD_HASHED:」と「OPENLDAP_BOOTSTRAP_DATA_ROOT_PASSWORD_HASHED:」のパスワード文字列は slappasswd か LDAP/Container のpythonスクリプトで得てください

[root@ldap ~]# podman volume create openldap-conf
[root@ldap ~]# podman volume create openldap-data
[root@ldap ~]# podman volume create openldap-backups
 
[root@ldap ~]# mkdir $HOME/ldap
[root@ldap ~]# cd $HOME/ldap
 
[root@ldap ldap]# vi compose.yml
version: '3.8'
services:
  openldap-container:
    image: docker.io/osixia/openldap:2.6.10-alpha
    container_name: openldap-container
    hostname: ldap.cluster.internal
    ports:
      - 389:3890
      - 636:6360
    environment:
      OPENLDAP_BOOTSTRAP_ORGANIZATION: "chaperone"
      OPENLDAP_BOOTSTRAP_SUFFIX:       "dc=cluster,dc=internal"
      OPENLDAP_BOOTSTRAP_TLS:          "true"
      OPENLDAP_BOOTSTRAP_TLS_CERT:     "/container/services/openldap/assets/certs/cert.crt"
      OPENLDAP_BOOTSTRAP_TLS_CERT_KEY:   "/container/services/openldap/assets/certs/cert.key"
      OPENLDAP_BOOTSTRAP_TLS_CA_CERT:    "/container/services/openldap/assets/certs/ca.crt"
      OPENLDAP_BOOTSTRAP_CONFIG_ROOT_DN: "cn=admin,cn=config"
      OPENLDAP_BOOTSTRAP_DATA_ROOT_DN:   "cn=manager,dc=cluster,dc=internal"
      OPENLDAP_BOOTSTRAP_PPOLICY:        "true"
      OPENLDAP_BOOTSTRAP_PPOLICY_DEFAULT_MIN_LENGTH: 3
      OPENLDAP_BOOTSTRAP_PPOLICY_DEFAULT_IN_HISTORY: 0
      OPENLDAP_BOOTSTRAP_MEMBEROF:       "true"
      OPENLDAP_BOOTSTRAP_CONFIG_ROOT_PASSWORD_HASHED: "{SSHA}J+3AMq6fyrZnJr5hOo0CAAAAAAAAAAA"
      OPENLDAP_BOOTSTRAP_DATA_ROOT_PASSWORD_HASHED:   "{SSHA}J+3AMq6fyrZnJr5hOo0CAAAAAAAAAAA"
      OPENLDAP_BOOTSTRAP_SCHEMAS:        "core.ldif cosine.ldif inetorgperson.ldif rfc2307bis.ldif samba.ldif sudo.ldif"
    volumes:
      - openldap-conf:/etc/openldap/slapd.d
      - openldap-data:/var/lib/openldap/openldap-data
      - openldap-backups:/var/lib/openldap/openldap-backups
      - /etc/localtime:/etc/localtime:ro
      - /srv/openldap/certs:/container/services/openldap/assets/certs:Z
 
  lam:
    image: ghcr.io/ldapaccountmanager/lam:stable
    container_name: lam
    environment:
      LDAP_DOMAIN:       "cluster.internal"
      LDAP_BASE_DN:      "dc=cluster,dc=internal"
      LDAP_USERS_DN:     "ou=people,dc=cluster,dc=internal"
      LDAP_GROUPS_DN:    "ou=groups,dc=cluster,dc=internal"
      LDAP_SERVER:       "ldap://openldap-container:3890"
      LAM_LANG:          "ja_JP"
      LAM_PASSWORD:      "lam"
      VIRTUAL_HOST:      "lam"
      CERT_NAME:         "cert"
    ports:
      - "8080:80"
    depends_on:
      - openldap-container
 
volumes:
  openldap-conf:
    external: true
  openldap-data:
    external: true
  openldap-backups:
    external: true
 
[root@ldap ldap]#

これでcompose.ymlファイルがある場所にて

[root@ldap ldap]# podman-compose up -d
 
[root@ldap ldap]# podman ps
CONTAINER ID  IMAGE                                   COMMAND               CREATED        STATUS        PORTS                                         NAMES
b4337f0fa790  docker.io/osixia/openldap:2.6.10-alpha                        6 seconds ago  Up 6 seconds  0.0.0.0:389->3890/tcp, 0.0.0.0:636->6360/tcp  openldap-container
200f2f8bbe40  ghcr.io/ldapaccountmanager/lam:stable   /usr/local/bin/st...  6 seconds ago  Up 6 seconds  0.0.0.0:8080->80/tcp                          lam
 
[root@ldap ldap]# podman volume ls
DRIVER      VOLUME NAME
local       openldap-conf
local       openldap-data
local       openldap-backups
[root@ldap ldap]#

と立ち上がる。停止の際は「podman-compose down」とする

[root@ldap ldap]# podman-compose down
 
[root@ldap ldap]# podman ps -a
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES
[root@ldap ldap]#

コンテナ自体が消えます.

自動起動

そしてサービスファイルを作成

[root@ldap ~]# vi /etc/systemd/system/podman-compose-app.service
 
[Unit]
Description=Podman Compose Application Service
After=network-online.target
 
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/root/ldap                  <-- compose.ymlの場所
ExecStart=/usr/bin/podman-compose up -d
ExecStop=/usr/bin/podman-compose down
 
[Install]
WantedBy=multi-user.target
 
[root@ldap ~]#

そしてこれを有効にする

[root@ldap ~]# systemctl daemon-reload
 
[root@ldap ~]# systemctl list-unit-files |grep podman
podman-auto-update.service                                                disabled        disabled
podman-clean-transient.service                                            disabled        disabled
podman-compose-app.service                                                disabled        disabled    <-- これ
podman-kube@.service                                                      disabled        disabled
podman-restart.service                                                    disabled        disabled
podman.service                                                            disabled        disabled
podman.socket                                                             disabled        disabled
podman-auto-update.timer                                                  disabled        disabled
 
[root@ldap ~]# 
[root@ldap ~]# systemctl enable podman-compose-app.service
Created symlink /etc/systemd/system/multi-user.target.wants/podman-compose-app.service → /etc/systemd/system/podman-compose-app.service.
[root@ldap ~]#
[root@ldap ~]# systemctl list-unit-files |grep podman
podman-auto-update.service                                                disabled        disabled
podman-clean-transient.service                                            disabled        disabled
podman-compose-app.service                                                enabled         disabled
podman-kube@.service                                                      disabled        disabled
podman-restart.service                                                    disabled        disabled
podman.service                                                            disabled        disabled
podman.socket                                                             disabled        disabled
podman-auto-update.timer                                                  disabled        disabled
[root@ldap ~]#

管理ツール LDAP Account Manager

稼働しているマシンの8080にアクセスします「ldap:8080/lam」
まずは右上にある「LAN構成設定」リンクをクリックします(初回のみ)
2026y05m20d_010629421.png

次の画面で「サーバープロファイルの編集」リンクを押下します
2026y05m20d_010923756.png

次の画面で求められる「パスワード」は、compose.ymlで指定している「LAM_PASSWORD:」の値です. ここでは「lam」になりますね. 入力して「OK」ボタンを押下します.
2026y05m20d_011242772.png

このLDAP Account Managerを経由してopenldapのコンテンツを調整できますが、コンテンツを調整するのは「ディレクトリ管理者」にしたいので
「有効なユーザのリスト」は cn=manager,dc=cluster,dc=internal にします
そしてこのアプリのtimezoneを修正します. そして画面下の「保存」ボタンを押下してください
2026y05m20d_014335419.png

設定の保存が完了すると最初のページに戻ります。
ここで表示されている「ユーザ名」は「manager」と表記されますが、これは cn=manager,dc=cluster,dc=internal を意図してます

ログインに成功すると前の段階で作っていたアカウントとかが表示されます
2026y05m20d_015038217.png

具体的なgroupの追加や、ユーザの作成はほかのサイトをご覧ください

最新の60件
2026-06-08 2026-06-06 2026-06-05 2026-06-04 2026-06-03 2026-05-31 2026-05-28 2026-05-26 2026-05-23 2026-05-22 2026-05-21 2026-05-20 2026-05-19 2026-05-18 2026-05-12 2026-05-11 2026-05-08 2026-05-06 2026-05-05 2026-05-03 2026-04-30 2026-04-29 2026-04-28 2026-04-27 2026-04-25 2026-04-24 2026-04-22 2026-04-21 2026-04-12 2026-04-08 2026-04-06 2026-04-05 2026-04-02 2026-03-26 2026-03-23 2026-03-21 2026-03-19 2026-03-15 2026-03-14

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2026-05-20 (水) 01:59:32