FQDN validation
authorMatthew Flusche <mflusche@redhat.com>
Tue, 14 Feb 2017 17:00:02 +0000 (17:00 +0000)
committerMatthew Flusche <mflusche@redhat.com>
Tue, 14 Feb 2017 17:39:35 +0000 (17:39 +0000)
Adds optional validation to ensure FQDN set by Nova matches /etc/hosts
as created by overcloud heat configuration.

Consistent FQDN requires the nova parameter [Default]/dhcp_domain to
match the CloudDomain tht parameter.

This validation is disabled by default.

Change-Id: Ib5689acae66baf63ecccbc3b1c0b96684781b863

all-nodes-validation.yaml
validation-scripts/all-nodes.sh

index 65d01d0..eea3e40 100644 (file)
@@ -10,6 +10,10 @@ parameters:
     default: ''
     description: A string containing a space separated list of IP addresses used to ping test each available network interface.
     type: string
+  ValidateFqdn:
+    default: false
+    description: Optional validation to ensure FQDN as set by Nova matches the name set in /etc/hosts.
+    type: boolean
 
 resources:
   AllNodesValidationsImpl:
@@ -19,6 +23,8 @@ resources:
       inputs:
         - name: ping_test_ips
           default: {get_param: PingTestIps}
+        - name: validate_fqdn
+          default: {get_param: ValidateFqdn}
       config: {get_file: ./validation-scripts/all-nodes.sh}
 
 outputs:
index 0b8b352..f1f4cc1 100644 (file)
@@ -67,5 +67,23 @@ function ping_default_gateways() {
   echo "SUCCESS"
 }
 
+# Verify the FQDN from the nova/ironic deployment matches
+# FQDN in the heat templates.
+function fqdn_check() {
+  HOSTNAME=$(hostname)
+  SHORT_NAME=$(hostname -s)
+  FQDN_FROM_HOSTS=$(awk '$3 == "'${SHORT_NAME}'"{print $2}' /etc/hosts)
+  echo -n "Checking hostname vs /etc/hosts entry..."
+  if [[ $HOSTNAME != $FQDN_FROM_HOSTS ]]; then
+    echo "FAILURE"
+    echo -e "System hostname: ${HOSTNAME}\nEntry from /etc/hosts: ${FQDN_FROM_HOSTS}\n"
+    exit 1
+  fi
+  echo "SUCCESS"
+}
+
 ping_controller_ips "$ping_test_ips"
 ping_default_gateways
+if [[ $validate_fqdn == "True" ]];then
+  fqdn_check
+fi