1 heat_template_version: 2015-10-15
3 description: Enroll nodes to FreeIPA
7 description: ID of the controller node to apply this config to
12 The configured cloud domain; this will also be used as the kerberos realm
16 description: 'OTP that will be used for FreeIPA enrollment'
20 description: 'FreeIPA server DNS name'
24 description: 'FreeIPA server IP Address'
28 FreeIPAEnrollmentConfig:
29 type: OS::Heat::SoftwareConfig
39 sed -i "/${ipa_server}/d" /etc/hosts
40 # Optionally add the FreeIPA server IP to /etc/hosts
41 if [ -n "${ipa_ip}" ]; then
42 echo "${ipa_ip} ${ipa_server}" >> /etc/hosts
44 # Set the node's domain if needed
45 if [ ! $(hostname -f | grep "${ipa_domain}$") ]; then
46 hostnamectl set-hostname "$(hostname).${ipa_domain}"
48 yum install -y ipa-client
49 # Enroll. If there is already keytab, we have already done this.
50 if [ ! -f /etc/krb5.keytab ]; then
51 ipa-client-install --server ${ipa_server} -w ${otp} \
52 --domain=${ipa_domain} -U
55 kinit -k -t /etc/krb5.keytab
57 FreeIPAControllerEnrollmentDeployment:
58 type: OS::Heat::SoftwareDeployment
60 name: FreeIPAEnrollmentDeployment
61 config: {get_resource: FreeIPAEnrollmentConfig}
62 server: {get_param: server}
64 otp: {get_param: FreeIPAOTP}
65 ipa_server: {get_param: FreeIPAServer}
66 ipa_domain: {get_param: CloudDomain}
67 ipa_ip: {get_param: FreeIPAIPAddress}
71 description: Output of the FreeIPA enrollment deployment
72 value: {get_attr: [FreeIPAControllerEnrollmentDeployment, deploy_stdout]}