{"version":3,"term":{"cols":120,"rows":30,"type":"xterm-256color","version":"iTerm2 3.5.14","theme":{"fg":"#697a82","bg":"#fcf7e5","palette":"#163540:#cb4238:#89982d:#ae8b2c:#4689cd:#c34380:#519f98:#ede9d7:#0d2a34:#bc5329:#5c6d74:#697a82:#869496:#6d71bf:#96a1a1:#fcf7e5"}},"timestamp":1768185598,"idle_time_limit":0.5,"title":"pgsql-append","env":{"SHELL":"/bin/bash"}}
[0.015, "o", "\u001b[?2004h\u001b]0;vonng@vonng-aimax: ~/pigsty\u0007\u001b[01;32mvonng@vonng-aimax\u001b[00m:\u001b[01;34m~/pigsty\u001b[00m$ "]
[0.285, "o", "v"]
[0.094, "o", "i"]
[0.161, "o", " "]
[0.067, "o", "p"]
[0.065, "o", "i"]
[0.101, "o", "gsty.yml "]
[0.125, "o", "\r\n\u001b[?2004l\r"]
[0.009, "o", "\u001b[?1049h\u001b[22;0;0t\u001b[>4;2m\u001b[?1h\u001b=\u001b[?2004h\u001b[?1004h\u001b[1;30r\u001b[?12h\u001b[?12l\u001b[22;2t\u001b[22;1t"]
[0.000, "o", "\u001b[27m\u001b[23m\u001b[29m\u001b[m\u001b[H\u001b[2J\u001b[?25l\u001b[30;1H\"pigsty.yml\""]
[0.000, "o", " 180L, 9816B"]
[0.001, "o", "\u001b[2;1H▽\u001b[6n\u001b[2;1H  \u001b[3;1H\u001bPzz\u001b\\\u001b[0%m\u001b[6n\u001b[3;1H           \u001b[1;1H\u001b[>c\u001b]10;?\u0007\u001b]11;?\u0007"]
[0.007, "o", "\u001b[1;9H\u001b[36mpg_hba_rules\u001b[m\u001b[35m:\u001b[m\r\n          \u001b[38;5;130m- \u001b[m\u001b[35m{\u001b[m \u001b[36muser\u001b[m\u001b[35m:\u001b[m dbuser_view , \u001b[36mdb\u001b[m\u001b[35m:\u001b[m all ,\u001b[36maddr\u001b[m\u001b[35m:\u001b[m infra ,\u001b[36mauth\u001b[m\u001b[35m:\u001b[m pwd ,\u001b[36mtitle\u001b[m\u001b[35m:\u001b[m \u001b[31m'allow grafana dashboard access cmdb from infrr\u001b[3;1Ha nodes'\u001b[m \u001b[35m}\u001b[m\u001b[3;11H\u001b[K\u001b[4;9H\u001b[36mpg_vip_enabled\u001b[m\u001b[35m:\u001b[m \u001b[31mtrue\u001b[m\u001b[5;9H\u001b[36mpg_vip_address\u001b[m\u001b[35m:\u001b[m 10.10.10.2/24\u001b[6;9H\u001b[36mpg_vip_interface\u001b[m\u001b[35m:\u001b[m eth1\u001b[7;9H\u001b[36mnode_crontab\u001b[m\u001b[35m:\u001b[m \u001b[34m # make a full backup 1 am everyday\u001b[m\u001b[8;11H\u001b[38;5;130m- \u001b[m\u001b[31m'00 01 * * * postgres /pg/bin/pg-backup full'\u001b[m\u001b[10;4H\u001b[34m # pgsql 3 node ha cluster: pg-test\u001b[m\r\n    \u001b[36mpg-test\u001b[m\u001b[35m:\u001b[m\u001b[12;7H\u001b[36mhosts\u001b[m\u001b[35m:\u001b[m\u001b[13;9H\u001b[36m10.10.10.11\u001b[m\u001b[35m:\u001b[m \u001b[35m{\u001b[m \u001b[36mpg_seq\u001b[m\u001b[35m:\u001b[m \u001b[31m1\u001b[m, \u001b[36mpg_role\u001b[m\u001b[35m:\u001b[m primary \u001b[35m}\u001b[m  \u001b[34m # primary instance, leader of cluster\u001b[m\u001b[14;9H\u001b[36m10.10.10.12\u001b[m\u001b[35m:\u001b[m \u001b[35m{\u001b[m \u001b[36mpg_seq\u001b[m\u001b[35m:\u001b[m \u001b[31m2\u001b[m, \u001b[36mpg_role\u001b[m\u001b[35m:\u001b[m replica \u001b[35m}\u001b[m  \u001b[34m # replica instance, follower of leader\u001b[15;8H #10.10.10.13: { pg_seq: 3, pg_role: replica, pg_offline_query: true } # replica with offline access\u001b[m\u001b[16;7H\u001b[36mvars\u001b[m\u001b[35m:\u001b[m\u001b[17;9H\u001b[36mpg_cluster\u001b[m\u001b[35m:\u001b[m pg-test\u001b[10C\u001b[34m # define pgsql cluster name\u001b[m\u001b[18;9H\u001b[36mpg_users\u001b[m\u001b[35m:\u001b[m  \u001b[35m[{\u001b[m \u001b[36mname\u001b[m\u001b[35m:\u001b[m test , \u001b[36mpassword\u001b[m\u001b[35m:\u001b[m test , \u001b[36mpgbouncer\u001b[m\u001b[35m:\u001b[m \u001b[31mtrue\u001b[m , \u001b[36mroles\u001b[m\u001b[35m:\u001b[m \u001b[35m[\u001b[m dbrole_admin \u001b[35m]\u001b[m \u001b[35m}]\u001b[m\u001b[19;9H\u001b[36mpg_databases\u001b[m\u001b[35m:\u001b[m \u001b[35m[{\u001b[m \u001b[36mname\u001b[m\u001b[35m:\u001b[m test \u001b[35m}]\u001b[m\u001b[20;9H\u001b[36mpg_vip_enabled\u001b[m\u001b[35m:\u001b[m \u001b[31mtrue\u001b[m\u001b[21;9H\u001b[36mpg_vip_address\u001b[m\u001b[35m:\u001b[m 10.10.10.3/24\u001b[22;9H\u001b[36mpg_vip_interface\u001b[m\u001b[35m:\u001b[m eth1\u001b[23;9H\u001b[36mnode_crontab\u001b[m\u001b[35m:\u001b[m \u001b[34m # make a full backup on monday 1am, and an incremental backup during weekdays\u001b[m\u001b[24;11H\u001b[38;5;130m- \u001b[m\u001b[31m'00 01 * * 1 postgres /pg/bin/pg-backup full'\u001b[m\u001b[25;11H\u001b[38;5;130m- \u001b[m\u001b[31m'00 01 * * 2,3,4,5,6,7 postgres /pg/bin/pg-backup'"]
[0.000, "o", "\u001b[m\u001b[27;4H\u001b[34m #----------------------------------#\r\n\u001b[m   \u001b[34m # redis ms, sentinel, native cluster\r\n\u001b[m   \u001b[34m #----------------------------------#\u001b[m\u001b[30;103H71,9\u001b[10C37%\u001b[15;9H\u001b[?25h\u001b[?4m"]
[0.046, "o", "\u001bP+q436f\u001b\\\u001bP+q6b75\u001b\\\u001bP+q6b64\u001b\\\u001bP+q6b72\u001b\\\u001bP+q6b6c\u001b\\\u001bP+q2332\u001b\\\u001bP+q2334\u001b\\\u001bP+q2569\u001b\\\u001bP+q2a37\u001b\\\u001bP+q6b31\u001b\\\u001bP$q q\u001b\\\u001b[?12$p"]
[0.000, "o", "\u001b[?25l\u001b[30;93Hf\u001b[15;9H\u001b[30;94H7\u001b[15;9H\u001b[30;95H3\u001b[15;9H\u001b[30;96H2\u001b[15;9H\u001b[30;97H/\u001b[15;9H\u001b[30;98He\u001b[15;9H\u001b[30;99H5\u001b[15;9H\u001b[30;100Hd\u001b[15;9H\u001b[30;101H0\u001b[15;9H\u001b[30;93H732/e5d0^[\u001b[15;9H\u001b[30;93H          \u001b[15;9H\u001b[?25h"]
[0.017, "o", "\u001bP+q6b32\u001b\\\u001bP+q6b33\u001b\\\u001bP+q6b34\u001b\\\u001b[?25l\u001b[30;93H7\u001b[15;9H\u001b[30;94H2\u001b[15;9H\u001b[30;95H=\u001b[15;9H\u001b[30;96H1\u001b[15;9H\u001b[30;97HB\u001b[15;9H\u001b[30;98H4\u001b[15;9H\u001b[30;99HF\u001b[15;9H\u001b[30;100H4\u001b[15;9H\u001b[30;101H3\u001b[15;9H\u001b[30;93H2=1B4F43^[\u001b[15;9H"]
[0.000, "o", "\u001b[30;93H          \u001b[15;9H\u001bP+q6b35\u001b\\\u001bP+q6b36\u001b\\\u001bP+q6b37\u001b\\"]
[0.000, "o", "\u001b[30;93H^[\u001b[15;9H\u001b[30;95HP\u001b[15;9H\u001b[30;96H1\u001b[15;9H\u001b[30;97H+\u001b[15;9H\u001b[30;93H     \u001b[15;9H\u001bP+q6b38\u001b\\\u001bP+q6b39\u001b\\"]
[0.000, "o", "\u001b[30;93H1\u001b[15;9H\u001b[30;94H+\u001b[15;9H\u001b[30;95Hr\u001b[15;9H\u001b[30;96H2\u001b[15;9H\u001b[30;97HA\u001b[15;9H\u001b[30;98H3\u001b[15;9H\u001b[30;99H7\u001b[15;9H\u001b[30;100H=\u001b[15;9H\u001b[30;101H1\u001b[15;9H\u001b[30;102HB\u001b[15;9H\u001b[30;93H          \u001b[15;9H\u001bP+q6b3b\u001b\\\u001bP+q4631\u001b\\"]
[0.000, "o", "\u001b[?25h"]
[0.016, "o", "\u001bP+q4632\u001b\\\u001bP+q2531\u001b\\\u001bP+q2638\u001b\\\u001b[?25l\u001b[30;93H^[\u001b[15;9H\u001b[30;95HP\u001b[15;9H\u001b[30;96H1\u001b[15;9H\u001b[30;97H+\u001b[15;9H\u001b[30;98Hr\u001b[15;9H\u001b[30;93H      \u001b[15;9H\u001bP+q6b62\u001b\\\u001bP+q6b49\u001b\\\u001bP+q6b44\u001b\\"]
[0.000, "o", "\u001b[30;93H^[\u001b[15;9H\u001b[30;95HP\u001b[15;9H\u001b[30;96H1\u001b[15;9H\u001b[30;97H+\u001b[15;9H\u001b[30;98Hr\u001b[15;9H\u001b[30;99H6\u001b[15;9H\u001b[30;100HB\u001b[15;9H\u001b[30;101H3\u001b[15;9H\u001b[30;93H         \u001b[15;9H\u001bP+q6b68\u001b\\"]
[0.000, "o", "\u001bP+q4037\u001b\\"]
[0.000, "o", "\u001bP+q6b50\u001b\\"]
[0.000, "o", "\u001b[30;93H^[\u001b[15;9H\u001b[30;95HP\u001b[15;9H\u001b[30;96H1\u001b[15;9H\u001b[30;97H+\u001b[15;9H\u001b[30;98Hr\u001b[15;9H\u001b[30;99H4\u001b[15;9H\u001b[30;100H6\u001b[15;9H\u001b[30;101H3\u001b[15;9H\u001b[30;102H1\u001b[15;9H\u001b[30;93H[P1+r4631=\u001b[15;9H\u001b[30;93H          \u001b[15;9H\u001bP+q6b4e\u001b\\"]
[0.000, "o", "\u001b[?25h"]
[0.014, "o", "\u001bP+q4b31\u001b\\\u001bP+q4b33\u001b\\\u001bP+q4b34\u001b\\\u001bP+q4b35\u001b\\\u001bP+q6b42\u001b\\\u001b[?25l\u001b[30;93H^[\u001b[15;9H\u001b[30;95HP\u001b[15;9H\u001b[30;96H1\u001b[15;9H\u001b[30;97H+\u001b[15;9H\u001b[30;98Hr\u001b[15;9H\u001b[30;99H6\u001b[15;9H\u001b[30;100HB\u001b[15;9H\u001b[30;93H        \u001b[15;9H\u001bP+q5053\u001b\\\u001bP+q5045\u001b\\"]
[0.000, "o", "\u001b[30;93H5\u001b[15;9H\u001b[30;94H0\u001b[15;9H\u001b[30;95H=\u001b[15;9H\u001b[30;96H1\u001b[15;9H\u001b[30;97HB\u001b[15;9H\u001b[30;98H5\u001b[15;9H\u001b[30;99HB\u001b[15;9H\u001b[30;100H3\u001b[15;9H\u001b[30;101H5\u001b[15;9H\u001b[30;102H7\u001b[15;9H"]
[0.000, "o", "\u001b[30;93H          \u001b[15;9H\u001b[?25h"]
[1.513, "o", "\u001b[?25l\u001b[30;93Hx\u001b[15;9H\u001b[30;93H \u001b[15;9H\u001b[30;93Hdl\u001b[15;9H"]
[0.002, "o", "\u001b[30;93H  \u001b[15;9H\b \u001b[36m10.10.10.13\u001b[m\u001b[35m:\u001b[m \u001b[35m{\u001b[m \u001b[36mpg_seq\u001b[m\u001b[35m:\u001b[m \u001b[31m3\u001b[m, \u001b[36mpg_role\u001b[m\u001b[35m:\u001b[m replica, \u001b[36mpg_offline_query\u001b[m\u001b[35m:\u001b[m \u001b[31mtrue\u001b[m \u001b[35m}\u001b[m\u001b[34m # replica with offline acces\u001b[m\u001b[15;107H\u001b[K\u001b[15;9H\u001b[?25h"]
[0.298, "o", "\u001b[?25l\u001b[30;93Hl\u001b[15;9H"]
[0.000, "o", "\u001b[30;93H \u001b[15;10H\u001b[30;106H10\u001b[15;10H\u001b[?25h"]
[0.189, "o", "\u001b[?25l\u001b[30;93Hl\u001b[15;10H"]
[0.000, "o", "\u001b[30;93H \u001b[15;11H\u001b[30;107H1\u001b[15;11H\u001b[?25h"]
[0.202, "o", "\u001b[?25l\u001b[30;93H^[\u001b[15;11H"]
[0.100, "o", "\u001b[30;93H  \u001b[15;11H\u001b[30;93H^[\u001b[15;11H\u0007\u001b[30;93H  \u001b[15;11H\u001b[?25h"]
[0.268, "o", "\u001b[?25l\u001b[30;93H:\u001b[15;11H\u001b[30;1H\u001b[K\u001b[30;1H:\u001b[?25h"]
[0.279, "o", "w"]
[0.043, "o", "q"]
[0.145, "o", "\r"]
[0.000, "o", "\u001b[?25l\u001b[?2004l\u001b[>4;m"]
[0.000, "o", "\"pigsty.yml\""]
[0.003, "o", " 180L, 9815B written"]
[0.000, "o", "\r\u001b[23;2t\u001b[23;1t\r\r\n\u001b[?1004l\u001b[?2004l\u001b[?1l\u001b>\u001b[?1049l\u001b[23;0;0t\u001b[?25h\u001b[>4;m"]
[0.002, "o", "\u001b[?2004h\u001b]0;vonng@vonng-aimax: ~/pigsty\u0007\u001b[01;32mvonng@vonng-aimax\u001b[00m:\u001b[01;34m~/pigsty\u001b[00m$ "]
[2.103, "o", "b"]
[0.165, "o", "i"]
[0.116, "o", "n"]
[0.021, "o", "/"]
[0.488, "o", "n"]
[0.044, "o", "o"]
[0.090, "o", "d"]
[0.219, "o", "e"]
[0.066, "o", "-"]
[0.199, "o", "a"]
[0.045, "o", "d"]
[0.181, "o", "d"]
[0.139, "o", " "]
[0.311, "o", "1"]
[0.121, "o", "0"]
[0.444, "o", "\b\u001b[K"]
[0.120, "o", "\b\u001b[K"]
[0.886, "o", "1"]
[0.064, "o", "0"]
[0.255, "o", "."]
[0.088, "o", "1"]
[0.089, "o", "0"]
[0.182, "o", "."]
[0.138, "o", "1"]
[0.069, "o", "0"]
[0.207, "o", "."]
[0.238, "o", "1"]
[0.116, "o", "3"]
[0.423, "o", "\r\n\u001b[?2004l\r"]
[0.004, "o", "\u001b[0;35m[EXECUTE] ===========================================\u001b[0m\r\n[\u001b[0;33mWARN\u001b[0m] \u001b[0;33minit node  10.10.10.13  for pigsty\u001b[0m\r\n\u001b[0;34m$ ./node.yml -l '10.10.10.13'\u001b[0m\r\n"]
[0.268, "o", "\r\nPLAY [NODE] ************************************************************************************************************\r\n"]
[0.014, "o", "\r\nTASK [node_id : get node fact] *****************************************************************************************\r\n"]
[0.187, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : set node fact] *****************************************************************************************\r\n"]
[0.020, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [node_id : fill empty nodename with hostname] *********************************************************************\r\n"]
[0.017, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [node_id : build node identity] ***********************************************************************************\r\n"]
[0.021, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node_id : load roles/node_id/vars/u24.x86_64.yml] ****************************************************************\r\n"]
[0.017, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : fallback to u24.x86_64.yml if u24.x86_64.yml not exists] ***********************************************\r\n"]
[0.008, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : print node identity] ***********************************************************************************\r\n"]
[0.018, "o", "\u001b[0;32mok: [10.10.10.13] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"nodename: pg-test-3, node_cluster: pg-test, spec: c4m8, os: ubuntu.24.x86_64 u24:deb,   [PGSQL: pg-test] [REDIS: redis-test]    \"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : set hostname to nodename] *********************************************************************************\r\n"]
[1.129, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : wipe pigsty dns entries] **********************************************************************************\r\n"]
[1.159, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : write static etc hosts entry] *****************************************************************************\r\n"]
[1.126, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item=${admin_ip} i.pigsty)\u001b[0m\r\n"]
[1.111, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item=${admin_ip} i.pigsty sss.pigsty)\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : exchange nodename between nodes] **************************************************************************\r\n"]
[0.017, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=['pg-test-3', '10.10.10.13']) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : get existing etc resolv] **********************************************************************************\r\n"]
[1.124, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : generate etc resolv conf] *********************************************************************************\r\n"]
[2.373, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : set node selinux mode] ************************************************************************************\r\n"]
[1.130, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : setup node firewall] **************************************************************************************\r\n"]
[1.916, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : create node pki dir] **************************************************************************************\r\n"]
[1.121, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : add ca.crt to node] ***************************************************************************************\r\n"]
[2.265, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : trust ca.crt on node] *************************************************************************************\r\n"]
[1.573, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : remove and backup existing repo file] *********************************************************************\r\n"]
[1.128, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : add upstream repo file to nodes] **************************************************************************\r\n"]
[2.325, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item=local)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node : make node local repo cache] *******************************************************************************\r\n"]
[1.203, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : supress deb auto start with policy-rc.d] ******************************************************************\r\n"]
[2.262, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : install default node packages] ****************************************************************************\r\n"]
[3.593, "o", "\u001b[0;32mok: [10.10.10.13] => (item=lz4,unzip,bzip2,pv,jq,git,ncdu,make,patch,bash,lsof,wget,uuid,tuned,nvme-cli,numactl,sysstat,iotop,htop,rsync)\u001b[0m\r\n"]
[3.418, "o", "\u001b[0;32mok: [10.10.10.13] => (item=python3,socat,lrzsz,net-tools,ipvsadm,telnet,ca-certificates,openssl,keepalived,etcd,haproxy,chrony,pig)\u001b[0m\r\n"]
[3.399, "o", "\u001b[0;32mok: [10.10.10.13] => (item=zlib1g,acl,dnsutils,libreadline-dev,vim-tiny,node-exporter,openssh-server,openssh-client,vector)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node : install node packages (latest)] ***************************************************************************\r\n"]
[3.421, "o", "\u001b[0;32mok: [10.10.10.13] => (item=openssh-server)\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : install keepalived if enabled] ****************************************************************************\r\n"]
[0.017, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=keepalived) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=keepalived-exporter) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : disable node numa] ****************************************************************************************\r\n"]
[0.005, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : disable node swap] ****************************************************************************************\r\n"]
[0.012, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : unmount node swap fs] *************************************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=swap) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=none) \u001b[0m\r\n"]
[0.000, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : setup node static network] ********************************************************************************\r\n"]
[1.080, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : configure disk prefetch] **********************************************************************************\r\n"]
[0.015, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : enable kernel module] *************************************************************************************\r\n"]
[1.156, "o", "\u001b[0;32mok: [10.10.10.13] => (item=softdog)\u001b[0m\r\n"]
[1.111, "o", "\u001b[0;32mok: [10.10.10.13] => (item=ip_vs)\u001b[0m\r\n"]
[1.112, "o", "\u001b[0;32mok: [10.10.10.13] => (item=ip_vs_rr)\u001b[0m\r\n"]
[1.112, "o", "\u001b[0;32mok: [10.10.10.13] => (item=ip_vs_wrr)\u001b[0m\r\n"]
[1.108, "o", "\u001b[0;32mok: [10.10.10.13] => (item=ip_vs_sh)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node : enable kernel module on system boot] **********************************************************************\r\n"]
[2.269, "o", "\u001b[0;32mok: [10.10.10.13] => (item=softdog)\u001b[0m\r\n"]
[2.264, "o", "\u001b[0;32mok: [10.10.10.13] => (item=ip_vs)\u001b[0m\r\n"]
[2.256, "o", "\u001b[0;32mok: [10.10.10.13] => (item=ip_vs_rr)\u001b[0m\r\n"]
[2.258, "o", "\u001b[0;32mok: [10.10.10.13] => (item=ip_vs_wrr)\u001b[0m\r\n"]
[2.253, "o", "\u001b[0;32mok: [10.10.10.13] => (item=ip_vs_sh)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node : create tuned profile dir] *********************************************************************************\r\n"]
[1.129, "o", "\u001b[0;32mok: [10.10.10.13] => (item=oltp)\u001b[0m\r\n"]
[1.112, "o", "\u001b[0;32mok: [10.10.10.13] => (item=olap)\u001b[0m\r\n"]
[1.112, "o", "\u001b[0;32mok: [10.10.10.13] => (item=crit)\u001b[0m\r\n"]
[1.118, "o", "\u001b[0;32mok: [10.10.10.13] => (item=tiny)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node : render tuned profiles] ************************************************************************************\r\n"]
[2.297, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item=oltp)\u001b[0m\r\n"]
[2.283, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item=olap)\u001b[0m\r\n"]
[2.270, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item=crit)\u001b[0m\r\n"]
[2.270, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item=tiny)\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : render hugepage sysctl parameter] *************************************************************************\r\n"]
[2.279, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : activate tuned profile] ***********************************************************************************\r\n"]
[3.209, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : change sysctl parameter] **********************************************************************************\r\n"]
[0.007, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [node : write node etc profile] ***********************************************************************************\r\n"]
[2.265, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : write node aliases] ***************************************************************************************\r\n"]
[0.016, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : write node pip config] ************************************************************************************\r\n"]
[2.272, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : set pam ulimit] *******************************************************************************************\r\n"]
[2.268, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node : assure node data dir exists] ******************************************************************************\r\n"]
[1.120, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : create os user group admin] *******************************************************************************\r\n"]
[1.156, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : create os user admin] *************************************************************************************\r\n"]
[1.205, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node : grant current admin user admin group] *********************************************************************\r\n"]
[1.143, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : grant admin user sudo privilege] **************************************************************************\r\n"]
[2.263, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : touch admin user ssh config] ******************************************************************************\r\n"]
[2.255, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : set ssh config no host checking] **************************************************************************\r\n"]
[1.115, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : fetch admin public keys] **********************************************************************************\r\n"]
[1.121, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : exchange all admin ssh keys] ******************************************************************************\r\n"]
[1.218, "o", "\u001b[0;32mok: [10.10.10.13] => (item=['ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDY5sdLFxr54u3k/o9gWyQd/UCQvS+ZYXbp0EVg2L9b+JDGG52C86hRKv50LyutMZMFgpAHkgp3G5q3mLE7rYoFiS/IvjHQbXV9axgLFWX1LDTAc89wEzJJNsoERIwMWi4+PiNInQa3U1ECdrpk/k1YLqb1LD+cw1z/tIB3badwuU3rHfXhQF1nmQZmAoEMlNzcil1b+jGaqR0t4pRi4/MMawNew1K3bLJSI/n8yBeD+tw6W28wX9Ai2nc5gYNyBgxzucDtdMI93KJiRxgVt8kSW5fOBha9I3PkJRoQusWfJZN8reqXop+h7DCfURKXzee4pe9VtlQSUrvfgX6/2fWBLH9ALgTWs2j/PvJPMjkq2N2yV4HhLOYsz2g5C+dvj2K703z+k1g6T4QZRHVNHh38ew1San+A++NSBJVjkoU0f6xNhTzBAjXehLj1ZeMiSbV0r6JapuUBQXUDH2BImlRX6iEkawIYQEu00Xsfk7qMFYMj9AhZV4To+EornqO/Aa8= ansible-generated on pg-test-3', '10.10.10.13'])\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : add admin public keys] ************************************************************************************\r\n"]
[0.008, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : add current user public keys] *****************************************************************************\r\n"]
[1.175, "o", "\u001b[0;32mok: [10.10.10.13] => (item=/home/vonng/.ssh/id_rsa.pub)\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : setup node timezone] **************************************************************************************\r\n"]
[0.009, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : install chrony package] ***********************************************************************************\r\n"]
[3.421, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : generate etc chrony conf] *********************************************************************************\r\n"]
[2.276, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : launch ntpd service] **************************************************************************************\r\n"]
[1.352, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : append etc crontab] ***************************************************************************************\r\n"]
[0.019, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=00 01 * * 1 postgres /pg/bin/pg-backup full) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=00 01 * * 2,3,4,5,6,7 postgres /pg/bin/pg-backup) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : overwrite etc crontab] ************************************************************************************\r\n"]
[2.274, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : check vip identity] ***************************************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : render node vip conf keepalived.conf] *********************************************************************\r\n"]
[0.013, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : launch keepalived service unit] ***************************************************************************\r\n"]
[0.012, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node : reload keepalived service unit] ***************************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [haproxy : install haproxy] ***************************************************************************************\r\n"]
[3.416, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [haproxy : create haproxy config dir] *****************************************************************************\r\n"]
[1.115, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [haproxy : create haproxy environment file] ***********************************************************************\r\n"]
[1.130, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [haproxy : create haproxy systemd service] ************************************************************************\r\n"]
[2.283, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [haproxy : wipe haproxy config dir] *******************************************************************************\r\n"]
[0.015, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [haproxy : render haproxy default config] *************************************************************************\r\n"]
[2.271, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [haproxy : render haproxy service config] *************************************************************************\r\n"]
[0.006, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [haproxy : setup selinux for haproxy] *****************************************************************************\r\n"]
[1.123, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [haproxy : launch haproxy systemd service] ************************************************************************\r\n"]
[1.899, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [haproxy : wait for haproxy service online] ***********************************************************************\r\n"]
[1.174, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [haproxy : check haproxy config before reload] ********************************************************************\r\n"]
[1.164, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [haproxy : reload haproxy] ****************************************************************************************\r\n"]
[1.471, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : create nginx config dir for haproxy] **************************************************************\r\n"]
[0.595, "o", "\u001b[0;32mok: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node_monitor : register haproxy upstream to nginx] ***************************************************************\r\n"]
[0.305, "o", "\u001b[0;33mchanged: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node_monitor : register haproxy url location to nginx] ***********************************************************\r\n"]
[0.300, "o", "\u001b[0;33mchanged: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node_monitor : reload nginx to finish haproxy register] **********************************************************\r\n"]
[0.421, "o", "\u001b[0;33mchanged: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node_monitor : render node vip dns name] *************************************************************************\r\n"]
[0.016, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=10.10.10.10) \u001b[0m\r\n"]
[0.000, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : activate node vip dns name] ***********************************************************************\r\n"]
[0.017, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=10.10.10.10) \u001b[0m\r\n"]
[0.000, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : config node_exporter systemd unit] ****************************************************************\r\n"]
[2.262, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : config default node_exporter options] *************************************************************\r\n"]
[2.260, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : launch node_exporter systemd service] *************************************************************\r\n"]
[1.510, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : wait for node_exporter service online] ************************************************************\r\n"]
[1.131, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : config keepalived_exporter systemd unit] **********************************************************\r\n"]
[0.013, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [node_monitor : config default keepalived_exporter options] *******************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : launch keepalived_exporter systemd service] *******************************************************\r\n"]
[0.012, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : wait for keepalived_exporter service online] ******************************************************\r\n"]
[0.013, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : register node as victoria target] *****************************************************************\r\n"]
[0.306, "o", "\u001b[0;33mchanged: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node_monitor : register node as ping target] *********************************************************************\r\n"]
[0.303, "o", "\u001b[0;33mchanged: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : register node vip as ping target] *****************************************************************\r\n"]
[0.018, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=10.10.10.10) \u001b[0m\r\n"]
[0.000, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : install vector package] ***************************************************************************\r\n"]
[3.419, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : stop vector service] ******************************************************************************\r\n"]
[0.015, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : remove vector data] *******************************************************************************\r\n"]
[0.016, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=/data/vector) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=/etc/vector) \u001b[0m\r\n"]
[0.000, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : create vector data directories] *******************************************************************\r\n"]
[1.130, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/etc/vector', 'state': 'directory'})\u001b[0m\r\n"]
[1.112, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/etc/vector/examples', 'state': 'absent'})\u001b[0m\r\n"]
[1.117, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'path': '/data/vector', 'state': 'directory'})\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node_monitor : create vector config files] ***********************************************************************\r\n"]
[2.275, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'src': 'vector.svc', 'dest': '/lib/systemd/system/vector.service'})\u001b[0m\r\n"]
[2.256, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'src': 'vector.env', 'dest': '/etc/default/vector'})\u001b[0m\r\n"]
[2.259, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'src': 'vector.yaml', 'dest': '/etc/vector/vector.yaml'})\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : register node syslog to vector] *******************************************************************\r\n"]
[2.284, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : restart vector systemd service] *******************************************************************\r\n"]
[2.533, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_monitor : wait for vector service online] *******************************************************************\r\n"]
[1.135, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nPLAY RECAP *************************************************************************************************************\r\n"]
[0.000, "o", "\u001b[0;33m10.10.10.13\u001b[0m                : \u001b[0;32mok=71  \u001b[0m \u001b[0;33mchanged=34  \u001b[0m unreachable=0    failed=0    \u001b[0;36mskipped=28  \u001b[0m rescued=0    ignored=0   \r\n\r\n"]
[0.048, "o", "\u001b[0;35m[SUMMARY] ===========================================\u001b[0m\r\n[\u001b[0;32m OK \u001b[0m] \u001b[0;32minit node 10.10.10.13 for pigsty complete\u001b[0m\r\n"]
[0.001, "o", "\u001b[?2004h\u001b]0;vonng@vonng-aimax: ~/pigsty\u0007\u001b[01;32mvonng@vonng-aimax\u001b[00m:\u001b[01;34m~/pigsty\u001b[00m$ "]
[8.353, "o", "\u001b[7mbin/pgsql-add pg-test 10.10.10.13\u001b[27m"]
[0.596, "o", "\r\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[Cbin/pgsql-add pg-test 10.10.10.13"]
[0.512, "o", "\u0007"]
[0.902, "o", "\r\n\u001b[?2004l\r"]
[0.006, "o", "\u001b[0;35m[PLANNING] ===========================================\u001b[0m\r\n[\u001b[0;32m OK \u001b[0m] \u001b[0;32minit instances  10.10.10.13 to pgsql cluster 'pg-test':\u001b[0m\r\n[\u001b[0;33mWARN\u001b[0m] \u001b[0;33m  reminder: add nodes to pigsty, then install additional module 'pgsql'\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;34m[HINT]     $ bin/node-add  10.10.10.13  # run this ahead, except infra nodes\u001b[0m\r\n"]
[0.000, "o", "[\u001b[0;33mWARN\u001b[0m] \u001b[0;33m  init instances from cluster:\u001b[0m\r\n"]
[0.000, "o", "[\u001b[0;32m OK \u001b[0m] \u001b[0;32m    $ ./pgsql.yml -l '10.10.10.13,&pg-test'\u001b[0m\r\n"]
[0.000, "o", "[\u001b[0;33mWARN\u001b[0m] \u001b[0;33m  reload pg_service on existing instances:\u001b[0m\r\n"]
[0.000, "o", "[\u001b[0;32m OK \u001b[0m] \u001b[0;32m    $ ./pgsql.yml -l 'pg-test,!10.10.10.13' -t pg_service\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;35m[EXECUTE] ===========================================\u001b[0m\r\n"]
[0.000, "o", "[\u001b[0;33mWARN\u001b[0m] \u001b[0;33minit instances   10.10.10.13  of pg-test\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;34m$ ./pgsql.yml -l '10.10.10.13,&pg-test'\u001b[0m\r\n"]
[0.268, "o", "\r\nPLAY [PGSQL] ***********************************************************************************************************\r\n"]
[0.018, "o", "\r\nTASK [node_id : get node fact] *****************************************************************************************\r\n"]
[0.192, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : set node fact] *****************************************************************************************\r\n"]
[0.020, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [node_id : fill empty nodename with hostname] *********************************************************************\r\n"]
[0.017, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : build node identity] ***********************************************************************************\r\n"]
[0.021, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node_id : load roles/node_id/vars/u24.x86_64.yml] ****************************************************************\r\n"]
[0.017, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node_id : fallback to u24.x86_64.yml if u24.x86_64.yml not exists] ***********************************************\r\n"]
[0.007, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : print node identity] ***********************************************************************************\r\n"]
[0.018, "o", "\u001b[0;32mok: [10.10.10.13] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"nodename: pg-test-3, node_cluster: pg-test, spec: c4m8, os: ubuntu.24.x86_64 u24:deb,   [PGSQL: pg-test] [REDIS: redis-test]    \"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_id : get pgsql identity] **************************************************************************************\r\n"]
[0.053, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_id : build pgsql identity] ************************************************************************************\r\n"]
[0.052, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [pg_id : print pgsql identity] ************************************************************************************\r\n"]
[0.042, "o", "\u001b[0;32mok: [10.10.10.13] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"  [replica] pg-test-3 @ 10.10.10.13 , ins = pg-test-3 , cls = pg-test , REPLICATE PRIMARY pg-test-1 @ 10.10.10.11 -> pg-test-3  [OFFLINE]  , postgres://10.10.10.13:5432/postgres\"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : use another default pg_dbsu_uid for deb system] **********************************************************\r\n"]
[0.011, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : create os group postgres] ********************************************************************************\r\n"]
[1.156, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : create postgres dbsu] ************************************************************************************\r\n"]
[1.205, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : grant postgres dbsu sudo privilege] **********************************************************************\r\n"]
[2.341, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : config postgres dbsu ssh no host checking] ***************************************************************\r\n"]
[1.151, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : fetch postgres dbsu public keys] *************************************************************************\r\n"]
[1.121, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : exchange postgres dbsu ssh keys] *************************************************************************\r\n"]
[0.693, "o", "\u001b[0;32mok: [10.10.10.13 -> 10.10.10.11] => (item=['ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC8o38K+In0FjNEQfFBQRg7x66ojL2HjG5LY/UM6SkYv+Imlu+wFxZsdo3UX6HMMcZDOVCKFV9qbG2Yy6ie478tGSXv4HnKxaMu2QeMH/Ntz2KVm1WsTqC7ToFbSCMUiLwrEONT23Xb3BqlphxUWid2wne3Xj0vtrBzZKvTG2Lf73lZDhoXTGqJdcOdioZJnyfPnFCQa3xVCiFc70EMhzj0EqbPw0KNw393mpCCroPcF5lSbkZPsUr8Acacwc2DUS4Xeg1EwzkkvdThCmc+lcMkyop10Wgu/GlUfHVnukU58p+wyUlzrsk40qS8rkzq/GlYUlYQv43JseXhkl/jx+4pr/cUyu88tvM3CUzn6X6m3eANVbPYd+YXfVdUpOZCK03Jxb6pV8fz+c/6SODpk7uUNP9VB5rgA+O4WItkI098An/rt2Kis5YtiNxxWKfmIJ3ffWQXzO9qbWqf1cCdHAXvVmqrYP8ZsFAn4cATuDzYnUp89LbJdgwp+wNcgG4wVBk= ansible-generated on pg-test-3', '10.10.10.11'])\u001b[0m\r\n"]
[0.626, "o", "\u001b[0;32mok: [10.10.10.13 -> 10.10.10.12] => (item=['ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC8o38K+In0FjNEQfFBQRg7x66ojL2HjG5LY/UM6SkYv+Imlu+wFxZsdo3UX6HMMcZDOVCKFV9qbG2Yy6ie478tGSXv4HnKxaMu2QeMH/Ntz2KVm1WsTqC7ToFbSCMUiLwrEONT23Xb3BqlphxUWid2wne3Xj0vtrBzZKvTG2Lf73lZDhoXTGqJdcOdioZJnyfPnFCQa3xVCiFc70EMhzj0EqbPw0KNw393mpCCroPcF5lSbkZPsUr8Acacwc2DUS4Xeg1EwzkkvdThCmc+lcMkyop10Wgu/GlUfHVnukU58p+wyUlzrsk40qS8rkzq/GlYUlYQv43JseXhkl/jx+4pr/cUyu88tvM3CUzn6X6m3eANVbPYd+YXfVdUpOZCK03Jxb6pV8fz+c/6SODpk7uUNP9VB5rgA+O4WItkI098An/rt2Kis5YtiNxxWKfmIJ3ffWQXzO9qbWqf1cCdHAXvVmqrYP8ZsFAn4cATuDzYnUp89LbJdgwp+wNcgG4wVBk= ansible-generated on pg-test-3', '10.10.10.12'])\u001b[0m\r\n"]
[1.156, "o", "\u001b[0;32mok: [10.10.10.13] => (item=['ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC8o38K+In0FjNEQfFBQRg7x66ojL2HjG5LY/UM6SkYv+Imlu+wFxZsdo3UX6HMMcZDOVCKFV9qbG2Yy6ie478tGSXv4HnKxaMu2QeMH/Ntz2KVm1WsTqC7ToFbSCMUiLwrEONT23Xb3BqlphxUWid2wne3Xj0vtrBzZKvTG2Lf73lZDhoXTGqJdcOdioZJnyfPnFCQa3xVCiFc70EMhzj0EqbPw0KNw393mpCCroPcF5lSbkZPsUr8Acacwc2DUS4Xeg1EwzkkvdThCmc+lcMkyop10Wgu/GlUfHVnukU58p+wyUlzrsk40qS8rkzq/GlYUlYQv43JseXhkl/jx+4pr/cUyu88tvM3CUzn6X6m3eANVbPYd+YXfVdUpOZCK03Jxb6pV8fz+c/6SODpk7uUNP9VB5rgA+O4WItkI098An/rt2Kis5YtiNxxWKfmIJ3ffWQXzO9qbWqf1cCdHAXvVmqrYP8ZsFAn4cATuDzYnUp89LbJdgwp+wNcgG4wVBk= ansible-generated on pg-test-3', '10.10.10.13'])\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : lookup pg packages & extensions names] *******************************************************************\r\n"]
[0.022, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : postgres pre-install setup] ******************************************************************************\r\n"]
[0.015, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : install postgres packages] *******************************************************************************\r\n"]
[7.833, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item=postgresql-18,postgresql-client-18,postgresql-plpython3-18,postgresql-plperl-18,postgresql-pltcl-18,postgresql-18-repack,postgresql-18-wal2json,postgresql-18-pgvector,patroni,python3-etcd,pgbouncer,pgbackrest,pg-exporter,pgbackrest-exporter,vip-manager)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : install postgres extensions] *****************************************************************************\r\n"]
[0.018, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : postgres post-install cleanup] ***************************************************************************\r\n"]
[1.727, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : link postgres home] **************************************************************************************\r\n"]
[1.126, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : setup pgsql path] ****************************************************************************************\r\n"]
[2.319, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : create pgsql directories] ********************************************************************************\r\n"]
[1.143, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/data/postgres', 'mode': '0700'})\u001b[0m\r\n"]
[1.118, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/data/backups', 'mode': '0700'})\u001b[0m\r\n"]
[1.111, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/data/postgres/pg-test-18', 'mode': '0700'})\u001b[0m\r\n"]
[1.116, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/data/postgres/pg-test-18/bin', 'mode': '0700'})\u001b[0m\r\n"]
[1.114, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/data/postgres/pg-test-18/log', 'mode': '0750'})\u001b[0m\r\n"]
[1.116, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/data/postgres/pg-test-18/tmp', 'mode': '0700'})\u001b[0m\r\n"]
[1.117, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/data/postgres/pg-test-18/cert', 'mode': '0700'})\u001b[0m\r\n"]
[1.116, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/data/postgres/pg-test-18/conf', 'mode': '0700'})\u001b[0m\r\n"]
[1.121, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'path': '/data/postgres/pg-test-18/data', 'mode': '0700'})\u001b[0m\r\n"]
[1.116, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/data/postgres/pg-test-18/spool', 'mode': '0700'})\u001b[0m\r\n"]
[1.115, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/data/backups/pg-test-18/backup', 'mode': '0700'})\u001b[0m\r\n"]
[1.113, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/var/run/postgresql', 'mode': '0755'})\u001b[0m\r\n"]
[1.114, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/etc/patroni', 'mode': '0700'})\u001b[0m\r\n"]
[1.114, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'path': '/etc/pgbackrest', 'mode': '0700'})\u001b[0m\r\n"]
[1.117, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'path': '/etc/pgbouncer', 'mode': '0700'})\u001b[0m\r\n"]
[1.114, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'path': '/etc/pg_exporter', 'mode': '0700'})\u001b[0m\r\n"]
[0.003, "o", "\r\nTASK [pgsql : link pgsql directories] **********************************************************************************\r\n"]
[1.123, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'src': '/data/backups/pg-test-18/backup', 'dest': '/data/postgres/pg-test-18/backup'})\u001b[0m\r\n"]
[1.116, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'src': '/data/postgres/pg-test-18', 'dest': '/pg'})\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : create log directories] **********************************************************************************\r\n"]
[1.124, "o", "\u001b[0;32mok: [10.10.10.13] => (item=/pg/log/postgres)\u001b[0m\r\n"]
[1.120, "o", "\u001b[0;32mok: [10.10.10.13] => (item=/pg/log/patroni)\u001b[0m\r\n"]
[1.114, "o", "\u001b[0;32mok: [10.10.10.13] => (item=/pg/log/pgbouncer)\u001b[0m\r\n"]
[1.110, "o", "\u001b[0;32mok: [10.10.10.13] => (item=/pg/log/pgbackrest)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : create tmpfiles.d for /var/run/postgresql] ***************************************************************\r\n"]
[2.266, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : copy /pg/bin scripts] ************************************************************************************\r\n"]
[35.659, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : copy pgsql/psql alias] ***********************************************************************************\r\n"]
[2.279, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'pg-alias', 'dest': '/etc/profile.d/pg-alias.sh', 'owner': 'root', 'group': 'root', 'mode': '0644'})\u001b[0m\r\n"]
[2.257, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'src': 'psqlrc', 'dest': '/var/lib/pgsql/.psqlrc', 'owner': 'postgres', 'group': 'postgres', 'mode': '0600'})\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : create pgsql dummy file] *********************************************************************************\r\n"]
[1.133, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : create etcd user for pg cluster] *************************************************************************\r\n"]
[0.018, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : get pgsql fs size] ***************************************************************************************\r\n"]
[1.129, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : print postgres node spec] ********************************************************************************\r\n"]
[0.020, "o", "\u001b[0;32mok: [10.10.10.13] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"Node=4c8g oltp, Memory=1900MB of 7942MB , Disk=128GB SSD @ /data/postgres, PG Conf=oltp.yml\"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : config patroni] ******************************************************************************************\r\n"]
[2.337, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'oltp.yml', 'dest': '/pg/conf/pg-test-3.yml', 'owner': 'postgres', 'group': 'postgres', 'mode': '0640'})\u001b[0m\r\n"]
[2.281, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'patroni.svc', 'dest': '/lib/systemd/system/patroni.service', 'owner': 'root', 'group': 'root', 'mode': '0644'})\u001b[0m\r\n"]
[2.264, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'src': 'postgres.svc', 'dest': '/lib/systemd/system/postgres.service', 'owner': 'root', 'group': 'root', 'mode': '0644'})\u001b[0m\r\n"]
[0.003, "o", "\r\nTASK [pgsql : config pgbackrest for patroni] ***************************************************************************\r\n"]
[2.289, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : link patroni config] *************************************************************************************\r\n"]
[1.130, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : create pgsodium.key] *************************************************************************************\r\n"]
[2.280, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : create pgsodium.getkey_script] ***************************************************************************\r\n"]
[2.277, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : generate pg private key] *********************************************************************************\r\n"]
[0.838, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : generate pg server signing request] **********************************************************************\r\n"]
[0.372, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : issue pg server certificate] *****************************************************************************\r\n"]
[0.414, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : copy pg server certificates] *****************************************************************************\r\n"]
[2.277, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'src': 'files/pki/ca/ca.crt', 'dest': '/pg/cert/ca.crt', 'owner': 'postgres', 'mode': '0644'})\u001b[0m\r\n"]
[2.262, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'src': 'files/pki/pgsql/pg-test-3.crt', 'dest': '/pg/cert/server.crt', 'owner': 'postgres', 'group': 'postgres', 'mode': '0644'})\u001b[0m\r\n"]
[2.257, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'src': 'files/pki/pgsql/pg-test.key', 'dest': '/pg/cert/server.key', 'owner': 'postgres', 'group': 'postgres', 'mode': '0600'})\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : grant postgres dbsu watchdog owner] **********************************************************************\r\n"]
[1.127, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : launch patroni primary] **********************************************************************************\r\n"]
[0.016, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : wait for patroni primary] ********************************************************************************\r\n"]
[0.012, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : check postgres primary ready] ****************************************************************************\r\n"]
[0.015, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : remove postgres backup conf] *****************************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=/pg/data/postgresql.conf.backup) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=/pg/data/postgresql.base.conf.backup) \u001b[0m\r\n"]
[0.002, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=/pg/data/pg_hba.conf.backup) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=/pg/data/pg_ident.conf.backup) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [pgsql : render postgres hba rules] *******************************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [pgsql : copy extra files to postgres primary] ********************************************************************\r\n"]
[0.007, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [pgsql : overwrite postgres primary parameters] *******************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : restart postgres via patroni] ****************************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [pgsql : wait for postgres primary] *******************************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : check postgres primary ready] ****************************************************************************\r\n"]
[0.013, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : render init sql and scripts] *****************************************************************************\r\n"]
[0.017, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item={'src': 'pg-init-roles.sql', 'dest': '/pg/tmp/pg-init-roles.sql', 'mode': '0640'}) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item={'src': 'pg-init-template.sql', 'dest': '/pg/tmp/pg-init-template.sql', 'mode': '0640'}) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item={'src': 'pg-init', 'dest': '/pg/bin/pg-init', 'owner': 'root', 'mode': '0740'}) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [pgsql : init postgres cluster] ***********************************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : check postgres primary inited] ***************************************************************************\r\n"]
[0.013, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : add dbsu password to pgpass if exists] *******************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [pgsql : add system user to pgpass] *******************************************************************************\r\n"]
[1.140, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item=None)\u001b[0m\r\n"]
[1.123, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item=None)\u001b[0m\r\n"]
[1.124, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item=None)\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : check replication connectivity] **************************************************************************\r\n"]
[1.149, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : launch patroni replica] **********************************************************************************\r\n"]
[1.945, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : wait for patroni replica] ********************************************************************************\r\n"]
[5.178, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : wait for postgres replica] *******************************************************************************\r\n"]
[1.137, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : check postgres replica ready] ****************************************************************************\r\n"]
[1.135, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : copy extra files to pgdata] ******************************************************************************\r\n"]
[0.007, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : render postgres hba rules] *******************************************************************************\r\n"]
[2.318, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : overwrite postgres parameters] ***************************************************************************\r\n"]
[2.283, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : reload postgres config] **********************************************************************************\r\n"]
[1.130, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : reload patroni config] ***********************************************************************************\r\n"]
[1.374, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : pause patroni] *******************************************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : stop patroni replicas] ***********************************************************************************\r\n"]
[0.013, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [pgsql : stop patroni primary] ************************************************************************************\r\n"]
[0.012, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : launch raw postgres primary] *****************************************************************************\r\n"]
[0.013, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : launch raw postgres replicas] ****************************************************************************\r\n"]
[0.013, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : wait for raw postgres] ***********************************************************************************\r\n"]
[0.013, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : include_tasks] *******************************************************************************************\r\n"]
[0.018, "o", "\u001b[0;36mincluded: /data/pgsty/pigsty/roles/pgsql/tasks/user.yml for 10.10.10.13 => (item={'name': 'test', 'password': 'test', 'pgbouncer': True, 'roles': ['dbrole_admin']})\u001b[0m\r\n"]
[0.011, "o", "\r\nTASK [pgsql : validate user name test] *********************************************************************************\r\n"]
[0.011, "o", "\u001b[0;32mok: [10.10.10.13] => {\u001b[0m\r\n\u001b[0;32m    \"changed\": false,\u001b[0m\r\n\u001b[0;32m    \"msg\": \"All assertions passed\"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : drop user test] ******************************************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : prepare sql for user test] *******************************************************************************\r\n"]
[0.009, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : create postgres user test] *******************************************************************************\r\n"]
[0.015, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : write plain biz user password to pgpass for citus cluster] ***********************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : include_tasks] *******************************************************************************************\r\n"]
[0.020, "o", "\u001b[0;36mincluded: /data/pgsty/pigsty/roles/pgsql/tasks/database.yml for 10.10.10.13 => (item={'name': 'test'})\u001b[0m\r\n"]
[0.010, "o", "\r\nTASK [pgsql : drop database test] **************************************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : render sql for database test] ****************************************************************************\r\n"]
[0.009, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : copy baseline for database test] *************************************************************************\r\n"]
[0.007, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : create database test] ************************************************************************************\r\n"]
[0.015, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : provision database test] *********************************************************************************\r\n"]
[0.016, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : load database test baseline] *****************************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : create pgbackrest dir] ***********************************************************************************\r\n"]
[1.128, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : config pgbackrest] ***************************************************************************************\r\n"]
[2.296, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : create pgbackrest repo stanza] ***************************************************************************\r\n"]
[0.017, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : create pgbackrest initial backup] ************************************************************************\r\n"]
[0.014, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : create pgbouncer dir] ************************************************************************************\r\n"]
[1.124, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item=/etc/pgbouncer)\u001b[0m\r\n"]
[1.115, "o", "\u001b[0;32mok: [10.10.10.13] => (item=/pg/log/pgbouncer)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : config pgbouncer] ****************************************************************************************\r\n"]
[2.295, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'pgbouncer.svc', 'dest': '/lib/systemd/system/pgbouncer.service', 'owner': 'root', 'group': 'root', 'mode': '0644'})\u001b[0m\r\n"]
[2.266, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'pgbouncer.ini', 'dest': '/etc/pgbouncer/pgbouncer.ini', 'owner': 'postgres', 'group': 'postgres', 'mode': '0640'})\u001b[0m\r\n"]
[2.269, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'pgbouncer.database', 'dest': '/etc/pgbouncer/database.txt', 'owner': 'postgres', 'group': 'postgres', 'mode': '0600'})\u001b[0m\r\n"]
[2.267, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'pgbouncer.useropts', 'dest': '/etc/pgbouncer/useropts.txt', 'owner': 'postgres', 'group': 'postgres', 'mode': '0600'})\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : config pgbouncer hba rules] ******************************************************************************\r\n"]
[2.297, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : create pgbouncer userlist] *******************************************************************************\r\n"]
[1.194, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : launch pgbouncer systemd service] ************************************************************************\r\n"]
[1.828, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : wait for pgbouncer service online] ***********************************************************************\r\n"]
[1.131, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : reload pgbouncer] ****************************************************************************************\r\n"]
[1.378, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : check pgbouncer ready] ***********************************************************************************\r\n"]
[1.131, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : config vip-manager] **************************************************************************************\r\n"]
[2.291, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'vip-manager.yml', 'dest': '/etc/default/vip-manager.yml', 'owner': 'root', 'group': 'postgres', 'mode': '0600'})\u001b[0m\r\n"]
[2.267, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'vip-manager.svc', 'dest': '/lib/systemd/system/vip-manager.service', 'owner': 'root', 'group': 'root', 'mode': '0644'})\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : launch vip-manager] **************************************************************************************\r\n"]
[1.533, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : render postgres instance dns] ****************************************************************************\r\n"]
[0.752, "o", "\u001b[0;33mchanged: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : activate postgres instance dns] **************************************************************************\r\n"]
[0.159, "o", "\u001b[0;33mchanged: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : render postgres cluster dns] *****************************************************************************\r\n"]
[0.311, "o", "\u001b[0;33mchanged: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : activate postgres cluster dns] ***************************************************************************\r\n"]
[0.160, "o", "\u001b[0;33mchanged: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : wipe existing postgres haproxy service from local haproxy] ***********************************************\r\n"]
[0.131, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : render haproxy service config on local haproxy] **********************************************************\r\n"]
[0.327, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'name': 'primary', 'port': 5433, 'dest': 'default', 'check': '/primary', 'selector': '[]'})\u001b[0m\r\n"]
[0.267, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'name': 'replica', 'port': 5434, 'dest': 'default', 'check': '/read-only', 'selector': '[]', 'backup': '[? pg_role == `primary` || pg_role == `offline` ]'})\u001b[0m\r\n"]
[0.272, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'name': 'default', 'port': 5436, 'dest': 'postgres', 'check': '/primary', 'selector': '[]'})\u001b[0m\r\n"]
[0.263, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'name': 'offline', 'port': 5438, 'dest': 'postgres', 'check': '/replica', 'selector': '[? pg_role == `offline` || pg_offline_query ]', 'backup': '[? pg_role == `replica` && !pg_offline_query]'})\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : check local haproxy config before reload] ****************************************************************\r\n"]
[0.169, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : reload local haproxy] ************************************************************************************\r\n"]
[0.458, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : wipe existing postgres service from remote haproxy] ******************************************************\r\n"]
[0.007, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : render haproxy service on remote haproxy] ****************************************************************\r\n"]
[0.007, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : check remote haproxy config before reload] ***************************************************************\r\n"]
[0.004, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [pgsql : reload remote haproxy] ***********************************************************************************\r\n"]
[0.006, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [pgsql : pgsql init done] *****************************************************************************************\r\n"]
[0.018, "o", "\u001b[0;32mok: [10.10.10.13] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"postgres://10.10.10.13/postgres | test  | test \"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_monitor : config pg_exporter] *********************************************************************************\r\n"]
[0.294, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'pg_exporter.yml', 'dest': '/etc/pg_exporter.yml', 'owner': 'postgres', 'group': 'postgres', 'mode': '0644'})\u001b[0m\r\n"]
[0.273, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'pg_exporter.env', 'dest': '/etc/default/pg_exporter', 'owner': 'postgres', 'group': 'postgres', 'mode': '0600'})\u001b[0m\r\n"]
[0.256, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'src': 'pg_exporter.svc', 'dest': '/lib/systemd/system/pg_exporter.service', 'owner': 'root', 'group': 'root', 'mode': '0644'})\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_monitor : launch pg_exporter systemd unit] ********************************************************************\r\n"]
[0.527, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [pg_monitor : wait for pg_exporter online] ************************************************************************\r\n"]
[0.137, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_monitor : config pgbouncer_exporter] **************************************************************************\r\n"]
[0.291, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'pgbouncer_exporter.yml', 'dest': '/etc/pgbouncer_exporter.yml', 'owner': 'postgres', 'group': 'postgres', 'mode': '0644'})\u001b[0m\r\n"]
[0.263, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'pgbouncer_exporter.env', 'dest': '/etc/default/pgbouncer_exporter', 'owner': 'postgres', 'group': 'postgres', 'mode': '0600'})\u001b[0m\r\n"]
[0.254, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'src': 'pgbouncer_exporter.svc', 'dest': '/lib/systemd/system/pgbouncer_exporter.service', 'owner': 'root', 'group': 'root', 'mode': '0644'})\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pg_monitor : launch pgbouncer_exporter systemd unit] *************************************************************\r\n"]
[0.513, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_monitor : wait for pgbouncer_exporter online] *****************************************************************\r\n"]
[0.133, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_monitor : config pgbackrest_exporter] *************************************************************************\r\n"]
[0.279, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'src': 'pgbackrest_exporter.env', 'dest': '/etc/default/pgbackrest_exporter', 'owner': 'postgres', 'group': 'postgres', 'mode': '0600'})\u001b[0m\r\n"]
[0.260, "o", "\u001b[0;32mok: [10.10.10.13] => (item={'src': 'pgbackrest_exporter.svc', 'dest': '/lib/systemd/system/pgbackrest_exporter.service', 'owner': 'root', 'group': 'root', 'mode': '0644'})\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pg_monitor : launch pgbackrest_exporter systemd unit] ************************************************************\r\n"]
[0.537, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_monitor : wait for pg_exporter online] ************************************************************************\r\n"]
[0.131, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pg_monitor : register postgres to victoria] **********************************************************************\r\n"]
[0.310, "o", "\u001b[0;33mchanged: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_monitor : register ssl patroni to victoria] *******************************************************************\r\n"]
[0.018, "o", "\u001b[0;36mskipping: [10.10.10.13] => (item=10.10.10.10) \u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [pg_monitor : register pg vip ping target to victoria] ************************************************************\r\n"]
[0.305, "o", "\u001b[0;33mchanged: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pg_monitor : render pgsql vector logging config] *****************************************************************\r\n"]
[0.277, "o", "\u001b[0;32mok: [10.10.10.13] => (item=postgres)\u001b[0m\r\n"]
[0.252, "o", "\u001b[0;32mok: [10.10.10.13] => (item=pgbackrest)\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pg_monitor : reload vector to consume pgsql log] *****************************************************************\r\n"]
[0.410, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_monitor : include_tasks] **************************************************************************************\r\n"]
[0.020, "o", "\u001b[0;36mincluded: /data/pgsty/pigsty/roles/pg_monitor/tasks/register_grafana.yml for 10.10.10.13 => (item={'name': 'postgres'})\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mincluded: /data/pgsty/pigsty/roles/pg_monitor/tasks/register_grafana.yml for 10.10.10.13 => (item={'name': 'test'})\u001b[0m\r\n"]
[0.011, "o", "\r\nTASK [pg_monitor : render grafana datasource for postgres] *************************************************************\r\n"]
[0.300, "o", "\u001b[0;32mok: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.004, "o", "\r\nTASK [pg_monitor : load grafana datasource postgres] *******************************************************************\r\n"]
[0.190, "o", "\u001b[0;33mchanged: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.003, "o", "\r\nTASK [pg_monitor : render grafana datasource for test] *****************************************************************\r\n"]
[0.305, "o", "\u001b[0;32mok: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.003, "o", "\r\nTASK [pg_monitor : load grafana datasource test] ***********************************************************************\r\n"]
[0.188, "o", "\u001b[0;33mchanged: [10.10.10.13 -> 10.10.10.10] => (item=10.10.10.10)\u001b[0m\r\n"]
[0.002, "o", "\r\nPLAY RECAP *************************************************************************************************************\r\n"]
[0.000, "o", "\u001b[0;33m10.10.10.13\u001b[0m                : \u001b[0;32mok=92  \u001b[0m \u001b[0;33mchanged=48  \u001b[0m unreachable=0    failed=0    \u001b[0;36mskipped=43  \u001b[0m rescued=0    ignored=0   \r\n"]
[0.000, "o", "\r\n"]
[0.057, "o", "[\u001b[0;32m OK \u001b[0m] \u001b[0;32minit pgsql instance for  10.10.10.13 of pg-test complete\u001b[0m\r\n\u001b[0;35m[EXECUTE] ===========================================\u001b[0m\r\n[\u001b[0;33mWARN\u001b[0m] \u001b[0;33mreload pgsql services on pg-test,!10.10.10.13\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;34m$ ./pgsql.yml -l 'pg-test,!10.10.10.13' -t pg_service\u001b[0m\r\n"]
[0.277, "o", "\r\nPLAY [PGSQL] ***********************************************************************************************************\r\n"]
[0.019, "o", "\r\nTASK [node_id : get node fact] *****************************************************************************************\r\n"]
[0.641, "o", "\u001b[0;33mchanged: [10.10.10.12]\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.11]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : set node fact] *****************************************************************************************\r\n"]
[0.019, "o", "\u001b[0;32mok: [10.10.10.11]\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;32mok: [10.10.10.12]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : fill empty nodename with hostname] *********************************************************************\r\n"]
[0.016, "o", "\u001b[0;36mskipping: [10.10.10.11]\u001b[0m\r\n\u001b[0;36mskipping: [10.10.10.12]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : build node identity] ***********************************************************************************\r\n"]
[0.022, "o", "\u001b[0;32mok: [10.10.10.12]\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;32mok: [10.10.10.11]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node_id : load roles/node_id/vars/u24.x86_64.yml] ****************************************************************\r\n"]
[0.017, "o", "\u001b[0;32mok: [10.10.10.12]\u001b[0m\r\n"]
[0.002, "o", "\u001b[0;32mok: [10.10.10.11]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node_id : fallback to u24.x86_64.yml if u24.x86_64.yml not exists] ***********************************************\r\n"]
[0.008, "o", "\u001b[0;36mskipping: [10.10.10.11]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.12]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : print node identity] ***********************************************************************************\r\n"]
[0.018, "o", "\u001b[0;32mok: [10.10.10.11] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"nodename: pg-test-1, node_cluster: pg-test, spec: c4m8, os: ubuntu.24.x86_64 u24:deb,   [PGSQL: pg-test] [REDIS: redis-meta]    \"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;32mok: [10.10.10.12] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"nodename: pg-test-2, node_cluster: pg-test, spec: c4m8, os: ubuntu.24.x86_64 u24:deb,   [PGSQL: pg-test] [REDIS: redis-test]    \"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_id : get pgsql identity] **************************************************************************************\r\n"]
[0.092, "o", "\u001b[0;32mok: [10.10.10.11]\u001b[0m\r\n"]
[0.003, "o", "\u001b[0;32mok: [10.10.10.12]\u001b[0m\r\n"]
[0.000, "o", "\r\nTASK [pg_id : build pgsql identity] ************************************************************************************\r\n"]
[0.079, "o", "\u001b[0;32mok: [10.10.10.11]\u001b[0m\r\n"]
[0.002, "o", "\u001b[0;32mok: [10.10.10.12]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_id : print pgsql identity] ************************************************************************************\r\n"]
[0.073, "o", "\u001b[0;32mok: [10.10.10.12] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"  [replica] pg-test-2 @ 10.10.10.12 , ins = pg-test-2 , cls = pg-test , REPLICATE PRIMARY pg-test-1 @ 10.10.10.11 -> pg-test-2   , postgres://10.10.10.12:5432/postgres\"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;32mok: [10.10.10.11] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"  [primary] pg-test-1 @ 10.10.10.11 , ins = pg-test-1 , cls = pg-test ,  CLUSTER LEADER @ pg-test-1    , postgres://10.10.10.11:5432/postgres\"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : wipe existing postgres haproxy service from local haproxy] ***********************************************\r\n"]
[0.125, "o", "\u001b[0;33mchanged: [10.10.10.11]\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.12]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : render haproxy service config on local haproxy] **********************************************************\r\n"]
[0.418, "o", "\u001b[0;33mchanged: [10.10.10.12] => (item={'name': 'primary', 'port': 5433, 'dest': 'default', 'check': '/primary', 'selector': '[]'})\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.11] => (item={'name': 'primary', 'port': 5433, 'dest': 'default', 'check': '/primary', 'selector': '[]'})\u001b[0m\r\n"]
[0.274, "o", "\u001b[0;33mchanged: [10.10.10.11] => (item={'name': 'replica', 'port': 5434, 'dest': 'default', 'check': '/read-only', 'selector': '[]', 'backup': '[? pg_role == `primary` || pg_role == `offline` ]'})\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.12] => (item={'name': 'replica', 'port': 5434, 'dest': 'default', 'check': '/read-only', 'selector': '[]', 'backup': '[? pg_role == `primary` || pg_role == `offline` ]'})\u001b[0m\r\n"]
[0.281, "o", "\u001b[0;33mchanged: [10.10.10.11] => (item={'name': 'default', 'port': 5436, 'dest': 'postgres', 'check': '/primary', 'selector': '[]'})\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.12] => (item={'name': 'default', 'port': 5436, 'dest': 'postgres', 'check': '/primary', 'selector': '[]'})\u001b[0m\r\n"]
[0.272, "o", "\u001b[0;33mchanged: [10.10.10.11] => (item={'name': 'offline', 'port': 5438, 'dest': 'postgres', 'check': '/replica', 'selector': '[? pg_role == `offline` || pg_offline_query ]', 'backup': '[? pg_role == `replica` && !pg_offline_query]'})\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.12] => (item={'name': 'offline', 'port': 5438, 'dest': 'postgres', 'check': '/replica', 'selector': '[? pg_role == `offline` || pg_offline_query ]', 'backup': '[? pg_role == `replica` && !pg_offline_query]'})\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : check local haproxy config before reload] ****************************************************************\r\n"]
[0.162, "o", "\u001b[0;33mchanged: [10.10.10.12]\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.11]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : reload local haproxy] ************************************************************************************\r\n"]
[0.536, "o", "\u001b[0;33mchanged: [10.10.10.11]\u001b[0m\r\n"]
[0.048, "o", "\u001b[0;33mchanged: [10.10.10.12]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : wipe existing postgres service from remote haproxy] ******************************************************\r\n"]
[0.005, "o", "\u001b[0;36mskipping: [10.10.10.11]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.12]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : render haproxy service on remote haproxy] ****************************************************************\r\n"]
[0.006, "o", "\u001b[0;36mskipping: [10.10.10.11]\u001b[0m\r\n"]
[0.002, "o", "\u001b[0;36mskipping: [10.10.10.12]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : check remote haproxy config before reload] ***************************************************************\r\n"]
[0.004, "o", "\u001b[0;36mskipping: [10.10.10.11]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.12]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : reload remote haproxy] ***********************************************************************************\r\n"]
[0.005, "o", "\u001b[0;36mskipping: [10.10.10.11]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.12]\u001b[0m\r\n"]
[0.003, "o", "\r\nPLAY RECAP *************************************************************************************************************\r\n"]
[0.000, "o", "\u001b[0;33m10.10.10.11\u001b[0m                : \u001b[0;32mok=12  \u001b[0m \u001b[0;33mchanged=5   \u001b[0m unreachable=0    failed=0    \u001b[0;36mskipped=6   \u001b[0m rescued=0    ignored=0   \r\n"]
[0.000, "o", "\u001b[0;33m10.10.10.12\u001b[0m                : \u001b[0;32mok=12  \u001b[0m \u001b[0;33mchanged=5   \u001b[0m unreachable=0    failed=0    \u001b[0;36mskipped=6   \u001b[0m rescued=0    ignored=0   \r\n\r\n"]
[0.058, "o", "[\u001b[0;32m OK \u001b[0m] \u001b[0;32mreload pgsql services for  10.10.10.13 of pg-test complete\u001b[0m\r\n\u001b[0;35m[SUMMARY] ===========================================\u001b[0m\r\n[\u001b[0;32m OK \u001b[0m] \u001b[0;32minit pgsql instance  10.10.10.13 of pg-test success\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;34mconn check: psql postgres://10.10.10.13/postgres\u001b[0m\r\n"]
[0.001, "o", "\u001b[?2004h"]
[0.000, "o", "\u001b]0;vonng@vonng-aimax: ~/pigsty\u0007\u001b[01;32mvonng@vonng-aimax\u001b[00m:\u001b[01;34m~/pigsty\u001b[00m$ "]
[14.937, "o", "b"]
[0.342, "o", "i"]
[0.117, "o", "n"]
[0.091, "o", "/"]
[0.193, "o", "p"]
[0.130, "o", "g"]
[0.090, "o", "s"]
[0.172, "o", "q"]
[0.022, "o", "l"]
[0.248, "o", "-"]
[0.069, "o", "s"]
[0.149, "o", "v"]
[0.221, "o", "c"]
[0.117, "o", " "]
[0.157, "o", "p"]
[0.100, "o", "g"]
[0.187, "o", "-"]
[0.141, "o", "t"]
[0.099, "o", "e"]
[0.071, "o", "s"]
[0.077, "o", "t"]
[0.122, "o", "\r\n"]
[0.000, "o", "\u001b[?2004l\r"]
[0.005, "o", "\u001b[0;35m[EXECUTE] ===========================================\u001b[0m\r\n"]
[0.000, "o", "[\u001b[0;33mWARN\u001b[0m] \u001b[0;33mreload pgsql services for 'pg-test'\u001b[0m\r\n\u001b[0;34m$ ./pgsql.yml -l 'pg-test' -t pg_service\u001b[0m\r\n"]
[0.269, "o", "\r\nPLAY [PGSQL] ***********************************************************************************************************\r\n"]
[0.019, "o", "\r\nTASK [node_id : get node fact] *****************************************************************************************\r\n"]
[0.198, "o", "\u001b[0;33mchanged: [10.10.10.11]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;33mchanged: [10.10.10.12]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : set node fact] *****************************************************************************************\r\n"]
[0.018, "o", "\u001b[0;32mok: [10.10.10.11]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;32mok: [10.10.10.12]\u001b[0m\r\n"]
[0.002, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : fill empty nodename with hostname] *********************************************************************\r\n"]
[0.017, "o", "\u001b[0;36mskipping: [10.10.10.12]\u001b[0m\r\n\u001b[0;36mskipping: [10.10.10.11]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : build node identity] ***********************************************************************************\r\n"]
[0.022, "o", "\u001b[0;32mok: [10.10.10.12]\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;32mok: [10.10.10.11]\u001b[0m\r\n"]
[0.004, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node_id : load roles/node_id/vars/u24.x86_64.yml] ****************************************************************\r\n"]
[0.014, "o", "\u001b[0;32mok: [10.10.10.11]\u001b[0m\r\n"]
[0.003, "o", "\u001b[0;32mok: [10.10.10.12]\u001b[0m\r\n"]
[0.002, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [node_id : fallback to u24.x86_64.yml if u24.x86_64.yml not exists] ***********************************************\r\n"]
[0.008, "o", "\u001b[0;36mskipping: [10.10.10.11]\u001b[0m\r\n"]
[0.002, "o", "\u001b[0;36mskipping: [10.10.10.12]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [node_id : print node identity] ***********************************************************************************\r\n"]
[0.016, "o", "\u001b[0;32mok: [10.10.10.11] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"nodename: pg-test-1, node_cluster: pg-test, spec: c4m8, os: ubuntu.24.x86_64 u24:deb,   [PGSQL: pg-test] [REDIS: redis-meta]    \"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.002, "o", "\u001b[0;32mok: [10.10.10.12] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"nodename: pg-test-2, node_cluster: pg-test, spec: c4m8, os: ubuntu.24.x86_64 u24:deb,   [PGSQL: pg-test] [REDIS: redis-test]    \"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.004, "o", "\u001b[0;32mok: [10.10.10.13] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"nodename: pg-test-3, node_cluster: pg-test, spec: c4m8, os: ubuntu.24.x86_64 u24:deb,   [PGSQL: pg-test] [REDIS: redis-test]    \"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pg_id : get pgsql identity] **************************************************************************************\r\n"]
[0.129, "o", "\u001b[0;32mok: [10.10.10.11]\u001b[0m\r\n"]
[0.004, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.003, "o", "\u001b[0;32mok: [10.10.10.12]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_id : build pgsql identity] ************************************************************************************\r\n"]
[0.107, "o", "\u001b[0;32mok: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;32mok: [10.10.10.11]\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;32mok: [10.10.10.12]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pg_id : print pgsql identity] ************************************************************************************\r\n"]
[0.076, "o", "\u001b[0;32mok: [10.10.10.12] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"  [replica] pg-test-2 @ 10.10.10.12 , ins = pg-test-2 , cls = pg-test , REPLICATE PRIMARY pg-test-1 @ 10.10.10.11 -> pg-test-2   , postgres://10.10.10.12:5432/postgres\"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.003, "o", "\u001b[0;32mok: [10.10.10.11] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"  [primary] pg-test-1 @ 10.10.10.11 , ins = pg-test-1 , cls = pg-test ,  CLUSTER LEADER @ pg-test-1    , postgres://10.10.10.11:5432/postgres\"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.003, "o", "\u001b[0;32mok: [10.10.10.13] => {\u001b[0m\r\n\u001b[0;32m    \"msg\": \"  [replica] pg-test-3 @ 10.10.10.13 , ins = pg-test-3 , cls = pg-test , REPLICATE PRIMARY pg-test-1 @ 10.10.10.11 -> pg-test-3  [OFFLINE]  , postgres://10.10.10.13:5432/postgres\"\u001b[0m\r\n\u001b[0;32m}\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : wipe existing postgres haproxy service from local haproxy] ***********************************************\r\n"]
[0.124, "o", "\u001b[0;33mchanged: [10.10.10.12]\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.11]\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.002, "o", "\r\nTASK [pgsql : render haproxy service config on local haproxy] **********************************************************\r\n"]
[0.426, "o", "\u001b[0;33mchanged: [10.10.10.11] => (item={'name': 'primary', 'port': 5433, 'dest': 'default', 'check': '/primary', 'selector': '[]'})\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.12] => (item={'name': 'primary', 'port': 5433, 'dest': 'default', 'check': '/primary', 'selector': '[]'})\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'name': 'primary', 'port': 5433, 'dest': 'default', 'check': '/primary', 'selector': '[]'})\u001b[0m\r\n"]
[0.275, "o", "\u001b[0;33mchanged: [10.10.10.12] => (item={'name': 'replica', 'port': 5434, 'dest': 'default', 'check': '/read-only', 'selector': '[]', 'backup': '[? pg_role == `primary` || pg_role == `offline` ]'})\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'name': 'replica', 'port': 5434, 'dest': 'default', 'check': '/read-only', 'selector': '[]', 'backup': '[? pg_role == `primary` || pg_role == `offline` ]'})\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.11] => (item={'name': 'replica', 'port': 5434, 'dest': 'default', 'check': '/read-only', 'selector': '[]', 'backup': '[? pg_role == `primary` || pg_role == `offline` ]'})\u001b[0m\r\n"]
[0.276, "o", "\u001b[0;33mchanged: [10.10.10.12] => (item={'name': 'default', 'port': 5436, 'dest': 'postgres', 'check': '/primary', 'selector': '[]'})\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'name': 'default', 'port': 5436, 'dest': 'postgres', 'check': '/primary', 'selector': '[]'})\u001b[0m\r\n"]
[0.005, "o", "\u001b[0;33mchanged: [10.10.10.11] => (item={'name': 'default', 'port': 5436, 'dest': 'postgres', 'check': '/primary', 'selector': '[]'})\u001b[0m\r\n"]
[0.278, "o", "\u001b[0;33mchanged: [10.10.10.11] => (item={'name': 'offline', 'port': 5438, 'dest': 'postgres', 'check': '/replica', 'selector': '[? pg_role == `offline` || pg_offline_query ]', 'backup': '[? pg_role == `replica` && !pg_offline_query]'})\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.12] => (item={'name': 'offline', 'port': 5438, 'dest': 'postgres', 'check': '/replica', 'selector': '[? pg_role == `offline` || pg_offline_query ]', 'backup': '[? pg_role == `replica` && !pg_offline_query]'})\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;33mchanged: [10.10.10.13] => (item={'name': 'offline', 'port': 5438, 'dest': 'postgres', 'check': '/replica', 'selector': '[? pg_role == `offline` || pg_offline_query ]', 'backup': '[? pg_role == `replica` && !pg_offline_query]'})\u001b[0m\r\n"]
[0.003, "o", "\r\nTASK [pgsql : check local haproxy config before reload] ****************************************************************\r\n"]
[0.163, "o", "\u001b[0;33mchanged: [10.10.10.12]\u001b[0m\r\n"]
[0.002, "o", "\u001b[0;33mchanged: [10.10.10.11]\u001b[0m\r\n"]
[0.006, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : reload local haproxy] ************************************************************************************\r\n"]
[0.595, "o", "\u001b[0;33mchanged: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;33mchanged: [10.10.10.12]\u001b[0m\r\n"]
[0.006, "o", "\u001b[0;33mchanged: [10.10.10.11]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : wipe existing postgres service from remote haproxy] ******************************************************\r\n"]
[0.007, "o", "\u001b[0;36mskipping: [10.10.10.11]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.12]\u001b[0m\r\n"]
[0.002, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : render haproxy service on remote haproxy] ****************************************************************\r\n"]
[0.006, "o", "\u001b[0;36mskipping: [10.10.10.11]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.12]\u001b[0m\r\n"]
[0.002, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : check remote haproxy config before reload] ***************************************************************\r\n"]
[0.005, "o", "\u001b[0;36mskipping: [10.10.10.11]\u001b[0m\r\n"]
[0.001, "o", "\u001b[0;36mskipping: [10.10.10.12]\u001b[0m\r\n"]
[0.002, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.001, "o", "\r\nTASK [pgsql : reload remote haproxy] ***********************************************************************************\r\n"]
[0.008, "o", "\u001b[0;36mskipping: [10.10.10.11]\u001b[0m\r\n"]
[0.000, "o", "\u001b[0;36mskipping: [10.10.10.12]\u001b[0m\r\n"]
[0.002, "o", "\u001b[0;36mskipping: [10.10.10.13]\u001b[0m\r\n"]
[0.005, "o", "\r\nPLAY RECAP *************************************************************************************************************\r\n"]
[0.000, "o", "\u001b[0;33m10.10.10.11\u001b[0m                : \u001b[0;32mok=12  \u001b[0m \u001b[0;33mchanged=5   \u001b[0m unreachable=0    failed=0    \u001b[0;36mskipped=6   \u001b[0m rescued=0    ignored=0   \r\n"]
[0.000, "o", "\u001b[0;33m10.10.10.12\u001b[0m                : \u001b[0;32mok=12  \u001b[0m \u001b[0;33mchanged=5   \u001b[0m unreachable=0    failed=0    \u001b[0;36mskipped=6   \u001b[0m rescued=0    ignored=0   \r\n"]
[0.000, "o", "\u001b[0;33m10.10.10.13\u001b[0m                : \u001b[0;32mok=12  \u001b[0m \u001b[0;33mchanged=5   \u001b[0m unreachable=0    failed=0    \u001b[0;36mskipped=6   \u001b[0m rescued=0    ignored=0   \r\n"]
[0.000, "o", "\r\n"]
[0.059, "o", "\u001b[0;35m[SUMMARY] ===========================================\u001b[0m\r\n[\u001b[0;32m OK \u001b[0m] \u001b[0;32mreload pgsql services for pg-test complete!\u001b[0m\r\n\u001b[0;34mcheck haproxy admin page: http://i.pigsty/haproxy/pg-test-n/\u001b[0m\r\n"]
[0.000, "o", "\u001b[?2004h\u001b]0;vonng@vonng-aimax: ~/pigsty\u0007\u001b[01;32mvonng@vonng-aimax\u001b[00m:\u001b[01;34m~/pigsty\u001b[00m$ "]
[13.026, "o", "\u001b[?2004l\r\r\n"]
[0.000, "o", "exit\r\n"]
[0.002, "x", "0"]
