(command.CommandList children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName NUM_NODES))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NUM_NODES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NUM_NODES='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NUM_NODES='> name:NUM_NODES) op: assign_op.Equal rhs: {<3>} ) ] redirects: [] ) ] spids: [69 82] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) ) } {<Id.Lit_Equals '='>} {(SQ <->)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-->} {<mysqld>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] spids: [91 114] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {(SQ <mysqld>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'DATADIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DATADIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DATADIR='> name:DATADIR) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))} {<--verbose>} {<--help>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [{<awk>} {(SQ <'$1 == "datadir" { print $2; exit }'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ ($ Id.VSub_DollarName DATADIR) <'/mysql'>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName MYSQL_ROOT_PASSWORD))} {<-a>} {<-z>} {(DQ ($ Id.VSub_DollarName MYSQL_ALLOW_EMPTY_PASSWORD))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ < 'error: database is uninitialized and MYSQL_ROOT_PASSWORD not set' > ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <' Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?'>)} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [215 236] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'Running mysql_install_db ...'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mysql_install_db> more_env: [] words: [ {<mysql_install_db>} {<--datadir> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName DATADIR))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'Finished mysql_install_db'>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'tempSqlFile='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tempSqlFile='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'tempSqlFile='> name: tempSqlFile ) op: assign_op.Equal rhs: {(SQ <'/tmp/mysql-first-time.sql'>)} ) ] redirects: [] ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName tempSqlFile))} ) (Redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOSQL>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'DELETE FROM mysql.user ;\n'> <'CREATE USER \'root\'@\'%\' IDENTIFIED BY \''> (${ Id.VSub_Name MYSQL_ROOT_PASSWORD) <'\' ;\n'> <'GRANT ALL ON *.* TO \'root\'@\'%\' WITH GRANT OPTION ;\n'> ] ) ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MYSQL_DATABASE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'CREATE DATABASE IF NOT EXISTS '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\`'> ch: '`' ) ($ Id.VSub_DollarName MYSQL_DATABASE) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\`'> ch: '`' ) <' ;'> ) } ] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName tempSqlFile))} ) ] do_fork: T ) ] spids: [334 345] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MYSQL_USER))} {<-a>} {(DQ ($ Id.VSub_DollarName MYSQL_PASSWORD))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'CREATE USER \''> ($ Id.VSub_DollarName MYSQL_USER) <'\'@\'%\' IDENTIFIED BY \''> ($ Id.VSub_DollarName MYSQL_PASSWORD) <'\' ;'> ) } ] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName tempSqlFile))} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MYSQL_DATABASE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'GRANT ALL ON '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\`'> ch: '`' ) ($ Id.VSub_DollarName MYSQL_DATABASE) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\`'> ch: '`' ) <'.* TO \''> ($ Id.VSub_DollarName MYSQL_USER) <'\'@\'%\' ;'> ) } ] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName tempSqlFile))} ) ] do_fork: T ) ] spids: [409 420] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [370 387] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName GALERA_CLUSTER))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'WSREP_SST_USER='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'WSREP_SST_USER='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'WSREP_SST_USER='> name: WSREP_SST_USER ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name WSREP_SST_USER> var_name: WSREP_SST_USER suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {(DQ <sst>)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName WSREP_SST_PASSWORD))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ < 'error: Galera cluster is enabled and WSREP_SST_PASSWORD is not set' > ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ <' Did you forget to add -e WSREP_SST__PASSWORD=... ?'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [483 496] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'CREATE USER \''> (${ Id.VSub_Name WSREP_SST_USER) <'\'@\'localhost\' IDENTIFIED BY \''> (${ Id.VSub_Name WSREP_SST_PASSWORD) <'\';'> ) } ] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName tempSqlFile))} ) ] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO \''> (${ Id.VSub_Name WSREP_SST_USER) <'\'@\'localhost\';'> ) } ] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName tempSqlFile))} ) ] do_fork: T ) ] spids: [453 466] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'FLUSH PRIVILEGES ;'>)}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName tempSqlFile))} ) ] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-->} {(DQ ($ Id.VSub_At '@'))} {<--init-file> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName tempSqlFile))} ] redirects: [] do_fork: T ) ] spids: [192 208] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <chown> more_env: [] words: [ {<chown>} {<-R>} {<mysql> <Id.Lit_Colon ':'> <mysql>} {(DQ ($ Id.VSub_DollarName DATADIR))} ] redirects: [] do_fork: T ) ] spids: [133 150] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName GALERA_CLUSTER))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'WSREP_SST_USER='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'WSREP_SST_USER='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WSREP_SST_USER='> name:WSREP_SST_USER) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name WSREP_SST_USER> var_name: WSREP_SST_USER suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{(DQ <sst>)}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName WSREP_SST_PASSWORD))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <'error: database is uninitialized and WSREP_SST_PASSWORD not set'>)} ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' Did you forget to add -e WSREP_SST_PASSWORD=xxx ?'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [663 676] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-i>} {<-e>} { (DQ <'s|^wsrep_sst_auth=sstuser:changethis|wsrep_sst_auth='> (${ Id.VSub_Name WSREP_SST_USER) <':'> (${ Id.VSub_Name WSREP_SST_PASSWORD) <'|'> ) } {<'/etc/mysql/conf.d/cluster.cnf'>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'WSREP_NODE_ADDRESS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'WSREP_NODE_ADDRESS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'WSREP_NODE_ADDRESS='> name: WSREP_NODE_ADDRESS ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <ip> more_env: [] words: [{<ip>} {<addr>} {<show>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-E>} {(SQ <'^[ ]*inet'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-m1>} {<global>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [{<awk>} {(SQ <'{ print $2 }'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {(SQ <'s/\\/.*//'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName WSREP_NODE_ADDRESS))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-i>} {<-e>} { (DQ <'s|^wsrep_node_address=.*'> <Id.Lit_Dollar '$'> <'|wsrep_node_address='> (${ Id.VSub_Name WSREP_NODE_ADDRESS) <'|'> ) } {<'/etc/mysql/conf.d/cluster.cnf'>} ] redirects: [] do_fork: T ) ] spids: [788 801] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName WSREP_CLUSTER_ADDRESS))} {<-o>} {(DQ ($ Id.VSub_DollarName WSREP_CLUSTER_ADDRESS))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ <'gcomm://'>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName WSREP_CLUSTER_ADDRESS))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'WSREP_CLUSTER_ADDRESS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'WSREP_CLUSTER_ADDRESS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'WSREP_CLUSTER_ADDRESS='> name: WSREP_CLUSTER_ADDRESS ) op: assign_op.Equal rhs: {(DQ <'gcomm://'>)} ) ] redirects: [] ) ] spids: [873 886] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [NUM] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <seq> more_env: [] words: [{<seq>} {<1>} {($ Id.VSub_DollarName NUM_NODES)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'NODE_SERVICE_HOST='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NODE_SERVICE_HOST='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NODE_SERVICE_HOST='> name: NODE_SERVICE_HOST ) op: assign_op.Equal rhs: {(DQ <PXC_NODE> (${ Id.VSub_Name NUM) <_SERVICE_HOST>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name NODE_SERVICE_HOST> var_name: NODE_SERVICE_HOST prefix_op: <Id.VSub_Bang '!'> right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} { (DQ ($ Id.VSub_DollarName HOSTNAME) ) } {<Id.Lit_Colon ':'>} { (DQ <pxc-node> (${ Id.VSub_Name NUM) ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { ($ Id.VSub_DollarName WSREP_CLUSTER_ADDRESS ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'gcomm://'>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'WSREP_CLUSTER_ADDRESS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'WSREP_CLUSTER_ADDRESS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'WSREP_CLUSTER_ADDRESS=' > name: WSREP_CLUSTER_ADDRESS ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name WSREP_CLUSTER_ADDRESS ) <','> ) } ) ] redirects: [] ) ] spids: [997 1013] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name USE_IP))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'WSREP_CLUSTER_ADDRESS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'WSREP_CLUSTER_ADDRESS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'WSREP_CLUSTER_ADDRESS=' > name: WSREP_CLUSTER_ADDRESS ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name WSREP_CLUSTER_ADDRESS ) ) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name NODE_SERVICE_HOST> var_name: NODE_SERVICE_HOST prefix_op: <Id.VSub_Bang '!'> right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) ] spids: [1036 1051] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'WSREP_CLUSTER_ADDRESS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'WSREP_CLUSTER_ADDRESS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'WSREP_CLUSTER_ADDRESS='> name: WSREP_CLUSTER_ADDRESS ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name WSREP_CLUSTER_ADDRESS) <pxc-node> (${ Id.VSub_Name NUM) ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [962 990] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [939 955] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [832 858] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName WSREP_CLUSTER_ADDRESS))} {<-a>} {(DQ ($ Id.VSub_DollarName WSREP_CLUSTER_ADDRESS))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'gcomm://'>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-i>} {<-e>} { (DQ <'s|^wsrep_cluster_address=gcomm://|wsrep_cluster_address='> (${ Id.VSub_Name WSREP_CLUSTER_ADDRESS) <'|'> ) } {<'/etc/mysql/conf.d/cluster.cnf'>} ] redirects: [] do_fork: T ) ] spids: [1113 1139] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [633 646] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-i>} {<-e>} { (DQ <'s/^server'> <Id.Lit_BadBackslash '\\'> <'-id=.*'> <Id.Lit_Dollar '$'> <'/server-id='> (${ Id.VSub_Name RANDOM) <'/'> ) } {<'/etc/mysql/my.cnf'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] )