plnx-formula/apacheds/init.sls

139 lines
3.1 KiB
Plaintext

#
{% from "plnx/apacheds/map.jinja" import ads with context %}
{% from "plnx/java/map.jinja" import java with context %}
include:
- plnx.java
Apache Directory Server:
archive.extracted:
- name: {{ads.opt_dir}}
- source: {{ads.src}}
- source_hash: {{ads.chksum}}
- require:
- pkg: {{java.pkg}}
file.symlink:
- name: {{ads.opt_dir}}/ads
- target: {{ads.opt_dir}}/apacheds-2.0.0.AM26
AdsDir0:
file.directory:
- name: "/var/db"
AdsDirs:
file.directory:
- name: {{ads.instances}}
- require:
- AdsDir0
Apache Directory Server Config:
file.managed:
- name: "{{ads.opt_dir}}/ads/bin/setenv.sh"
- source: "salt://plnx/apacheds/templates/setenv.sh.jinja"
- template: jinja
- defaults:
ads_home: {{ads.opt_dir}}/ads
java_home: {{java.java_home}}
java_opts: ""
ads_shutdown_port: "0"
ads_instances: {{ads.instances}}
- require:
- AdsDirs
{% for dval in pillar['apacheds'].instances -%}
{% for key,val in dval.items() %}
ADS Instance{{key}} Dir:
file.directory:
- name: "{{ads.instances}}/{{key}}"
ADS Instance{{key}} Conf Dir:
file.directory:
- name: "{{ads.instances}}/{{key}}/conf"
ADS Instance{{key}} Log Props:
file.managed:
- name: "{{ads.instances}}/{{key}}/conf/log4j.properties"
- source: "salt://plnx/apacheds/templates/log4j.properties.jinja"
- template: jinja
- defaults:
log_file: "/tmp/{{key}}.log"
{%- if not salt['file.file_exists' ](ads.instances +"/" + key + "/conf/config.ldif_migrated") %}
# Create a base 64 encoded ads-contextentry
# see: https://directory.apache.org/apacheds/basic-ug/1.4.3-adding-partition.html
{%
set ads_contextentry = "dn: "+'dc=planix,dc=org\n'+"dc: "+key+"\n"+
"objectclass: domain\nobjectclass: top\n\n"
%}
ADS_Instance{{key}}:
file.managed:
- name: "{{ads.instances}}/{{key}}/conf/config.ldif"
- source: "salt://plnx/apacheds/templates/config.ldif.jinja"
- template: jinja
- defaults:
partitionid: tube
partitionsuffix: "dc=planix,dc=org"
ldap_port: 12389
ads_contextentry: "{{ads_contextentry | base64_encode }}"
ADS_Log_Dir{{key}}:
file.directory:
- name: "{{ads.instances}}/{{key}}/log"
- require:
- ADS_Instance{{key}}
ADS_Run_Dir{{key}}:
file.directory:
- name: "{{ads.instances}}/{{key}}/run"
- require:
- ADS_Instance{{key}}
#ADS_Start_Srvice{{key}}:
#include:
# - plnx.apacheds.myservice
# - require:
# - ADS_Instance{{key}}
ADS_Init_LDAP{{key}}:
ldap.managed:
- connect_spec:
url: 'ldap://localhost:12389'
bind:
method: simple
dn: 'uid=admin,ou=system'
password: 'secret'
- entries:
- 'uid=admin,ou=system':
- replace:
uid:
- admin
userPassword: ['123456' ]
- require:
- ADS_Start{{key}}
{%- endif %}
ADS_Start{{key}}:
cmd.run:
- name: "/opt/ads/bin/apacheds.sh {{key}} start && sleep 30"
- require:
- ADS_Instance{{key}}
{% endfor %}
{% endfor %}