ansible. Role 11. установка patroni

Thank you for reading this post, don't forget to subscribe!

Patroni — это демон на python, поз­во­ля­ю­щий авто­ма­ти­че­ски обслу­жи­вать кла­сте­ры PostgreSQL с раз­лич­ны­ми типа­ми репли­ка­ции, и авто­ма­ти­че­ским пере­клю­че­ни­ем ролей.

схе­ма такая 2 балан­си­ров­щи­ка haproxy меж­ду ними вир­ту­аль­ный ip адрес и  2 базы(мастер/слейв).

есть сле­ду­ю­щие тачки:

192.168.1.120 балан­си­ров­щик
192.168.1.121 балансировщик
192.168.1.122 база
192.168.1.123 база
192.168.1.124 вир­ту­аль­ный ip адрес

[root@ansible ~]# cat /etc/ansible/hosts

[codesyntax lang="php"]

[/codesyntax]

 

пра­вим дан­ный файл, ука­зы­вая где какой etcd, patroni, balance
так­же ука­зы­ва­ем будет ли уста­нов­ка идти через прок­си или нет:

[root@ansible ~]# cat /etc/ansible/playbooks/roles_play/patroni.yml

[codesyntax lang="php"]

[/codesyntax]

 

[root@ansible ~]# cat /etc/ansible/roles/patroni/templates/etcd.conf

[codesyntax lang="php"]

[/codesyntax]

 

[root@ansible ~]# cat /etc/ansible/roles/patroni/templates/haproxy.cfg

[codesyntax lang="php"]

[/codesyntax]

 

у кипе­лай­ва пра­вим имя сете­во­го интер­фей­са  и если будет юза­зать pgbouncer то рас­ко­мен­чи­ва­ем соот­вет­ству­ю­щие строки

[root@ansible ~]# cat /etc/ansible/roles/patroni/templates/keepalived.conf

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# ll /etc/ansible/roles/patroni/templates/keepalived
-rwxr-xr-x 1 root root 416672 Sep 20 10:00 /etc/ansible/roles/patroni/templates/keepalived

 

так же у нас ском­пи­ли­ро­ван keepalived вер­сии 2 - это помо­га­ет от split brain его кла­дём туда же в темплейт:

keepalived

[root@ansible ~]# cat /etc/ansible/roles/patroni/templates/patroni.service

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/templates/patroni.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/templates/pgbouncer.ini

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/handlers/main.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/add_etcd_config.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/add_haproxy_config.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/add_keepalived_config.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/add_patroni_config.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/add_pgbouncer_config.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/create_patroni_service.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/install_etcd.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/install_haproxy.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/install_keepalived.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/install_patroni-without-proxy.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/install_patroni.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/install_pgbouncer-without-proxy.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/install_pgbouncer.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/install_postgres-without-proxy.yml

[codesyntax lang="php"]

[/codesyntax]

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/install_postgres.yml

[codesyntax lang="php"]

[/codesyntax]

тут мы можем рас­ко­мен­тить pgbouncer но луч­ше не надо с ним понты

[root@ansible ~]# cat /etc/ansible/roles/patroni/tasks/main.yml

[codesyntax lang="php"]

[/codesyntax]

ну и мож­но запус­кать установку:

[root@ansible ~]# ansible-playbook -u root /etc/ansible/playbooks/roles_play/patroni.yml --ask-pass