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サーバー上で詳細設定やテストユーザーなど、検証環境に適した情報を追加しましょう。

