(List (Com {[LIT_CHARS set]} {[LIT_CHARS -e]}) (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub 1]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Usage : "][VarSub 0][LIT_CHARS " environment (hostname)"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('ENVIRONMENT', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('EXACTHOST', {[VarSub 2]})]) (If (DBracket {B! {B1 UNARY_FILE_f {[DQ [LIT_CHARS environments/][VarSub ENVIRONMENT][LIT_CHARS .json]]}}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Error: Couldn't find '"][VarSub ENVIRONMENT][LIT_CHARS ".json'. Did you forget to pass the environment as first param?"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS HOST]} {[LIT_CHARS MACADDR]} {[LIT_CHARS IPADDR]} {[LIT_CHARS ILOIPADDR]} {[LIT_CHARS DOMAIN]} {[LIT_CHARS ROLE]}) (If (DBracket {B? LOGICAL_BINARY_OR {B1 UNARY_STRING_z {[DQ [VarSub EXACTHOST]]}} {B? LOGICAL_BINARY_OR {B2 BINARY_STRING_EQUAL {[DQ [VarSub EXACTHOST]]} {[DQ [VarSub HOST]]}} {B? LOGICAL_BINARY_OR {B2 BINARY_STRING_EQUAL {[DQ [VarSub EXACTHOST]]} {[DQ [VarSub IPADDR]]}} {B? LOGICAL_BINARY_OR {B? LOGICAL_BINARY_AND {B2 BINARY_STRING_EQUAL {[DQ [VarSub EXACTHOST]]} {[DQ [LIT_CHARS heads]]}} {B2 BINARY_STRING_EQUAL {[DQ [VarSub ROLE]]} {[DQ [LIT_CHARS head]]}}} {B? LOGICAL_BINARY_AND {B2 BINARY_STRING_EQUAL {[DQ [VarSub EXACTHOST]]} {[DQ [LIT_CHARS workers]]}} {B2 BINARY_STRING_EQUAL {[DQ [VarSub ROLE]]} {[DQ [LIT_CHARS work]]}}}}}}}) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub ROLE]]} {[LIT_CHARS head]}}) (= scope= flags=0 words=[] bindings=[('HEADS', {[DQ [VarSub HEADS][LIT_CHARS " "][VarSub IPADDR]]})]) (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub ROLE]]} {[LIT_CHARS work]}}) (= scope= flags=0 words=[] bindings=[('WORKERS', {[DQ [VarSub WORKERS][LIT_CHARS " "][VarSub IPADDR]]})]) ) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "heads : "][VarSub HEADS]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "workers : "][VarSub WORKERS]]}) (= scope= flags=0 words=[] bindings=[('PASSWD', {[ComSub (Pipeline (Com {[LIT_CHARS knife]} {[LIT_CHARS data]} {[LIT_CHARS bag]} {[LIT_CHARS show]} {[LIT_CHARS configs]} {[VarSub ENVIRONMENT]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "cobbler-root-password:"]]}) (Com {[LIT_CHARS awk]} {[SQ ]}) )]})]) (For HEAD [{[VarSub HEADS]}]) (List (= scope= flags=0 words=[] bindings=[('MATCH', {[VarSub HEAD]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "About to bootstrap head node "][VarSub HEAD][LIT_CHARS ...]]}) (Com {[LIT_CHARS ./chefit.sh]} {[VarSub HEAD]} {[VarSub ENVIRONMENT]}) (Pipeline (Com {[LIT_CHARS echo]} {[VarSub PASSWD]}) (Com {[LIT_CHARS sudo]} {[LIT_CHARS knife]} {[LIT_CHARS bootstrap]} {[LIT_CHARS -E]} {[VarSub ENVIRONMENT]} {[LIT_CHARS -r]} {[SQ ]} {[VarSub HEAD]} {[LIT_CHARS -x]} {[LIT_CHARS ubuntu]} {[LIT_CHARS -P]} {[VarSub PASSWD]} {[LIT_CHARS --sudo]}) ) (= scope= flags=0 words=[] bindings=[('SSHCMD', {[DQ [LIT_CHARS "./nodessh.sh "][VarSub ENVIRONMENT][LIT_CHARS " "][VarSub HEAD]]})]) (Com {[VarSub SSHCMD]} {[DQ [LIT_CHARS /home/ubuntu/finish-head.sh]]} {[LIT_CHARS sudo]}) ) ) (For WORKER [{[VarSub WORKERS]}]) (List (= scope= flags=0 words=[] bindings=[('MATCH', {[VarSub WORKER]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "About to bootstrap worker worker "][VarSub WORKER][LIT_CHARS ...]]}) (Com {[LIT_CHARS ./chefit.sh]} {[VarSub WORKER]} {[VarSub ENVIRONMENT]}) (Pipeline (Com {[LIT_CHARS echo]} {[VarSub PASSWD]}) (Com {[LIT_CHARS sudo]} {[LIT_CHARS knife]} {[LIT_CHARS bootstrap]} {[LIT_CHARS -E]} {[VarSub ENVIRONMENT]} {[LIT_CHARS -r]} {[SQ ]} {[VarSub WORKER]} {[LIT_CHARS -x]} {[LIT_CHARS ubuntu]} {[LIT_CHARS -P]} {[VarSub PASSWD]} {[LIT_CHARS --sudo]}) ) (= scope= flags=0 words=[] bindings=[('SSHCMD', {[DQ [LIT_CHARS "./nodessh.sh "][VarSub ENVIRONMENT][LIT_CHARS " "][VarSub WORKER]]})]) (Com {[VarSub SSHCMD]} {[DQ [LIT_CHARS /home/ubuntu/finish-worker.sh]]} {[LIT_CHARS sudo]}) ) ) (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub MATCH]]}}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Warning: No nodes found"]]}) ) )