diff --git a/roles/kadmin/tasks/main.yml b/roles/kadmin/tasks/main.yml new file mode 100644 index 0000000..3b8ccc1 --- /dev/null +++ b/roles/kadmin/tasks/main.yml @@ -0,0 +1,37 @@ +--- +- name: Install packages + ansible.builtin.package: + name: "{{ item }}" + state: installed + with_items: + - krb5-server + - krb5-server-ldap + +- name: Create kdc config + ansible.builtin.template: + dest: /var/kerberos/krb5kdc/kdc.conf + src: kdc.conf.j2 + mode: 0600 + owner: root + group: "{{ ansible_wheel }}" + +- name: Store kdc and kadmin LDAP credentials + ansible.builtin.command: + argv: + - kdb5_ldap_util + - stashsrvpw + - "uid=krb5kadmin,cn={{ kerberos_realm }},ou=System,{{ ldap_basedn }}" + stdin: | + {{ kerberos_kadmin_pass }} + {{ kerberos_kadmin_pass }} + creates: "/var/kerberos/krb5kdc/.k5.ldap.{{ kerberos_realm | lower() }}" + no_log: true + +- name: Store kdc master key + ansible.builtin.command: + argv: + - kdb5_util + - stash + stdin: "{{ kerberos_master_pass }}" + creates: "/var/kerberos/krb5kdc/.k5.{{ kerberos_realm }}" + no_log: true diff --git a/roles/kadmin/templates/kdc.conf.j2 b/roles/kadmin/templates/kdc.conf.j2 new file mode 100644 index 0000000..47dbc9c --- /dev/null +++ b/roles/kadmin/templates/kdc.conf.j2 @@ -0,0 +1,24 @@ +[libdefaults] + default_realm = {{ kerberos_realm }} + +[realms] + {{ kerberos_realm }} = { + database_module = ldap.{{ kerberos_realm|lower() }} + key_stash_file = "/var/kerberos/krb5kdc/.k5.{{ kerberos_realm }}" + max_lifetime = 24h 0m 0s + max_renewable_life = 7d 0h 0m 0s + master_key_type = aes256-cts-hmac-sha1-96 + supported_enctypes = aes256-cts-hmac-sha1-96:normal + } + +[dbmodules] + ldap.{{ kerberos_realm|lower() }} = { + db_library = kldap + disable_last_success = true + disable_lockout = true + ldap_kerberos_container_dn = "ou=System,{{ ldap_basedn }}" + ldap_kdc_dn = "uid=krb5kdc,cn={{ kerberos_realm }},ou=System,{{ ldap_basedn }}" + ldap_kadmind_dn = "uid=krb5kadmin,cn={{ kerberos_realm }},ou=System,{{ ldap_basedn }}" + ldap_service_password_file = "/var/kerberos/krb5kdc/.k5.ldap.{{ kerberos_realm|lower() }}" + ldap_servers = "{% for item in ldap_server %}ldaps://{{ item }} {% endfor %}" + }