Playbooks to a new Lilik
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
3.3 KiB

  1. ---
  2. - name: 'SYNC | create replication consumer certificate'
  3. import_role: name='ca_cert'
  4. vars:
  5. ca_cert_common_name: '{{ host_fqdn }}'
  6. ca_cert_proto: 'tls'
  7. ca_cert_client: true
  8. ca_cert_tls_subj: '{{ openssl_x509_prefix }}/OU=LDAP/CN={{ ca_cert_common_name }}'
  9. ca_cert_tls_ca_path: '/etc/ldap/user_ca.crt'
  10. ca_cert_tls_key_path: '/etc/ldap/syncrepl.key'
  11. ca_cert_tls_csr_path: '/etc/ldap/syncrepl.csr'
  12. ca_cert_tls_cert_path: '/etc/ldap/syncrepl.crt'
  13. when: ldap_syncrepl_is_consumer
  14. - name: 'SYNC | set key ownership'
  15. file:
  16. path: '/etc/ldap/syncrepl.key'
  17. owner: 'openldap'
  18. group: 'openldap'
  19. - name: 'SYNC | activate syncprov module'
  20. ldap_attr:
  21. dn: 'cn=module{0},cn=config'
  22. name: 'olcModuleLoad'
  23. values: '{4}syncprov'
  24. state: 'present'
  25. when: ldap_syncrepl_is_provider
  26. - name: 'SYNC | activate overlay'
  27. ldap_entry:
  28. dn: 'olcOverlay={2}syncprov,olcDatabase={1}mdb,cn=config'
  29. objectClass:
  30. - 'olcOverlayConfig'
  31. - 'olcSyncProvConfig'
  32. when: ldap_syncrepl_is_provider
  33. - name: 'SYNC | disable limits for consumer'
  34. ldap_attr:
  35. dn: 'olcDatabase={1}mdb,cn=config'
  36. name: 'olcLimits'
  37. state: 'exact'
  38. values:
  39. - >-
  40. {0} dn.children=ou=LDAP,{{ ldap_basedn }}
  41. time.soft=unlimited
  42. time.hard=unlimited
  43. size.soft=unlimited
  44. size.hard=unlimited
  45. when: ldap_syncrepl_is_provider
  46. - name: 'SYNC | set serverID'
  47. ldap_attr:
  48. dn: 'cn=config'
  49. name: 'olcServerID'
  50. values: '{{ ldap_syncrepl_server_id }}'
  51. state: 'exact'
  52. - name: 'SYNC | build SyncRepl configuration'
  53. set_fact:
  54. syncrepls: |
  55. {{ syncrepls|d([])
  56. + [
  57. '{'+idx|string+'}'
  58. + ' rid='+item.rid|string
  59. + ' provider='+item.url
  60. + ' searchbase='+ldap_basedn
  61. + ' type=refreshAndPersist'
  62. + ' interval=00:01:00:00'
  63. + ' retry="5 5 300 5"'
  64. + ' timeout=1'
  65. + ' bindmethod=sasl'
  66. + ' saslmech=EXTERNAL'
  67. + ' starttls=critical'
  68. + ' tls_cert="/etc/ldap/syncrepl.crt"'
  69. + ' tls_key="/etc/ldap/syncrepl.key"'
  70. + ' tls_cacert="/etc/ldap/server_ca.crt"'
  71. ] }}
  72. loop: '{{ ldap_syncrepl_target_providers }}'
  73. loop_control:
  74. index_var: idx
  75. when: ldap_syncrepl_is_consumer
  76. - debug:
  77. msg: syncrepls
  78. - name: 'SYNC | apply SyncRepl configuration'
  79. ldap_attr:
  80. dn: 'olcDatabase={1}mdb,cn=config'
  81. name: 'olcSyncRepl'
  82. values: '{{ syncrepls }}'
  83. state: 'exact'
  84. ignore_errors: true
  85. when: ldap_syncrepl_is_consumer
  86. - name: 'SYNC | enable MirrorMode'
  87. ldap_attr:
  88. dn: 'olcDatabase={1}mdb,cn=config'
  89. name: 'olcMirrorMode'
  90. values: 'TRUE'
  91. state: 'exact'
  92. when:
  93. - ldap_syncrepl_is_consumer
  94. - ldap_syncrepl_is_provider
  95. - name: 'MONITORING | add ldap_master'
  96. set_fact:
  97. monitoring_facts: >
  98. {{ hostvars[monitoring_host]['monitoring_facts']
  99. | default({})
  100. | combine({
  101. host_fqdn: {
  102. "vars": { "ldap_master": ldap_syncrepl_target_providers[0].url }
  103. }
  104. }, recursive=True) }}
  105. delegate_to: '{{ monitoring_host }}'
  106. delegate_facts: true
  107. when: ldap_syncrepl_is_consumer
  108. tags:
  109. - 'monitoring'
  110. ...