Apache Airflow OpenLDAP 项目教程
1. 项目的目录结构及介绍
Apache Airflow OpenLDAP 项目的目录结构如下:
airflow-openldap/
├── Dockerfile
├── README.md
├── docker-compose.yml
├── openldap/
│ ├── Dockerfile
│ ├── bootstrap.ldif
│ ├── config.ldif
│ └── slapd.conf
└── scripts/
└── entrypoint.sh
目录结构介绍
Dockerfile
: 用于构建 Airflow OpenLDAP 镜像的 Dockerfile。README.md
: 项目说明文档。docker-compose.yml
: 用于启动 Airflow 和 OpenLDAP 服务的 Docker Compose 文件。openldap/
: 包含 OpenLDAP 相关的配置文件和 Dockerfile。Dockerfile
: 用于构建 OpenLDAP 镜像的 Dockerfile。bootstrap.ldif
: OpenLDAP 的初始化数据文件。config.ldif
: OpenLDAP 的配置文件。slapd.conf
: OpenLDAP 的主配置文件。
scripts/
: 包含启动脚本。entrypoint.sh
: OpenLDAP 容器的入口脚本。
2. 项目的启动文件介绍
docker-compose.yml
docker-compose.yml
文件用于定义和启动 Airflow 和 OpenLDAP 服务。以下是该文件的主要内容:
version: '3.7'
services:
openldap:
image: ghcr.io/apache/airflow-openldap:2.4.50-2021.07.04
container_name: openldap
ports:
- "389:389"
volumes:
- ./openldap/bootstrap.ldif:/etc/ldap/bootstrap.ldif
- ./openldap/config.ldif:/etc/ldap/config.ldif
- ./openldap/slapd.conf:/etc/ldap/slapd.conf
command: ["/scripts/entrypoint.sh"]
entrypoint.sh
entrypoint.sh
是 OpenLDAP 容器的入口脚本,负责启动 OpenLDAP 服务并加载配置文件。以下是该脚本的主要内容:
#!/bin/bash
set -e
if [ ! -d /var/lib/ldap/data ]; then
echo "Initializing OpenLDAP data..."
slapadd -l /etc/ldap/bootstrap.ldif
slapadd -l /etc/ldap/config.ldif
fi
slapd -d 32768 -u openldap -g openldap
3. 项目的配置文件介绍
slapd.conf
slapd.conf
是 OpenLDAP 的主配置文件,包含 OpenLDAP 服务的基本配置信息。以下是该文件的部分内容:
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/nis.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
modulepath /usr/lib/ldap
moduleload back_mdb.la
database mdb
suffix "dc=example,dc=com"
rootdn "cn=admin,dc=example,dc=com"
rootpw {SSHA}encryptedpassword
directory /var/lib/ldap
index objectClass eq
bootstrap.ldif
bootstrap.ldif
文件包含 OpenLDAP 的初始化数据,用于创建初始的 LDAP 条目。以下是该文件的部分内容:
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Example Company
dc: example
dn: cn=admin,dc=example,dc=com
objectClass: organizationalRole
cn: admin
description: LDAP administrator
config.ldif
`config.ld