Skip to content

Commit 783e28b

Browse files
committed
fix: setup root, zone and vrrp
1 parent f59dd83 commit 783e28b

File tree

2 files changed

+37
-36
lines changed

2 files changed

+37
-36
lines changed

packages/ns-api/files/ns.ha

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -74,28 +74,28 @@ def setup(role, lan_interface, ha_interface, virtual_ip, ha_main_ipaddress, ha_s
7474
u.set('keepalived', 'ha_peer', 'ssh_port', '22')
7575
u.set('keepalived', 'ha_peer', 'ssh_key', '/etc/keepalived/keys/id_rsa')
7676

77-
u.set('keepalived', 'vrrp_instance', 'main')
78-
u.set('keepalived', 'vrrp_instance', 'name', 'master')
79-
u.set('keepalived', 'vrrp_instance', 'state', 'MASTER')
80-
u.set('keepalived', 'vrrp_instance', 'interface', ha_interface)
81-
u.set('keepalived', 'vrrp_instance', 'virtual_router_id', '100')
82-
u.set('keepalived', 'vrrp_instance', 'priority', '100')
83-
u.set('keepalived', 'vrrp_instance', 'advert_int', '1')
84-
u.set('keepalived', 'vrrp_instance', 'nopreempt', '0')
85-
u.set('keepalived', 'vrrp_instance', 'virtual_ipaddress', [f'{lan_interface}_ha'])
86-
u.set('keepalived', 'vrrp_instance', 'unicast_src_ip', ha_main_ipaddress)
87-
u.set('keepalived', 'vrrp_instance', 'unicast_peer', ['backup'])
88-
u.set('keepalived', 'vrrp_instance', 'auth_type', 'PASS')
77+
u.set('keepalived', 'main', 'vrrp_instance')
78+
u.set('keepalived', 'main', 'name', 'master')
79+
u.set('keepalived', 'main', 'state', 'MASTER')
80+
u.set('keepalived', 'main', 'interface', ha_interface)
81+
u.set('keepalived', 'main', 'virtual_router_id', '100')
82+
u.set('keepalived', 'main', 'priority', '100')
83+
u.set('keepalived', 'main', 'advert_int', '1')
84+
u.set('keepalived', 'main', 'nopreempt', '0')
85+
u.set('keepalived', 'main', 'virtual_ipaddress', [f'{lan_interface}_ha'])
86+
u.set('keepalived', 'main', 'unicast_src_ip', ha_main_ipaddress)
87+
u.set('keepalived', 'main', 'unicast_peer', ['backup'])
88+
u.set('keepalived', 'main', 'auth_type', 'PASS')
8989

9090
password = u.get('keepalived', 'vrrp_instance', 'auth_pass', default=None)
9191
if not password:
9292
# generate random password: SHA1 hash based on the current time
9393
current_time = str(time.time()).encode('utf-8')
9494
password = hashlib.sha1(current_time).hexdigest()[:8]
9595
ret['password'] = password
96-
u.set('keepalived', 'vrrp_instance', 'auth_pass', password)
97-
u.set('keepalived', 'vrrp_instance', 'track_interface', [f'{lan_interface}_ha'])
98-
u.set('keepalived', 'vrrp_instance', 'track_script', ['sender'])
96+
u.set('keepalived', 'main', 'auth_pass', password)
97+
u.set('keepalived', 'main', 'track_interface', [f'{lan_interface}_ha'])
98+
u.set('keepalived', 'main', 'track_script', ['sender'])
9999

100100
# Generate the private key if it does not exist
101101
private_key_path = '/etc/keepalived/keys/id_rsa'
@@ -121,34 +121,35 @@ def setup(role, lan_interface, ha_interface, virtual_ip, ha_main_ipaddress, ha_s
121121
u.set('keepalived', 'ha_peer', 'sync_dir', '/usr/share/keepalived/rsync')
122122
u.set('keepalived', 'ha_peer', 'ssh_pubkey', pubkey)
123123

124-
u.set('keepalived', 'vrrp_instance', 'backup')
125-
u.set('keepalived', 'vrrp_instance', 'name', 'backup')
126-
u.set('keepalived', 'vrrp_instance', 'state', 'BACKUP')
127-
u.set('keepalived', 'vrrp_instance', 'interface', ha_interface)
128-
u.set('keepalived', 'vrrp_instance', 'virtual_router_id', '100')
129-
u.set('keepalived', 'vrrp_instance', 'priority', '50')
130-
u.set('keepalived', 'vrrp_instance', 'advert_int', '1')
131-
u.set('keepalived', 'vrrp_instance', 'nopreempt', '0')
132-
u.set('keepalived', 'vrrp_instance', 'virtual_ipaddress', [f'{lan_interface}_ha'])
133-
u.set('keepalived', 'vrrp_instance', 'unicast_src_ip', ha_secondary_ipaddress)
134-
u.set('keepalived', 'vrrp_instance', 'unicast_peer', ['master'])
135-
u.set('keepalived', 'vrrp_instance', 'auth_type', 'PASS')
136-
u.set('keepalived', 'vrrp_instance', 'auth_pass', password)
137-
u.set('keepalived', 'vrrp_instance', 'track_interface', [f'{lan_interface}_ha'])
138-
u.set('keepalived', 'vrrp_instance', 'track_script', ['receiver'])
124+
u.set('keepalived', 'backup', 'vrrp_instance')
125+
u.set('keepalived', 'backup', 'name', 'backup')
126+
u.set('keepalived', 'backup', 'state', 'BACKUP')
127+
u.set('keepalived', 'backup', 'interface', ha_interface)
128+
u.set('keepalived', 'backup', 'virtual_router_id', '100')
129+
u.set('keepalived', 'backup', 'priority', '50')
130+
u.set('keepalived', 'backup', 'advert_int', '1')
131+
u.set('keepalived', 'backup', 'nopreempt', '0')
132+
u.set('keepalived', 'backup', 'virtual_ipaddress', [f'{lan_interface}_ha'])
133+
u.set('keepalived', 'backup', 'unicast_src_ip', ha_secondary_ipaddress)
134+
u.set('keepalived', 'backup', 'unicast_peer', ['master'])
135+
u.set('keepalived', 'backup', 'auth_type', 'PASS')
136+
u.set('keepalived', 'backup', 'auth_pass', password)
137+
u.set('keepalived', 'backup', 'track_interface', [f'{lan_interface}_ha'])
138+
u.set('keepalived', 'backup', 'track_script', ['receiver'])
139139

140140
# Fix OpenVPN permissions
141141
group_file = '/etc/group'
142142
rsync_dir = '/usr/share/keepalived/rsync/etc/'
143143

144-
# Update the group file
144+
# Update the group file, if needed
145145
with open(group_file, 'r') as file:
146146
group_data = file.read()
147147

148-
group_data = group_data.replace('root:x:0:', 'root:x:0:keepalived')
148+
if 'root:x:0:keepalived' not in group_data:
149+
group_data = group_data.replace('root:x:0:', 'root:x:0:keepalived')
149150

150-
with open(group_file, 'w') as file:
151-
file.write(group_data)
151+
with open(group_file, 'w') as file:
152+
file.write(group_data)
152153

153154
# Create the rsync directory if it doesn't exist
154155
os.makedirs(rsync_dir, exist_ok=True)

packages/ns-api/files/templates

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ config template_rule 'ns_guest_dhcp'
117117
config template_zone 'ns_ha'
118118
option name 'ha'
119119
option input 'ACCEPT'
120-
option output 'REJECT'
121-
option forward 'REJECT'
120+
option output 'ACCEPT'
121+
option forward 'ACCEPT'
122122
option ns_description 'HA zone for cluster traffic'
123123

124124
# IPSec

0 commit comments

Comments
 (0)