Revision cc90a41d
/dev/null | ||
---|---|---|
1 |
#!/bin/bash |
|
2 |
|
|
3 |
# Configuration Fallbacks. All can(must for some of them) be overwritten by /etc/default/snf-network |
|
4 |
TTL=300 |
|
5 |
# the bind server IP/FQDN |
|
6 |
SERVER="" |
|
7 |
# this is the .vm.synnefo.live. |
|
8 |
# Leave empty if only reverse dns management is needed. |
|
9 |
# TODO: make this zone to be instance specific!!! |
|
10 |
FZONE="" |
|
11 |
# the file with dns authorization keys |
|
12 |
KEYFILE="" |
|
13 |
MAC2EUI64="/usr/bin/mac2eui64" |
|
14 |
|
|
15 |
source /etc/default/snf-network |
|
16 |
source /usr/lib/snf-network/common.sh |
|
17 |
|
|
18 |
if [ -z "$SERVER" -o -z "$FZONE" -o ! -e "$KEYFILE" ]; then |
|
19 |
exit 0 |
|
20 |
fi |
|
21 |
|
|
22 |
update_dns () { |
|
23 |
|
|
24 |
if [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_CREATE" ]; then |
|
25 |
update_all add |
|
26 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_REMOVE" ]; then |
|
27 |
update_all delete |
|
28 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_RENAME" ]; then |
|
29 |
update_all delete |
|
30 |
# Let's override a variable and add ourselves |
|
31 |
GANETI_INSTANCE_NAME=$GANETI_INSTANCE_NEW_NAME |
|
32 |
update_all add |
|
33 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_STARTUP" ]; then |
|
34 |
update_all add |
|
35 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SHUTDOWN" ]; then |
|
36 |
update_all delete |
|
37 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_REBOOT" ]; then |
|
38 |
update_all add |
|
39 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SET_PARAMS" ]; then |
|
40 |
update_all add |
|
41 |
fi |
|
42 |
|
|
43 |
} |
|
44 |
|
|
45 |
|
|
46 |
# Query nameserver for entries related to the specific instance |
|
47 |
# An example output is the following: |
|
48 |
# www.google.com has address 173.194.113.114 |
|
49 |
# www.google.com has address 173.194.113.115 |
|
50 |
# www.google.com has address 173.194.113.116 |
|
51 |
# www.google.com has address 173.194.113.112 |
|
52 |
# www.google.com has address 173.194.113.113 |
|
53 |
# www.google.com has IPv6 address 2a00:1450:4001:80b::1012 |
|
54 |
query_dns () { |
|
55 |
|
|
56 |
HOSTQ="host -s -R 3 -W 3" |
|
57 |
HOST_IP_ALL=$($HOSTQ $GANETI_INSTANCE_NAME.$FZONE $SERVER | sed -n 's/.*has address //p') |
|
58 |
HOST_IP6_ALL=$($HOSTQ $GANETI_INSTANCE_NAME.$FZONE $SERVER | sed -n 's/.*has IPv6 address //p') |
|
59 |
|
|
60 |
} |
|
61 |
|
|
62 |
|
|
63 |
# Reset all entries related to the specific instance |
|
64 |
# This should be invoced only during instance modification |
|
65 |
# because we do not know which nics have been modify |
|
66 |
reset_dns () { |
|
67 |
|
|
68 |
if [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SET_PARAMS" ]; then |
|
69 |
query_dns |
|
70 |
# This should remove the A, AAAA, CNAME entries |
|
71 |
send_command "update delete $GANETI_INSTANCE_NAME.$FZONE" |
|
72 |
for ip in $HOST_IP_ALL; do |
|
73 |
get_rev4_info $ip |
|
74 |
# This should remove the IPv4 reverse entry |
|
75 |
send_command "update delete $RLPART.$RZONE" |
|
76 |
done |
|
77 |
for ip6 in $HOST_IP6_ALL; do |
|
78 |
get_rev6_info $ip6 |
|
79 |
# This should remove the IPv6 reverse entry |
|
80 |
send_command "update delete $R6LPART$R6ZONE." |
|
81 |
done |
|
82 |
fi |
|
83 |
|
|
84 |
} |
|
85 |
|
|
86 |
|
|
87 |
# Main starts here |
|
88 |
|
|
89 |
|
|
90 |
# Exit if we do not have instance name. |
|
91 |
# It should be exported to hooks for instance related opcodes. |
|
92 |
if [ -z "$GANETI_INSTANCE_NAME" ]; then |
|
93 |
exit 0 |
|
94 |
fi |
|
95 |
|
|
96 |
# This runs only for instance modification |
|
97 |
reset_dns |
|
98 |
|
|
99 |
# If GANETI_INSTANCE_NIC_COUNT is not set then nothing happens |
|
100 |
FIRST=0 |
|
101 |
LAST=$((GANETI_INSTANCE_NIC_COUNT - 1)) |
|
102 |
for idx in $(seq $FIRST $LAST); do |
|
103 |
ip=GANETI_INSTANCE_NIC${idx}_IP |
|
104 |
mac=GANETI_INSTANCE_NIC${idx}_MAC |
|
105 |
mode=GANETI_INSTANCE_NIC${idx}_MODE |
|
106 |
link=GANETI_INSTANCE_NIC${idx}_LINK |
|
107 |
subnet=GANETI_INSTANCE_NIC${idx}_NETWORK_SUBNET |
|
108 |
subnet6=GANETI_INSTANCE_NIC${idx}_NETWORK_SUBNET6 |
|
109 |
tags=GANETI_INSTANCE_NIC${idx}_NETWORK_TAGS |
|
110 |
eval IP=\$$ip |
|
111 |
eval MAC=\$$mac |
|
112 |
eval MODE=\$$mode |
|
113 |
eval LINK=\$$link |
|
114 |
eval SUBNET=\$$subnet |
|
115 |
eval SUBNET6=\$$subnet6 |
|
116 |
eval TAGS=\$$tags |
|
117 |
|
|
118 |
for tag in $TAGS; do |
|
119 |
case $tag in |
|
120 |
$DNS_TAG) |
|
121 |
|
|
122 |
get_rev4_info "$IP" |
|
123 |
get_eui64 "$MAC" "$SUBNET6" |
|
124 |
get_rev6_info "$EUI64" |
|
125 |
$SNF_NETWORK_LOG dnshook "update dns for $GANETI_INSTANCE_NAME $IP $EUI64" |
|
126 |
update_dns |
|
127 |
|
|
128 |
;; |
|
129 |
esac |
|
130 |
|
|
131 |
done |
|
132 |
|
|
133 |
done |
/dev/null | ||
---|---|---|
1 |
#!/bin/bash |
|
2 |
|
|
3 |
source /etc/default/snf-network |
|
4 |
source /usr/lib/snf-network/common.sh |
|
5 |
|
|
6 |
host=$(hostname) |
|
7 |
domain=$(hostname -d) |
|
8 |
|
|
9 |
FIRST=0 |
|
10 |
LAST=$((GANETI_INSTANCE_NIC_COUNT - 1)) |
|
11 |
for idx in $(seq $FIRST $LAST); do |
|
12 |
ip=GANETI_INSTANCE_NIC${idx}_IP |
|
13 |
mac=GANETI_INSTANCE_NIC${idx}_MAC |
|
14 |
mode=GANETI_INSTANCE_NIC${idx}_MODE |
|
15 |
link=GANETI_INSTANCE_NIC${idx}_LINK |
|
16 |
network=GANETI_INSTANCE_NIC${idx}_NETWORK_SUBNET |
|
17 |
subnet6=GANETI_INSTANCE_NIC${idx}_NETWORK_SUBNET6 |
|
18 |
tags=GANETI_INSTANCE_NIC${idx}_NETWORK_TAGS |
|
19 |
eval IP=\$$ip |
|
20 |
eval MAC=\$$mac |
|
21 |
eval MODE=\$$mode |
|
22 |
eval LINK=\$$link |
|
23 |
eval NETWORK=\$$network |
|
24 |
eval SUBNET6=\$$subnet6 |
|
25 |
eval TAGS=\$$tags |
|
26 |
|
|
27 |
for tag in $TAGS; do |
|
28 |
case $tag in |
|
29 |
$IP_LESS_ROUTED_TAG) |
|
30 |
if [ "$GANETI_OLD_PRIMARY" == "$host.$domain" ]; then |
|
31 |
# This runs on the source node |
|
32 |
get_uplink $LINK "-6" |
|
33 |
get_eui64 $MAC $SUBNET6 |
|
34 |
$SNF_NETWORK_LOG $0 "ip -6 neigh del proxy $EUI64 dev $UPLINK" |
|
35 |
ip -6 neigh del proxy $EUI64 dev $UPLINK >/dev/null 2>&1 |
|
36 |
elif [ "$GANETI_NEW_PRIMARY" == "$host.$domain" ]; then |
|
37 |
$SNF_NETWORK_LOG $0 "Do nothing in new primary. All done by if-up script" |
|
38 |
fi |
|
39 |
;; |
|
40 |
esac |
|
41 |
done |
|
42 |
done |
|
43 |
|
|
44 |
exit 0 |
b/snf-network-dnshook | ||
---|---|---|
1 |
#!/bin/bash |
|
2 |
|
|
3 |
# Configuration Fallbacks. All can(must for some of them) be overwritten by /etc/default/snf-network |
|
4 |
TTL=300 |
|
5 |
# the bind server IP/FQDN |
|
6 |
SERVER="" |
|
7 |
# this is the .vm.synnefo.live. |
|
8 |
# Leave empty if only reverse dns management is needed. |
|
9 |
# TODO: make this zone to be instance specific!!! |
|
10 |
FZONE="" |
|
11 |
# the file with dns authorization keys |
|
12 |
KEYFILE="" |
|
13 |
MAC2EUI64="/usr/bin/mac2eui64" |
|
14 |
|
|
15 |
source /etc/default/snf-network |
|
16 |
source /usr/lib/snf-network/common.sh |
|
17 |
|
|
18 |
if [ -z "$SERVER" -o -z "$FZONE" -o ! -e "$KEYFILE" ]; then |
|
19 |
exit 0 |
|
20 |
fi |
|
21 |
|
|
22 |
update_dns () { |
|
23 |
|
|
24 |
if [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_CREATE" ]; then |
|
25 |
update_all add |
|
26 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_REMOVE" ]; then |
|
27 |
update_all delete |
|
28 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_RENAME" ]; then |
|
29 |
update_all delete |
|
30 |
# Let's override a variable and add ourselves |
|
31 |
GANETI_INSTANCE_NAME=$GANETI_INSTANCE_NEW_NAME |
|
32 |
update_all add |
|
33 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_STARTUP" ]; then |
|
34 |
update_all add |
|
35 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SHUTDOWN" ]; then |
|
36 |
update_all delete |
|
37 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_REBOOT" ]; then |
|
38 |
update_all add |
|
39 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SET_PARAMS" ]; then |
|
40 |
update_all add |
|
41 |
fi |
|
42 |
|
|
43 |
} |
|
44 |
|
|
45 |
|
|
46 |
# Query nameserver for entries related to the specific instance |
|
47 |
# An example output is the following: |
|
48 |
# www.google.com has address 173.194.113.114 |
|
49 |
# www.google.com has address 173.194.113.115 |
|
50 |
# www.google.com has address 173.194.113.116 |
|
51 |
# www.google.com has address 173.194.113.112 |
|
52 |
# www.google.com has address 173.194.113.113 |
|
53 |
# www.google.com has IPv6 address 2a00:1450:4001:80b::1012 |
|
54 |
query_dns () { |
|
55 |
|
|
56 |
HOSTQ="host -s -R 3 -W 3" |
|
57 |
HOST_IP_ALL=$($HOSTQ $GANETI_INSTANCE_NAME.$FZONE $SERVER | sed -n 's/.*has address //p') |
|
58 |
HOST_IP6_ALL=$($HOSTQ $GANETI_INSTANCE_NAME.$FZONE $SERVER | sed -n 's/.*has IPv6 address //p') |
|
59 |
|
|
60 |
} |
|
61 |
|
|
62 |
|
|
63 |
# Reset all entries related to the specific instance |
|
64 |
# This should be invoced only during instance modification |
|
65 |
# because we do not know which nics have been modify |
|
66 |
reset_dns () { |
|
67 |
|
|
68 |
if [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SET_PARAMS" ]; then |
|
69 |
query_dns |
|
70 |
# This should remove the A, AAAA, CNAME entries |
|
71 |
send_command "update delete $GANETI_INSTANCE_NAME.$FZONE" |
|
72 |
for ip in $HOST_IP_ALL; do |
|
73 |
get_rev4_info $ip |
|
74 |
# This should remove the IPv4 reverse entry |
|
75 |
send_command "update delete $RLPART.$RZONE" |
|
76 |
done |
|
77 |
for ip6 in $HOST_IP6_ALL; do |
|
78 |
get_rev6_info $ip6 |
|
79 |
# This should remove the IPv6 reverse entry |
|
80 |
send_command "update delete $R6LPART$R6ZONE." |
|
81 |
done |
|
82 |
fi |
|
83 |
|
|
84 |
} |
|
85 |
|
|
86 |
|
|
87 |
# Main starts here |
|
88 |
|
|
89 |
|
|
90 |
# Exit if we do not have instance name. |
|
91 |
# It should be exported to hooks for instance related opcodes. |
|
92 |
if [ -z "$GANETI_INSTANCE_NAME" ]; then |
|
93 |
exit 0 |
|
94 |
fi |
|
95 |
|
|
96 |
# This runs only for instance modification |
|
97 |
reset_dns |
|
98 |
|
|
99 |
# If GANETI_INSTANCE_NIC_COUNT is not set then nothing happens |
|
100 |
FIRST=0 |
|
101 |
LAST=$((GANETI_INSTANCE_NIC_COUNT - 1)) |
|
102 |
for idx in $(seq $FIRST $LAST); do |
|
103 |
ip=GANETI_INSTANCE_NIC${idx}_IP |
|
104 |
mac=GANETI_INSTANCE_NIC${idx}_MAC |
|
105 |
mode=GANETI_INSTANCE_NIC${idx}_MODE |
|
106 |
link=GANETI_INSTANCE_NIC${idx}_LINK |
|
107 |
subnet=GANETI_INSTANCE_NIC${idx}_NETWORK_SUBNET |
|
108 |
subnet6=GANETI_INSTANCE_NIC${idx}_NETWORK_SUBNET6 |
|
109 |
tags=GANETI_INSTANCE_NIC${idx}_NETWORK_TAGS |
|
110 |
eval IP=\$$ip |
|
111 |
eval MAC=\$$mac |
|
112 |
eval MODE=\$$mode |
|
113 |
eval LINK=\$$link |
|
114 |
eval SUBNET=\$$subnet |
|
115 |
eval SUBNET6=\$$subnet6 |
|
116 |
eval TAGS=\$$tags |
|
117 |
|
|
118 |
for tag in $TAGS; do |
|
119 |
case $tag in |
|
120 |
$DNS_TAG) |
|
121 |
|
|
122 |
get_rev4_info "$IP" |
|
123 |
get_eui64 "$MAC" "$SUBNET6" |
|
124 |
get_rev6_info "$EUI64" |
|
125 |
$SNF_NETWORK_LOG dnshook "update dns for $GANETI_INSTANCE_NAME $IP $EUI64" |
|
126 |
update_dns |
|
127 |
|
|
128 |
;; |
|
129 |
esac |
|
130 |
|
|
131 |
done |
|
132 |
|
|
133 |
done |
b/snf-network-hook | ||
---|---|---|
1 |
#!/bin/bash |
|
2 |
|
|
3 |
source /etc/default/snf-network |
|
4 |
source /usr/lib/snf-network/common.sh |
|
5 |
|
|
6 |
host=$(hostname) |
|
7 |
domain=$(hostname -d) |
|
8 |
|
|
9 |
FIRST=0 |
|
10 |
LAST=$((GANETI_INSTANCE_NIC_COUNT - 1)) |
|
11 |
for idx in $(seq $FIRST $LAST); do |
|
12 |
ip=GANETI_INSTANCE_NIC${idx}_IP |
|
13 |
mac=GANETI_INSTANCE_NIC${idx}_MAC |
|
14 |
mode=GANETI_INSTANCE_NIC${idx}_MODE |
|
15 |
link=GANETI_INSTANCE_NIC${idx}_LINK |
|
16 |
network=GANETI_INSTANCE_NIC${idx}_NETWORK_SUBNET |
|
17 |
subnet6=GANETI_INSTANCE_NIC${idx}_NETWORK_SUBNET6 |
|
18 |
tags=GANETI_INSTANCE_NIC${idx}_NETWORK_TAGS |
|
19 |
eval IP=\$$ip |
|
20 |
eval MAC=\$$mac |
|
21 |
eval MODE=\$$mode |
|
22 |
eval LINK=\$$link |
|
23 |
eval NETWORK=\$$network |
|
24 |
eval SUBNET6=\$$subnet6 |
|
25 |
eval TAGS=\$$tags |
|
26 |
|
|
27 |
for tag in $TAGS; do |
|
28 |
case $tag in |
|
29 |
$IP_LESS_ROUTED_TAG) |
|
30 |
if [ "$GANETI_OLD_PRIMARY" == "$host.$domain" ]; then |
|
31 |
# This runs on the source node |
|
32 |
get_uplink $LINK "-6" |
|
33 |
get_eui64 $MAC $SUBNET6 |
|
34 |
$SNF_NETWORK_LOG $0 "ip -6 neigh del proxy $EUI64 dev $UPLINK" |
|
35 |
ip -6 neigh del proxy $EUI64 dev $UPLINK >/dev/null 2>&1 |
|
36 |
elif [ "$GANETI_NEW_PRIMARY" == "$host.$domain" ]; then |
|
37 |
$SNF_NETWORK_LOG $0 "Do nothing in new primary. All done by if-up script" |
|
38 |
fi |
|
39 |
;; |
|
40 |
esac |
|
41 |
done |
|
42 |
done |
|
43 |
|
|
44 |
exit 0 |
Also available in: Unified diff