Ansibleを使って10分でCentOS上にOpenLDAPサーバー構築してみた。

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【3/22開催】テックブログを書こう!アウトプットのススメ
1年で100本ブログを出した新米エンジニアがPV数が伸びなくてもTech Blogを書き続ける理由とは?
https://tech-lab.connpass.com/event/312805/

【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

Microsoft Azure上で仮想マシンを作成すると、OSインストール済みでデプロイされるので便利ですが、
デプロイ後のソフトウェア導入や設定は手作業なので、台数が多いとちょっと大変です。

そこで、Ansibleを使ってデプロイ後の作業を簡略してみようと思います。
今回はOpenLDAPの導入・初期設定を10分くらいで完了出来るようにしてみました。

概要

Ansibleを使用して、Azure上のCentOSまたはRHELにOpenLDAPサーバーを構築します。

動作確認環境

  • Ansible実行サーバー(ローカル)
  • OS: CentOS 7

  • LDAPサーバー(Azure)

  • OS: Red hat Enterprise Linux 7.2 もしくは CentOS 7
  • デプロイモデル: リソースマネージャ

事前準備

  • Ansible実行サーバーでgitコマンド、ansibleコマンドが使用できる状態にしてください。

LDAPサーバーの準備

まずはAzure上でLDAPサーバー用の仮想マシンを準備します。
Azure上で [ Red Hat Enterprise Linux 7.X ] もしくは [ CentOS-based 7.X ] の仮想マシンを作成してください。
– SSHはパスワード認証にしてください。
– ネットワークセキュリティグループに、Ansible実行サーバーからSSH出来るよう設定しましょう。

デプロイ開始したら、次の作業に進みます。

Ansible実行サーバーの準備

Azure仮想マシンのデプロイが進行している間にAnsibleの設定をします。

  • GitHubからPlaybookをダウンロードします。
# git clone https://github.com/sios-tech/ansible-openldap-rhel7.git
  • Playbookのhostsファイルに、LDAPサーバーのパブリックIPを入力します。
# vim ./ansible-openldap-rhel7/hosts
-----
[ansible-openldap-rhel7]
xx.xx.xx.xx
-----
  • Playbook内のOpenLDAP用設定を編集します。
# vim ./ansible-openldap-rhel7/roles/ldap/vars/main.yml
-----
LDAP_DN: "dc=sios,dc=local"
ROOT_DN: "cn=Manager,dc=sios,dc=local"
ROOT_PW: "{SSHA}sLH9OmNJDPiTB7xi/JoT7Df2mZUTJQeL"
ROOT_PW_UNENCRYPTED: "secret"
DC_ATTRIBUTE_O: "SIOS Technology,Inc."
DC_ATTRIBUTE_DC: "sios"
-----

※ 変数について
- LDAP_DN ・・・ LDAPのベースDN
- ROOT_DN ・・・ LDAP管理者のDN
- ROOT_PW ・・・ LDAP管理者のパスワード(暗号化した値)
- ROOT_PW_UNENCRYPTED ・・・ LDAP管理者のパスワード(平文)
- DC_ATTRIBUTE_O ・・・ 組織名
- DC_ATTRIBUTE_DC ・・・ DN最左辺のDC値

これでAnsible実行サーバーの準備が整いました。
LDAPサーバーのデプロイ完了を待ちます。

Ansibleの実行

Azure仮想マシンのデプロイが完了したら、Ansibleを実行します。

  • Ansible実行サーバーからLDAPサーバーへの疎通確認を行います。
# cd ansible-openldap-rhel7/
# ansible [LDAPサーバーのパブリックIP] -u sios -m ping
SSH password:
SUDO password[defaults to SSH password]:

下記のメッセージが表示されれば成功です。

xx.xx.xx.xx | SUCCESS => {
"changed": false,
"ping": "pong"
}
  • Ansibleを実行します。
# ansible-playbook -u [SSHユーザ名] ansible-openldap-rhel7.yml
  • エラーなく終了すれば完了です。
PLAY [ansible-openldap-rhel7] **************************************************

TASK [setup] *******************************************************************
ok: [server1]

TASK [ldap : install openldap] *************************************************
changed: [server1] => (item=[u'openldap-clients', u'openldap-servers'])

TASK [ldap : SELinux Disabled] *************************************************
changed: [server1]

TASK [ldap : SELinux Disabled] *************************************************
changed: [server1] => (item={u'regexp': u'^\\s*SELINUX=', u'line': u'SELINUX=disabled'})

TASK [ldap : Stop slapd] *******************************************************
changed: [server1]

TASK [ldap : Remove /etc/openldap/slapd.d.org] *********************************
ok: [server1]

TASK [ldap : Copy the default slapd.d] *****************************************
changed: [server1]

TASK [ldap : Remove /var/lib/ldap/*] *******************************************
changed: [server1] => (item=/var/lib/ldap/*)
changed: [server1] => (item=/etc/openldap/slapd.d/*)

TASK [ldap : Create /etc/openldap/initial_settings] ****************************
changed: [server1]
[WARNING]: Consider using file module with state=directory rather than running mkdir

TASK [ldap : Place /etc/openldap/initial_settings/slapd.cfg] *******************
changed: [server1]

TASK [ldap : Place /etc/openldap/initial_settings/database.cfg] ****************
changed: [server1]

TASK [ldap : Place /etc/openldap/initial_settings/userdata.ldif] ***************
changed: [server1]

TASK [ldap : Importing the initial setting file - slapd.cfg] *******************
changed: [server1]

TASK [ldap : Change the permissions] *******************************************
ok: [server1] => (item=/var/lib/ldap)
changed: [server1] => (item=/etc/openldap/slapd.d/)

TASK [ldap : Start slapd] ******************************************************
changed: [server1]

TASK [ldap : Add LDAP schema] **************************************************
changed: [server1] => (item=/etc/openldap/schema/core.ldif)
changed: [server1] => (item=/etc/openldap/schema/cosine.ldif)
changed: [server1] => (item=/etc/openldap/schema/inetorgperson.ldif)
changed: [server1] => (item=/etc/openldap/schema/nis.ldif)
changed: [server1] => (item=/etc/openldap/schema/openldap.ldif)

TASK [ldap : Importing the initial setting file - database.cfg] ****************
changed: [server1]

TASK [ldap : Add LDAP Data] ****************************************************
changed: [server1] => (item=/etc/openldap/initial_settings/userdata.ldif)

PLAY RECAP *********************************************************************
server1 : ok=18 changed=16 unreachable=0 failed=0

動作確認

最後に、LDAPサーバーが動作しているか確認します。

  • LDAPサーバーにSSHします。

  • slapdサービスを確認します。

# systemctl status slapd.service
● slapd.service - OpenLDAP Server Daemon
Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2016-09-09 01:41:15 UTC; 12min ago
Docs: man:slapd
man:slapd-config
man:slapd-hdb
man:slapd-mdb
file:///usr/share/doc/openldap-servers/guide.html
(...)
  • ldapsearchをします。
# ldapsearch -x -D 'cn=Manager,dc=sios,dc=local' -W -b 'dc=sios,dc=local'
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=sios,dc=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# sios.local
dn: dc=sios,dc=local
objectClass: organization
objectClass: dcObject
o: SIOS Technology,Inc.
dc: sios

# users, sios.local
dn: ou=users,dc=sios,dc=local
objectClass: top
objectClass: organizationalUnit
ou: users

# testaccount, users, sios.local
dn: uid=testaccount,ou=users,dc=sios,dc=local
sn: testaccount
cn: testaccount
userPassword:: cGFzc3dvcmQ=
objectClass: inetOrgPerson
objectClass: top
uid: testaccount

# search result
search: 2
result: 0 Success

# numResponses: 4
# numEntries: 3

最後に

以上でOpenLDAP導入・初期設定は完了です。特に問題なければ10分程でLDAPサーバーが用意出来るようになったと思います。
後はLDAPサーバー上で詳細設定やテストユーザーなど、検証環境に適した情報を追加しましょう。

アバター画像
About サイオステクノロジーの中の人 41 Articles
サイオステクノロジーで働く中の人です。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる