diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-12-01 14:43:26 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-12-01 14:43:26 +0000 |
commit | 370d392dc58a124ffe09800476d1099bf6268cb3 (patch) | |
tree | 6a6d11fc44f1ce06310cc96b38a4953ffd6e19e7 /scripts | |
parent | 610de3101e9bb82616bb1dac80ead66c0d56be31 (diff) | |
parent | f02742a981a602b439c918236bdb771bbf13dc97 (diff) |
Merge "Configure /etc/hosts via os-collect-config script"
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/hosts-config.sh | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/scripts/hosts-config.sh b/scripts/hosts-config.sh new file mode 100755 index 00000000..4826d615 --- /dev/null +++ b/scripts/hosts-config.sh @@ -0,0 +1,47 @@ +#!/bin/bash +set -eux +set -o pipefail + +write_entries() { + local file="$1" + local entries="$2" + + # Don't do anything if the file isn't there + if [ ! -f "$file" ]; then + return + fi + + if grep -q "^# HEAT_HOSTS_START" "$file"; then + temp=$(mktemp) + awk -v v="$entries" '/^# HEAT_HOSTS_START/ { + print $0 + print v + f=1 + }f &&!/^# HEAT_HOSTS_END$/{next}/^# HEAT_HOSTS_END$/{f=0}!f' "$file" > "$temp" + echo "INFO: Updating hosts file $file, check below for changes" + diff "$file" "$temp" || true + cat "$temp" > "$file" + else + echo -ne "\n# HEAT_HOSTS_START - Do not edit manually within this section!\n" >> "$file" + echo "$entries" >> "$file" + echo -ne "# HEAT_HOSTS_END\n\n" >> "$file" + fi + +} + +if [ ! -z "$hosts" ]; then + # cloud-init files are /etc/cloud/templates/hosts.OSNAME.tmpl + DIST=$(lsb_release -is | tr -s [A-Z] [a-z]) + case $DIST in + fedora|redhatenterpriseserver) + name="redhat" + ;; + *) + name="$DIST" + ;; + esac + write_entries "/etc/cloud/templates/hosts.${name}.tmpl" "$hosts" + write_entries "/etc/hosts" "$hosts" +else + echo "No hosts in Heat, nothing written." +fi |