#!/usr/bin/env ansible-playbook --- #==============================================================# # File : deploy # Desc : deploy everything on all nodes # Ctime : 2021-01-19 # Mtime : 2025-12-28 # Path : deploy.yml # Docs : https://pigsty.io/docs/infra/playbook # License : Apache-2.0 @ https://pigsty.io/docs/about/license/ # Copyright : 2018-2026 Ruohang Feng / Vonng (rh@vonng.com) #==============================================================# #==============================================================# # deploy will interleave infra.yml & node.yml in following # orders to set up everything in one pass # - id : generate node & pgsql identity # - ca : create self-signed CA on localhost # - repo : create local yum repo on infra nodes # - node-init : init node, haproxy & docker # - infra : init nginx, dns, victoria, grafana # - node-monitor : init node-exporter vector # - etcd : init etcd (required for pgsql HA) # - minio : init minio (optional) # - pgsql : init pgsql # - pgsql-monitor : init pgsql # # Which is equivalent to the following 4 playbooks altogether: # - infra.yml -l infra deploy infrastructure on group 'infra' # - node.yml -l all init all nodes # - etcd.yml -l etcd init etcd on group 'etcd' for pg ha # - minio.yml -l minio init minio on group 'minio' for pg backup # - pgsql.yml -l all init pgsql database clusters on all nodes #==============================================================# #--------------------------------------------------------------- # setup node & pgsql identity #--------------------------------------------------------------- - name: IDENTITY hosts: all gather_facts: no tags: id roles: - { role: node_id ,tags: node-id } - { role: pg_id ,tags: pg-id ,when: pg_cluster is defined } #--------------------------------------------------------------- # Setup local CA #--------------------------------------------------------------- - name: CA become: true hosts: localhost gather_facts: no tags: ca roles: [ { role: ca } ] #--------------------------------------------------------------- # bootstrap a local yum repo #--------------------------------------------------------------- - name: REPO become: true hosts: infra gather_facts: no tags: repo roles: [ { role: repo } ] #--------------------------------------------------------------- # init node , ca, docker #--------------------------------------------------------------- - name: NODE INIT become: true hosts: all gather_facts: no tags: node-init roles: - { role: node ,tags: node } # prepare node for pigsty - { role: haproxy ,tags: haproxy } # init haproxy if enabled #--------------------------------------------------------------- # init dns, nginx, victoria, grafana #--------------------------------------------------------------- - name: INFRA INIT become: true hosts: infra gather_facts: no tags: infra roles: [ { role: infra } ] #--------------------------------------------------------------- # init insight workbench #--------------------------------------------------------------- - name: INSIGHT INIT become: true hosts: infra gather_facts: no tags: insight roles: [ { role: insight } ] #--------------------------------------------------------------- # Node Monitor #--------------------------------------------------------------- - name: NODE MONITOR become: true hosts: all gather_facts: no tags: [ monitor, node-monitor ] roles: [ { role: node_monitor } ] #--------------------------------------------------------------- # ETCD INIT #--------------------------------------------------------------- - name: ETCD INIT become: true hosts: etcd gather_facts: no tags: etcd roles: [ { role: etcd } ] # init etcd on fixed group 'etcd' #--------------------------------------------------------------- # MINIO INIT #--------------------------------------------------------------- - name: MINIO INIT become: true hosts: minio gather_facts: no tags: minio roles: [ { role: minio } ] # init minio on fixed group 'minio' #--------------------------------------------------------------- # PGSQL INIT #--------------------------------------------------------------- - name: PGSQL INIT # init pgsql on all nodes become: true # with pg_cluster defined hosts: all gather_facts: no tags: pgsql roles: - { role: pgsql ,when: pg_cluster is defined } - { role: pg_monitor ,when: pg_cluster is defined } ...