# {% 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 %}