48 lines
1.7 KiB
Django/Jinja
48 lines
1.7 KiB
Django/Jinja
#!/usr/bin/env bash
|
|
# {{ ansible_managed }}
|
|
|
|
set -x
|
|
|
|
function insert_host_entry {
|
|
ENTRY=$1
|
|
ADDR=$2
|
|
if [[ "$(grep "^${ADDR}\b" /etc/hosts | wc -l)" -ge "2" ]]; then
|
|
sed -i "/^${ADDR}\b/d" /etc/hosts
|
|
echo "${ENTRY}" | tee -a /etc/hosts
|
|
elif grep -q "^${ADDR}\b" /etc/hosts; then
|
|
sed -i "s|^${ADDR}\b.*|${ENTRY}|" /etc/hosts
|
|
elif ! grep -q "^${ENTRY}$" /etc/hosts; then
|
|
echo "${ENTRY}" | tee -a /etc/hosts
|
|
fi
|
|
}
|
|
|
|
function host_update {
|
|
ANSHOSTNAME=$1
|
|
RFCHOSTNAME=$2
|
|
INVHOSTNAME=$3
|
|
IPADDR=$4
|
|
DOMAINNAME=$5
|
|
|
|
if [[ "${ANSHOSTNAME}" != "${RFCHOSTNAME}" ]] && [[ "${RFCHOSTNAME}" != "${INVHOSTNAME}" ]]; then
|
|
insert_host_entry "${IPADDR} ${ANSHOSTNAME}.${DOMAINNAME} ${RFCHOSTNAME} ${INVHOSTNAME} ${ANSHOSTNAME}" "${IPADDR}"
|
|
elif [[ "${ANSHOSTNAME}" != "${RFCHOSTNAME}" ]] && [[ "${RFCHOSTNAME}" == "${INVHOSTNAME}" ]]; then
|
|
insert_host_entry "${IPADDR} ${ANSHOSTNAME}.${DOMAINNAME} ${RFCHOSTNAME} ${ANSHOSTNAME}" "${IPADDR}"
|
|
elif [[ "${ANSHOSTNAME}" == "${RFCHOSTNAME}" ]] && [[ "${RFCHOSTNAME}" == "${INVHOSTNAME}" ]]; then
|
|
insert_host_entry "${IPADDR} ${ANSHOSTNAME}.${DOMAINNAME} ${RFCHOSTNAME}" "${IPADDR}"
|
|
else
|
|
insert_host_entry "${IPADDR} ${ANSHOSTNAME}.${DOMAINNAME} ${RFCHOSTNAME} ${INVHOSTNAME}" "${IPADDR}"
|
|
fi
|
|
}
|
|
|
|
{% for item in groups['all'] %}
|
|
{% set target_rfc_1034_1035_name = item|replace('_', '-') %}
|
|
host_update "{{ hostvars[item]['ansible_hostname']|default(target_rfc_1034_1035_name) }}" \
|
|
"{{ target_rfc_1034_1035_name }}" \
|
|
"{{ item }}" \
|
|
"{{ hostvars[item]['ansible_host'] | default("127.0.0.1") }}" \
|
|
"{{ openstack_domain }}"
|
|
|
|
{% endfor %}
|
|
|
|
sha1sum /etc/hosts|awk '{print $1}'
|