observability.svc.plus/deploy.yml
2026-02-01 20:53:55 +08:00

141 lines
4.3 KiB
YAML
Executable File

#!/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 } ]
#---------------------------------------------------------------
# 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 }
...