(List (FunctionDef launchmaster [] (List (If (DBracket {B! {B1 UNARY_FILE_e {[LIT_CHARS /redis-master-data]}}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Redis master data doesn't exist, data won't be persistent!"]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS /redis-master-data]} ) ) ) (Com {[LIT_CHARS redis-server]} {[LIT_CHARS /redis-master/redis.conf]} {[LIT_CHARS --protected-mode]} {[LIT_CHARS no]} ) ) ) (FunctionDef launchsentinel [] (List (While (Com {[LIT_CHARS true]} ) (List (= scope= flags=0 words=[] bindings=[('master', {[ComSub (Pipeline (Com {[LIT_CHARS redis-cli]} {[LIT_CHARS -h]} {[VarSub REDIS_SENTINEL_SERVICE_HOST]} {[LIT_CHARS -p]} {[VarSub REDIS_SENTINEL_SERVICE_PORT]} {[LIT_CHARS --csv]} {[LIT_CHARS SENTINEL]} {[LIT_CHARS get-master-addr-by-name]} {[LIT_CHARS mymaster]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [SQ ]} {[LIT_CHARS -f1]}) )]})]) (If (DBracket {B1 UNARY_STRING_n {[VarSub master]}}) (= scope= flags=0 words=[] bindings=[('master', {[DQ [VarSub master transform_ops=[PatSub {[\ LIT_ESCAPED_CHAR "\\\""]} None do_all]]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('master', {[ComSub (Com {[LIT_CHARS hostname]} {[LIT_CHARS -i]})]})]) ) (Com {[LIT_CHARS redis-cli]} {[LIT_CHARS -h]} {[VarSub master]} {[LIT_CHARS INFO]} ) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub ?]]} {[DQ [LIT_CHARS 0]]}}) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Connecting to master failed. Waiting..."]]} ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 10]} ) ) ) (= scope= flags=0 words=[] bindings=[('sentinel_conf', {[LIT_CHARS sentinel.conf]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "sentinel monitor mymaster "][VarSub master][LIT_CHARS " 6379 2"]]} < (FilenameRedirectNode filename={[VarSub sentinel_conf]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "sentinel down-after-milliseconds mymaster 60000"]]} < (FilenameRedirectNode filename={[VarSub sentinel_conf]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "sentinel failover-timeout mymaster 180000"]]} < (FilenameRedirectNode filename={[VarSub sentinel_conf]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "sentinel parallel-syncs mymaster 1"]]} < (FilenameRedirectNode filename={[VarSub sentinel_conf]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "bind 0.0.0.0"]]} ) (Com {[LIT_CHARS redis-sentinel]} {[VarSub sentinel_conf]} {[LIT_CHARS --protected-mode]} {[LIT_CHARS no]} ) ) ) (FunctionDef launchslave [] (List (While (Com {[LIT_CHARS true]} ) (List (= scope= flags=0 words=[] bindings=[('master', {[ComSub (Pipeline (Com {[LIT_CHARS redis-cli]} {[LIT_CHARS -h]} {[VarSub REDIS_SENTINEL_SERVICE_HOST]} {[LIT_CHARS -p]} {[VarSub REDIS_SENTINEL_SERVICE_PORT]} {[LIT_CHARS --csv]} {[LIT_CHARS SENTINEL]} {[LIT_CHARS get-master-addr-by-name]} {[LIT_CHARS mymaster]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [SQ ]} {[LIT_CHARS -f1]}) )]})]) (If (DBracket {B1 UNARY_STRING_n {[VarSub master]}}) (= scope= flags=0 words=[] bindings=[('master', {[DQ [VarSub master transform_ops=[PatSub {[\ LIT_ESCAPED_CHAR "\\\""]} None do_all]]]})]) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Failed to find master."]]} ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 60]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (Com {[LIT_CHARS redis-cli]} {[LIT_CHARS -h]} {[VarSub master]} {[LIT_CHARS INFO]} ) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub ?]]} {[DQ [LIT_CHARS 0]]}}) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Connecting to master failed. Waiting..."]]} ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 10]} ) ) ) (Com {[LIT_CHARS sed]} {[LIT_CHARS -i]} {[DQ [LIT_CHARS "s/%master-ip%/"][VarSub master][LIT_CHARS /]]} {[LIT_CHARS /redis-slave/redis.conf]} ) (Com {[LIT_CHARS sed]} {[LIT_CHARS -i]} {[DQ [LIT_CHARS "s/%master-port%/6379/"]]} {[LIT_CHARS /redis-slave/redis.conf]} ) (Com {[LIT_CHARS redis-server]} {[LIT_CHARS /redis-slave/redis.conf]} {[LIT_CHARS --protected-mode]} {[LIT_CHARS no]} ) ) ) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub MASTER]]} {[DQ [LIT_CHARS true]]}}) (List (Com {[LIT_CHARS launchmaster]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) ) ) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub SENTINEL]]} {[DQ [LIT_CHARS true]]}}) (List (Com {[LIT_CHARS launchsentinel]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) ) ) (Com {[LIT_CHARS launchslave]} ) )