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