0.1.5 version: adds kerberos_kdc role

master 0.1.5
Eugene Zamriy 9 months ago
parent 549b14dc7e
commit 13500c7a9e
Signed by: ezamriy
GPG Key ID: 7EBF95C7DCFA496C

@ -5,6 +5,14 @@ msvsphere.ci Release Notes
.. contents:: Topics .. contents:: Topics
v0.1.5
======
New Roles
---------
- msvsphere.ci.kerberos_kdc - A role that installs and configures a Kerberos KDC.
v0.1.4 v0.1.4
====== ======

@ -4,6 +4,7 @@ The MSVSphere OS CI/CD collection.
## Roles ## Roles
* [kerberos_kdc](roles/kerberos_kdc/README.md)
* [kerberos_principal](roles/kerberos_principal/README.md) * [kerberos_principal](roles/kerberos_principal/README.md)
* [koji_cli](roles/koji_cli/README.md) * [koji_cli](roles/koji_cli/README.md)
* [koji_db_server](roles/koji_db_server/README.md) * [koji_db_server](roles/koji_db_server/README.md)

@ -1,5 +1,9 @@
objects: objects:
role: role:
kerberos_kdc:
description: A role that installs and configures a Kerberos KDC.
name: kerberos_kdc
version_added: 0.1.5
kerberos_principal: kerberos_principal:
description: A role that creates a kerberos principal. description: A role that creates a kerberos principal.
name: kerberos_principal name: kerberos_principal
@ -44,4 +48,4 @@ plugins:
strategy: {} strategy: {}
test: {} test: {}
vars: {} vars: {}
version: 0.1.4 version: 0.1.5

@ -51,3 +51,10 @@ releases:
name: koji_server name: koji_server
namespace: null namespace: null
release_date: '2023-12-18' release_date: '2023-12-18'
0.1.5:
objects:
role:
- description: A role that installs and configures a Kerberos KDC.
name: kerberos_kdc
namespace: null
release_date: '2023-12-18'

@ -1,6 +1,6 @@
namespace: msvsphere namespace: msvsphere
name: ci name: ci
version: 0.1.4 version: 0.1.5
readme: README.md readme: README.md
authors: authors:
- Eugene Zamriy <ezamriy@msvsphere-os.ru> - Eugene Zamriy <ezamriy@msvsphere-os.ru>

@ -0,0 +1,18 @@
# msvsphere.ci.kerberos_kdc
An Ansible role that installs and configures a Kerberos KDC (Key Distribution
Center).
## Variables
| Variable | Default value | Type | Description | Required |
| -------- | ------------- | ---- |----------- | -------- |
## License
MIT.
## Authors
* [Eugene Zamriy](mailto:ezamriy@msvsphere-os.ru)

@ -0,0 +1,5 @@
---
kerberos_kdc_domain_name:
kerberos_kdc_realm: "{{ kerberos_kdc_domain_name | upper }}"
kerberos_kdc_admin_principal: "admin@{{ kerberos_kdc_realm }}"
kerberos_kdc_db_password:

@ -0,0 +1,5 @@
---
- name: restart krb5kdc
ansible.builtin.service:
name: krb5kdc
state: restarted

@ -0,0 +1,28 @@
---
argument_specs:
main:
short_description: A role that installs and configures a Kerberos KDC.
author: Eugene Zamriy
version_added: '0.1.5'
options:
kerberos_kdc_domain_name:
description: Kerberos KDC domain name.
type: 'str'
required: true
kerberos_kdc_realm:
description: Kerberos KDC realm.
default: '{{ kerberos_kdc_domain_name | upper }}'
type: 'str'
required: false
kerberos_kdc_admin_principal:
description: Kerberos administrator principal.
default: 'admin@{{ kerberos_kdc_realm }}'
type: 'str'
required: false
kerberos_kdc_db_password:
description: Kerberos database password.
type: 'str'
required: true

@ -0,0 +1,16 @@
---
galaxy_info:
author: Eugene Zamriy
description: A role that installs and configures a Kerberos KDC.
company: Softline PJSC
license: MIT
min_ansible_version: 2.13
platforms:
- name: EL
versions:
- "9"
galaxy_tags:
- kerberos
- kdc
dependencies: []

@ -0,0 +1,79 @@
---
- name: Check if required variables are defined
ansible.builtin.fail:
msg: "{{ item }} is not defined or empty"
when: |
(vars[item] is undefined)
or (vars[item] is none)
or (vars[item] | trim | length == 0)
with_items:
- kerberos_kdc_domain_name
- kerberos_kdc_realm
- kerberos_kdc_admin_principal
- kerberos_kdc_db_password
- name: Add Kerberos domain name to /etc/hosts
ansible.builtin.lineinfile:
dest: /etc/hosts
regexp: ".*?\\s{{ kerberos_kdc_domain_name }}"
line: "127.0.0.1 {{ kerberos_kdc_domain_name }}"
state: present
- name: Install Kerberos packages
ansible.builtin.dnf:
name:
- krb5-server
- krb5-workstation
state: installed
- name: Generate /etc/krb5.conf
ansible.builtin.template:
src: etc/krb5.conf.j2
dest: /etc/krb5.conf
owner: root
group: root
mode: '0644'
setype: krb5_conf_t
notify:
- restart krb5kdc
- name: Generate /var/kerberos/krb5kdc/kdc.conf
ansible.builtin.template:
src: var/kerberos/krb5kdc/kdc.conf.j2
dest: /var/kerberos/krb5kdc/kdc.conf
owner: root
group: root
mode: '0600'
setype: krb5kdc_conf_t
notify:
- restart krb5kdc
- name: Generate /var/kerberos/krb5kdc/kadm5.acl
ansible.builtin.template:
src: var/kerberos/krb5kdc/kadm5.acl.j2
dest: /var/kerberos/krb5kdc/kadm5.acl
owner: root
group: root
mode: '0600'
setype: krb5kdc_conf_t
notify:
- restart krb5kdc
- name: Create Kerberos database
ansible.builtin.command: "/usr/sbin/kdb5_util create -s -P {{ kerberos_kdc_db_password | quote }}"
args:
creates: /var/kerberos/krb5kdc/principal.ok
notify:
- restart krb5kdc
- name: Enable and start krb5kdc service
ansible.builtin.service:
name: krb5kdc
enabled: true
state: started
- name: Enable and start kadmin service
ansible.builtin.service:
name: kadmin
enabled: true
state: started

@ -0,0 +1,31 @@
# To opt out of the system crypto-policies configuration of krb5, remove the
# symlink at /etc/krb5.conf.d/crypto-policies which will not be recreated.
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
spake_preauth_groups = edwards25519
dns_canonicalize_hostname = fallback
qualify_shortname = ""
default_realm = {{ kerberos_kdc_realm }}
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
{{ kerberos_kdc_realm }} = {
kdc = {{ kerberos_kdc_domain_name }}
admin_server = {{ kerberos_kdc_domain_name }}
}
[domain_realm]
# .example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM

@ -0,0 +1 @@
*/{{ kerberos_kdc_admin_principal }} *

@ -0,0 +1,16 @@
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
spake_preauth_kdc_challenge = edwards25519
[realms]
{{ kerberos_kdc_realm }} = {
master_key_type = aes256-cts-hmac-sha384-192
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
default_principal_flags = +preauth
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts-hmac-sha384-192:normal aes128-cts-hmac-sha256-128:normal aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal camellia256-cts-cmac:normal camellia128-cts-cmac:normal arcfour-hmac-md5:normal
# Supported encryption types for FIPS mode:
#supported_enctypes = aes256-cts-hmac-sha384-192:normal aes128-cts-hmac-sha256-128:normal
}
Loading…
Cancel
Save