学科というか琉大では学生のアカウント管理にLDAPを使っている。 学科の場合はセンター(大本)のLDAP情報を同期した、学科システム上に構築したslapdをLDAPサーバーとして活用している。
今年は学科システムの式年遷宮の年なので、Centosで従来動いていたシステムを参考に、UbuntuでOpenLDAPを構築した。
すでにDocker環境はakatsukiの構築で作っていたのだけれど、とりあえず安心感のあるVMでopenldapの構築をしたかったので、ansibleを書いていた。
init.ldifとかは現在動いているLDAPのバックアップ。
--- - name: install ldap become: yes apt: name: - slapd - ldap-utils environment: DEBIAN_FRONTEND: noninteractive - name: copy ldap.conf become: yes copy: src: ldap.conf dest: /etc/ldap/ldap.conf owner: openldap group: openldap mode: 0664 - name: copy slapd.conf become: yes copy: src: slapd.conf dest: /etc/ldap/slapd.conf owner: openldap group: openldap mode: 0640 - name: copy schemas become: yes copy: src: schema dest: /etc/ldap/ owner: openldap group: openldap mode: 0644 - name: copy init.ldif become: yes copy: src: init.ldif dest: /tmp/init.ldif owner: openldap group: openldap mode: 0664 - name: copy DB_CONFIG become: yes copy: src: DB_CONFIG dest: /var/lib/ldap/DB_CONFIG owner: openldap group: openldap mode: 0664 - name: remove /etc/ladp/slapd.d/cn=config become: yes file: path: /etc/ldap/slapd.d/cn=config state: absent - name: slapadd -f /etc/ldap/slapd.conf become: yes command: echo '' | slapadd -f /etc/ldap/slapd.conf - name: stop slabd become: yes systemd: name: slapd state: stopped daemon_reload: yes enabled: yes - name: chown cn=config become: yes file: path: /etc/ldap/slapd.d/cn=config state: directory recurse: yes owner: openldap group: openldap - name: chown /var/lib/ldap become: yes file: path: /var/lib/ldap/ state: directory recurse: yes owner: openldap group: openldap - name: slaptest become: yes become_user: openldap # ignore_errors: yes command: slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d - name: slapadd -l /tmp/init.ldif become: yes command: slapadd -l /tmp/init.ldif - name: enable slabd become: yes systemd: name: slapd state: restarted daemon_reload: yes enabled: yes
openldapはaptでslapdを指定すれば入るけれど、 DEBIAN_FRONTEND: noninteractive
を指定しないと上手く入らない(唐突にGUI的なあの画面が出てくる)のが注意点。
詰まったのは slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d
する時にopenldapユーザーでやらないと、/var/lib/ldap
の中で生成されるBerkeley DBのパーミッションが変になること。
解決方法としてはbecome_user
でopenldapを指定し、プロジェクトルートのansible.cfg
に次の用に書く。
[defaults] allow_world_readable_tmpfiles=true
微妙に再起動するとパーミッションが異なるとかはあったが、まぁ大丈夫だろうと信じている。。。