@@ -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 )
0 commit comments