From aae748bda8632b66842f09e67d41aff269b4d915 Mon Sep 17 00:00:00 2001 From: Sanson Thomas Date: Mon, 29 May 2023 18:59:22 +0000 Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=94=A7=20chore(config):=20add=20yamll?= =?UTF-8?q?int=20and=20ansible-lint=20configuration=20files=20=E2=9C=A8=20?= =?UTF-8?q?feat(config):=20add=20make=20targets=20for=20testing=20and=20bo?= =?UTF-8?q?otstrapping=20development=20environment=20=F0=9F=94=A7=20chore(?= =?UTF-8?q?config):=20move=20dev=20requirements=20to=20a=20separate=20file?= =?UTF-8?q?=20=F0=9F=94=A7=20chore(config):=20update=20make=20targets=20to?= =?UTF-8?q?=20include=20development=20environment=20The=20commit=20adds=20?= =?UTF-8?q?configuration=20files=20for=20yamllint=20and=20ansible-lint.=20?= =?UTF-8?q?It=20also=20adds=20make=20targets=20for=20testing=20and=20boots?= =?UTF-8?q?trapping=20the=20development=20environment.=20The=20development?= =?UTF-8?q?=20environment=20is=20now=20bootstrapped=20separately=20from=20?= =?UTF-8?q?the=20production=20environment.=20The=20make=20targets=20have?= =?UTF-8?q?=20been=20updated=20to=20include=20the=20development=20environm?= =?UTF-8?q?ent.=20The=20dev=20requirements=20have=20been=20moved=20to=20a?= =?UTF-8?q?=20separate=20file.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .yamllint => .config/.yamllint | 0 .ansible-lint => .config/ansible-lint.yml | 5 ++-- .config/make/docker.mak | 7 ++++- .config/make/linters.mak | 4 +-- .config/make/python.mak | 2 +- .../dev/requirements.txt} | 0 .gitpod.yml | 2 +- CONTRIBUTING.md | 6 ++-- Makefile | 29 ++++++++++++++++--- 9 files changed, 41 insertions(+), 14 deletions(-) rename .yamllint => .config/.yamllint (100%) rename .ansible-lint => .config/ansible-lint.yml (90%) rename .config/{requirements.dev.txt => python/dev/requirements.txt} (100%) diff --git a/.yamllint b/.config/.yamllint similarity index 100% rename from .yamllint rename to .config/.yamllint diff --git a/.ansible-lint b/.config/ansible-lint.yml similarity index 90% rename from .ansible-lint rename to .config/ansible-lint.yml index 5f3c578f3..5c37fc65c 100644 --- a/.ansible-lint +++ b/.config/ansible-lint.yml @@ -1,3 +1,4 @@ +--- skip_list: - yaml - role-name @@ -25,7 +26,7 @@ skip_list: - var-naming[no-role-prefix] exclude_paths: - - roles/consul/ # TODO - https://github.com/ansible-community/ansible-consul/pull/520 - - .venv + - ../roles/consul/ # TODO - https://github.com/ansible-community/ansible-consul/pull/520 + - ../.venv # https://ansible-lint.readthedocs.io/configuring/ # https://ansible-lint.readthedocs.io/rules/ diff --git a/.config/make/docker.mak b/.config/make/docker.mak index 6cb581ccf..bf01f1950 100644 --- a/.config/make/docker.mak +++ b/.config/make/docker.mak @@ -5,4 +5,9 @@ docker-build: ## Run docker build image in local .PHONY: docker-lint docker-lint: ## Run hadolint command to lint Dokerfile - docker run --rm -i hadolint/hadolint < .config/gitpod/Dockerfile \ No newline at end of file + docker run --rm -i hadolint/hadolint < .config/gitpod/Dockerfile + +.PHONY: docker-tests +docker-tests: ## Run tests for docker + $(MAKE) docker-build + $(MAKE) docker-lint diff --git a/.config/make/linters.mak b/.config/make/linters.mak index 514a7393c..94775c165 100644 --- a/.config/make/linters.mak +++ b/.config/make/linters.mak @@ -4,7 +4,7 @@ ACTIVATE_VENV = source .venv/bin/activate # Configuration files -YAMLLINT_CONFIG = .yamllint +YAMLLINT_CONFIG = .config/.yamllint FLAKE8_CONFIG = .config/.flake8 .PHONY: linter-yamllint @@ -17,7 +17,7 @@ linter-yamllint: ## Lint YAML files using yamllint linter-ansible-lint: ## Lint Ansible files using ansible-lint echo "ansible-lint #########################################################" $(ACTIVATE_VENV) && \ - ansible-lint --force-color --offline --parseable + ansible-lint --force-color --parseable .PHONY: linter-flake8 linter-flake8: ## Lint Python files using flake8 diff --git a/.config/make/python.mak b/.config/make/python.mak index 1e21b2770..2c638a9ad 100644 --- a/.config/make/python.mak +++ b/.config/make/python.mak @@ -1,7 +1,7 @@ # Python default launcher python_launcher ?= python3.10 python_requirements_file ?= requirements.txt -python_requirements_dev_file ?= .config/requirements.dev.txt +python_requirements_dev_file ?= .config/python/dev/requirements.txt ## —— Python ————————————————————————————————————————————————————————————————————————————————————— .PHONY: python-bootstrap diff --git a/.config/requirements.dev.txt b/.config/python/dev/requirements.txt similarity index 100% rename from .config/requirements.dev.txt rename to .config/python/dev/requirements.txt diff --git a/.gitpod.yml b/.gitpod.yml index a9d502204..6a932579a 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -3,4 +3,4 @@ image: file: .config/gitpod/Dockerfile tasks: - - init: make bootstrap + - init: make bootstrap-dev diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 291c69091..6628dc2e2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,8 +36,8 @@ Use Gitpod for a cloud-based development environment: 3. Open your fork in Gitpod: `https://gitpod.io/#https://github.com/username/postgresql_cluster` 4. Create a new branch: `git checkout -b my-feature-branch` 5. Make your changes and commit: `git add .` and `git commit -m "Description of changes"` -6. Test with Molecule: `make molecule-test` or `make molecule-converge` -7. Test with linters(otpional): `make lint` +6. Test with Molecule: `make tests` or `make tests-fast` +7. Test with linters: `make lint` 8. Push your changes: `git push origin my-feature-branch` 9. Create a pull request on GitHub 10. Wait for a review @@ -48,7 +48,7 @@ Keep your Gitpod workspace synced with the main repository. Install [make](https://www.gnu.org/software/make/), [Python3.10](https://www.python.org/), [venv](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/), and [docker](https://docs.docker.com/engine/install/ubuntu/). -Run `make` for Makefile help. Initialize virtualenv and install dependencies with `make reinitialization` or `make bootstrap`. Test your changes with `make molecule-test` or `make molecule-converge`. +Run `make` for Makefile help. Initialize virtualenv and install dependencies with `make reinitialization-dev` or `make bootstrap-dev`. Test your changes with `make tests` or `make molecule-converge`. To test a specific distribution, set `distro`, `tag`, and `namespace`: diff --git a/Makefile b/Makefile index 380237b84..0dc39acf9 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: all test SHELL +.PHONY: all SHELL # Makefile global config .DEFAULT_GOAL:=help @@ -38,23 +38,44 @@ python_launcher := python$(shell cat .config/python_version.config | cut -d '=' -include $(addsuffix /*.mak, $(shell find .config/make -type d)) +## —— Tests collection ——————————————————————————————————————————————————————————————————————— +.PHONY: tests +tests: ## tests Ansible collection + $(MAKE) docker-tests + $(MAKE) lint + $(MAKE) molecule-test-all + +.PHONY: tests-fast +tests-fast: ## tests Ansible collection quickly + $(MAKE) lint + $(MAKE) molecule-converge + ## —— Bootstrap collection ——————————————————————————————————————————————————————————————————————— .PHONY: bootstrap bootstrap: ## Bootstrap Ansible collection $(MAKE) python-bootstrap + +.PHONY: bootstrap-dev +bootstrap-dev: ## Bootstrap Ansible collection for development + $(MAKE) bootstrap $(MAKE) python-bootstrap-dev ## —— Virtualenv ———————————————————————————————————————————————————————————————————————————————— .PHONY: reinitialization reinitialization: ## Return to an initial state of Bootstrap Ansible collection - rm -rf .venv/ - rm -rf vendor/ - rm -f *.mak + $(MAKE) clean $(MAKE) bootstrap +.PHONY: reinitialization-dev +reinitialization-dev: ## Return to an initial state of Bootstrap Ansible collection for development + $(MAKE) reinitialization + $(MAKE) bootstrap-dev + .PHONY: clean clean: ## Clean collection rm -rf .venv/ + rm -rf vendor/ + rm -f *.mak rm -rf .pytest_cache/ rm -rf scripts/.pytest_cache/ rm -rf scripts/tests/__pycache__/ From 8b203ac26ec71d7b1c99fd596965ac27244c8fe3 Mon Sep 17 00:00:00 2001 From: Sanson Thomas Date: Mon, 29 May 2023 19:00:06 +0000 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=94=A5=20chore(workflows):=20remove?= =?UTF-8?q?=20Ansible-lint=20and=20Yamllint=20workflows=20=E2=9C=A8=20feat?= =?UTF-8?q?(workflows):=20add=20linters=20workflow=20to=20run=20all=20lint?= =?UTF-8?q?ers=20and=20improve=20code=20quality=20The=20Ansible-lint=20and?= =?UTF-8?q?=20Yamllint=20workflows=20have=20been=20removed=20as=20they=20a?= =?UTF-8?q?re=20no=20longer=20needed.=20A=20new=20linters=20workflow=20has?= =?UTF-8?q?=20been=20added=20to=20run=20all=20linters=20and=20improve=20co?= =?UTF-8?q?de=20quality.=20This=20new=20workflow=20runs=20on=20every=20pus?= =?UTF-8?q?h=20and=20pull=20request=20to=20the=20master=20branch.=20It=20s?= =?UTF-8?q?ets=20the=20TERM=20environment=20variable,=20checks=20out=20the?= =?UTF-8?q?=20code,=20sets=20up=20Python=203.10,=20installs=20dependencies?= =?UTF-8?q?,=20and=20runs=20all=20linters=20using=20the=20`make=20lint`=20?= =?UTF-8?q?command.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ansible-lint.yml | 26 --------------- .github/workflows/linters.yml | 32 ++++++++++++++++++ .github/workflows/molecule.yml | 2 +- .github/workflows/molecule_pgpro.yml | 2 +- .github/workflows/schedule_pg_almalinux8.yml | 2 +- .github/workflows/schedule_pg_almalinux9.yml | 2 +- .github/workflows/schedule_pg_centos8.yml | 2 +- .../workflows/schedule_pg_centosstream8.yml | 2 +- .../workflows/schedule_pg_centosstream9.yml | 2 +- .github/workflows/schedule_pg_debian10.yml | 2 +- .github/workflows/schedule_pg_debian11.yml | 2 +- .../workflows/schedule_pg_oracle_linux8.yml | 2 +- .../workflows/schedule_pg_oracle_linux9.yml | 2 +- .github/workflows/schedule_pg_rockylinux8.yml | 2 +- .github/workflows/schedule_pg_rockylinux9.yml | 2 +- .github/workflows/schedule_pg_ubuntu1804.yml | 2 +- .github/workflows/schedule_pg_ubuntu2004.yml | 2 +- .github/workflows/schedule_pg_ubuntu2204.yml | 2 +- .github/workflows/yamllint.yml | 33 ------------------- 19 files changed, 48 insertions(+), 75 deletions(-) delete mode 100644 .github/workflows/ansible-lint.yml create mode 100644 .github/workflows/linters.yml delete mode 100644 .github/workflows/yamllint.yml diff --git a/.github/workflows/ansible-lint.yml b/.github/workflows/ansible-lint.yml deleted file mode 100644 index 00bfacb04..000000000 --- a/.github/workflows/ansible-lint.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: Ansible-lint - -on: - push: - branches: - - master - pull_request: - branches: - - master - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - name: Set TERM environment variable - run: echo "TERM=xterm" >> $GITHUB_ENV - - - name: Git clone repo postgresql_cluster - uses: actions/checkout@v2 - - - name: Lint Ansible Playbook - uses: ansible/ansible-lint-action@v6 - with: - path: "roles/" diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml new file mode 100644 index 000000000..0c960bb42 --- /dev/null +++ b/.github/workflows/linters.yml @@ -0,0 +1,32 @@ +--- +name: "Linters" + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Set TERM environment variable + run: echo "TERM=xterm" >> $GITHUB_ENV + + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: "3.10" + + - name: Install dependencies + run: make bootstrap-dev + + - name: Run all linters + run: make lint diff --git a/.github/workflows/molecule.yml b/.github/workflows/molecule.yml index 490cc8cc8..9ceec1ded 100644 --- a/.github/workflows/molecule.yml +++ b/.github/workflows/molecule.yml @@ -72,7 +72,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/molecule_pgpro.yml b/.github/workflows/molecule_pgpro.yml index b34f7276b..bcc07ec13 100644 --- a/.github/workflows/molecule_pgpro.yml +++ b/.github/workflows/molecule_pgpro.yml @@ -32,7 +32,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests for PostgresPro run: make molecule-test-scenario diff --git a/.github/workflows/schedule_pg_almalinux8.yml b/.github/workflows/schedule_pg_almalinux8.yml index 31f8938ee..4dfe73bc1 100644 --- a/.github/workflows/schedule_pg_almalinux8.yml +++ b/.github/workflows/schedule_pg_almalinux8.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/schedule_pg_almalinux9.yml b/.github/workflows/schedule_pg_almalinux9.yml index 297771d62..f84358747 100644 --- a/.github/workflows/schedule_pg_almalinux9.yml +++ b/.github/workflows/schedule_pg_almalinux9.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/schedule_pg_centos8.yml b/.github/workflows/schedule_pg_centos8.yml index 8d0c05440..b94b9991a 100644 --- a/.github/workflows/schedule_pg_centos8.yml +++ b/.github/workflows/schedule_pg_centos8.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/schedule_pg_centosstream8.yml b/.github/workflows/schedule_pg_centosstream8.yml index 018d97a35..14253a858 100644 --- a/.github/workflows/schedule_pg_centosstream8.yml +++ b/.github/workflows/schedule_pg_centosstream8.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/schedule_pg_centosstream9.yml b/.github/workflows/schedule_pg_centosstream9.yml index 5682de69c..b075021a4 100644 --- a/.github/workflows/schedule_pg_centosstream9.yml +++ b/.github/workflows/schedule_pg_centosstream9.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/schedule_pg_debian10.yml b/.github/workflows/schedule_pg_debian10.yml index 33c07e6c5..486d3b3ac 100644 --- a/.github/workflows/schedule_pg_debian10.yml +++ b/.github/workflows/schedule_pg_debian10.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/schedule_pg_debian11.yml b/.github/workflows/schedule_pg_debian11.yml index 5fbb39e70..73f6bd9e4 100644 --- a/.github/workflows/schedule_pg_debian11.yml +++ b/.github/workflows/schedule_pg_debian11.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/schedule_pg_oracle_linux8.yml b/.github/workflows/schedule_pg_oracle_linux8.yml index 75abac004..2ab481fa2 100644 --- a/.github/workflows/schedule_pg_oracle_linux8.yml +++ b/.github/workflows/schedule_pg_oracle_linux8.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/schedule_pg_oracle_linux9.yml b/.github/workflows/schedule_pg_oracle_linux9.yml index 807df9562..c046d76f5 100644 --- a/.github/workflows/schedule_pg_oracle_linux9.yml +++ b/.github/workflows/schedule_pg_oracle_linux9.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/schedule_pg_rockylinux8.yml b/.github/workflows/schedule_pg_rockylinux8.yml index 0e1453b6f..44b571661 100644 --- a/.github/workflows/schedule_pg_rockylinux8.yml +++ b/.github/workflows/schedule_pg_rockylinux8.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/schedule_pg_rockylinux9.yml b/.github/workflows/schedule_pg_rockylinux9.yml index 81e576515..927e590a4 100644 --- a/.github/workflows/schedule_pg_rockylinux9.yml +++ b/.github/workflows/schedule_pg_rockylinux9.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/schedule_pg_ubuntu1804.yml b/.github/workflows/schedule_pg_ubuntu1804.yml index 40e2af378..46d745ee7 100644 --- a/.github/workflows/schedule_pg_ubuntu1804.yml +++ b/.github/workflows/schedule_pg_ubuntu1804.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/schedule_pg_ubuntu2004.yml b/.github/workflows/schedule_pg_ubuntu2004.yml index ecc43c411..40fa125bf 100644 --- a/.github/workflows/schedule_pg_ubuntu2004.yml +++ b/.github/workflows/schedule_pg_ubuntu2004.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/schedule_pg_ubuntu2204.yml b/.github/workflows/schedule_pg_ubuntu2204.yml index 27cbc4ef9..f0924433f 100644 --- a/.github/workflows/schedule_pg_ubuntu2204.yml +++ b/.github/workflows/schedule_pg_ubuntu2204.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - name: Install dependencies - run: make bootstrap + run: make bootstrap-dev - name: Run Molecule tests run: make molecule-test diff --git a/.github/workflows/yamllint.yml b/.github/workflows/yamllint.yml deleted file mode 100644 index e90db31a7..000000000 --- a/.github/workflows/yamllint.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- - -name: 'Yamllint' - -on: - push: - branches: - - master - pull_request: - branches: - - master - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - name: Set TERM environment variable - run: echo "TERM=xterm" >> $GITHUB_ENV - - - name: 'Checkout' - uses: actions/checkout@v2 - - - name: 'Run yamllint' - uses: karancode/yamllint-github-action@master - with: - yamllint_file_or_dir: '.' - yamllint_strict: true - yamllint_comment: true - env: - GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} - -... From c3f8c9e5cfbbcc88357b99f8df77a597a8dcb71a Mon Sep 17 00:00:00 2001 From: Sanson Thomas Date: Tue, 30 May 2023 07:40:24 +0000 Subject: [PATCH 3/5] =?UTF-8?q?=E2=9C=A8=20chore(github):=20add=20Ansible-?= =?UTF-8?q?lint,=20Flake8,=20and=20Yamllint=20workflows=20to=20improve=20c?= =?UTF-8?q?ode=20quality=20The=20Ansible-lint,=20Flake8,=20and=20Yamllint?= =?UTF-8?q?=20workflows=20have=20been=20added=20to=20the=20project=20to=20?= =?UTF-8?q?improve=20code=20quality.=20These=20workflows=20will=20run=20on?= =?UTF-8?q?=20every=20push=20and=20pull=20request=20to=20the=20master=20br?= =?UTF-8?q?anch.=20The=20Ansible-lint=20workflow=20checks=20for=20syntax?= =?UTF-8?q?=20errors=20and=20best=20practices=20in=20Ansible=20code,=20the?= =?UTF-8?q?=20Flake8=20workflow=20checks=20for=20PEP8=20compliance=20and?= =?UTF-8?q?=20other=20code=20quality=20issues=20in=20Python=20code,=20and?= =?UTF-8?q?=20the=20Yamllint=20workflow=20checks=20for=20syntax=20errors?= =?UTF-8?q?=20and=20best=20practices=20in=20YAML=20files.=20The=20README.m?= =?UTF-8?q?d=20file=20has=20also=20been=20updated=20to=20reflect=20the=20c?= =?UTF-8?q?hanges=20in=20the=20project.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ansible-lint.yml | 32 +++++++++ .github/workflows/{linters.yml => flake8.yml} | 6 +- .github/workflows/yamllint.yml | 32 +++++++++ README.md | 72 +++++++++++-------- 4 files changed, 108 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/ansible-lint.yml rename .github/workflows/{linters.yml => flake8.yml} (87%) create mode 100644 .github/workflows/yamllint.yml diff --git a/.github/workflows/ansible-lint.yml b/.github/workflows/ansible-lint.yml new file mode 100644 index 000000000..abf3d1ef7 --- /dev/null +++ b/.github/workflows/ansible-lint.yml @@ -0,0 +1,32 @@ +--- +name: "Ansible-lint" + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Set TERM environment variable + run: echo "TERM=xterm" >> $GITHUB_ENV + + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: "3.10" + + - name: Install dependencies + run: make bootstrap-dev + + - name: Run Ansible-lint + run: make linter-ansible-lint diff --git a/.github/workflows/linters.yml b/.github/workflows/flake8.yml similarity index 87% rename from .github/workflows/linters.yml rename to .github/workflows/flake8.yml index 0c960bb42..643b94664 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/flake8.yml @@ -1,5 +1,5 @@ --- -name: "Linters" +name: "Flake8" on: push: @@ -28,5 +28,5 @@ jobs: - name: Install dependencies run: make bootstrap-dev - - name: Run all linters - run: make lint + - name: Run Flake8 + run: make linter-flake8 diff --git a/.github/workflows/yamllint.yml b/.github/workflows/yamllint.yml new file mode 100644 index 000000000..c367afcda --- /dev/null +++ b/.github/workflows/yamllint.yml @@ -0,0 +1,32 @@ +--- +name: "Yamllint" + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Set TERM environment variable + run: echo "TERM=xterm" >> $GITHUB_ENV + + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: "3.10" + + - name: Install dependencies + run: make bootstrap-dev + + - name: Run Yamllint + run: make linter-yamllint diff --git a/README.md b/README.md index 51e822ee4..fb03bdf17 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ [![Ansible Galaxy](https://img.shields.io/badge/galaxy-vitabaks.postgresql_cluster-success.svg)](https://galaxy.ansible.com/vitabaks/postgresql_cluster) [](https://github.com/vitabaks/postgresql_cluster/actions?query=workflow%3AAnsible-lint) [](https://github.com/vitabaks/postgresql_cluster/actions?query=workflow%3AYamllint) +[](https://github.com/vitabaks/postgresql_cluster/actions?query=workflow%3AFlake8) [](https://github.com/vitabaks/postgresql_cluster/actions?query=workflow%3AMolecule) [![GitHub license](https://img.shields.io/github/license/vitabaks/postgresql_cluster)](https://github.com/vitabaks/postgresql_cluster/blob/master/LICENSE) ![GitHub stars](https://img.shields.io/github/stars/vitabaks/postgresql_cluster) @@ -22,37 +23,46 @@ In addition to deploying new clusters, this playbook also support the deployment ## Index -- [Cluster types](#cluster-types) - - [[Type A] PostgreSQL High-Availability with HAProxy Load Balancing](#type-a-postgresql-high-availability-with-haproxy-load-balancing) - - [[Type B] PostgreSQL High-Availability only](#type-b-postgresql-high-availability-only) - - [[Type C] PostgreSQL High-Availability with Consul Service Discovery (DNS)](#type-c-postgresql-high-availability-with-consul-service-discovery-dns) -- [Compatibility](#compatibility) - - [Supported Linux Distributions:](#supported-linux-distributions) - - [PostgreSQL versions:](#postgresql-versions) - - [Ansible version](#ansible-version) -- [Requirements](#requirements) -- [Port requirements](#port-requirements) -- [Recommendations](#recommenations) -- [Deployment: quick start](#deployment-quick-start) -- [Variables](#variables) -- [Cluster Scaling](#cluster-scaling) - - [Steps to add a new postgres node](#steps-to-add-a-new-postgres-node) - - [Steps to add a new balancer node](#steps-to-add-a-new-balancer-node) -- [Restore and Cloning](#restore-and-cloning) - - [Create cluster with pgBackRest:](#create-cluster-with-pgbackrest) - - [Create cluster with WAL-G:](#create-cluster-with-wal-g) - - [Point-In-Time-Recovery:](#point-in-time-recovery) -- [Maintenance](#maintenance) - - [Update the PostgreSQL HA Cluster](#update-the-postgresql-ha-cluster) - - [Using Git for cluster configuration management](#using-git-for-cluster-configuration-management-iacgitops) -- [Disaster Recovery](#disaster-recovery) - - [etcd](#etcd) - - [PostgreSQL (databases)](#postgresql-databases) -- [How to start from scratch](#how-to-start-from-scratch) -- [License](#license) -- [Author](#author) -- [Sponsor this project](#sponsor-this-project) -- [Feedback, bug-reports, requests, ...](#feedback-bug-reports-requests-) +- [PostgreSQL High-Availability Cluster :elephant: :sparkling\_heart:](#postgresql-high-availability-cluster-elephant-sparkling_heart) + - [Deploy a Production Ready PostgreSQL High-Availability Cluster (based on "Patroni" and DCS "etcd" or "consul"). Automating with Ansible.](#deploy-a-production-ready-postgresql-high-availability-cluster-based-on-patroni-and-dcs-etcd-or-consul-automating-with-ansible) + - [Index](#index) + - [Cluster types](#cluster-types) + - [\[Type A\] PostgreSQL High-Availability with HAProxy Load Balancing](#type-a-postgresql-high-availability-with-haproxy-load-balancing) + - [if variable "synchronous\_mode" is 'true' (vars/main.yml):](#if-variable-synchronous_mode-is-true-varsmainyml) + - [Components of high availability:](#components-of-high-availability) + - [Components of load balancing:](#components-of-load-balancing) + - [\[Type B\] PostgreSQL High-Availability only](#type-b-postgresql-high-availability-only) + - [\[Type C\] PostgreSQL High-Availability with Consul Service Discovery (DNS)](#type-c-postgresql-high-availability-with-consul-service-discovery-dns) + - [Compatibility](#compatibility) + - [Supported Linux Distributions:](#supported-linux-distributions) + - [PostgreSQL versions:](#postgresql-versions) + - [Ansible version](#ansible-version) + - [Requirements](#requirements) + - [Port requirements](#port-requirements) + - [Recommenations](#recommenations) + - [Deployment: quick start](#deployment-quick-start) + - [Specify (non-public) IP addresses and connection settings (`ansible_user`, `ansible_ssh_pass` or `ansible_ssh_private_key_file` for your environment](#specify-non-public-ip-addresses-and-connection-settings-ansible_user-ansible_ssh_pass-or-ansible_ssh_private_key_file-for-your-environment) + - [Minimum set of variables:](#minimum-set-of-variables) + - [Deploy Cluster with TimescaleDB](#deploy-cluster-with-timescaledb) + - [Variables](#variables) + - [Cluster Scaling](#cluster-scaling) + - [Steps to add a new Postgres node:](#steps-to-add-a-new-postgres-node) + - [Steps to add a new balancer node:](#steps-to-add-a-new-balancer-node) + - [Restore and Cloning](#restore-and-cloning) + - [Create cluster with pgBackRest:](#create-cluster-with-pgbackrest) + - [Create cluster with WAL-G:](#create-cluster-with-wal-g) + - [Point-In-Time-Recovery:](#point-in-time-recovery) + - [Maintenance](#maintenance) + - [Update the PostgreSQL HA Cluster](#update-the-postgresql-ha-cluster) + - [Using Git for cluster configuration management (IaC/GitOps)](#using-git-for-cluster-configuration-management-iacgitops) + - [Disaster Recovery](#disaster-recovery) + - [etcd](#etcd) + - [PostgreSQL (databases)](#postgresql-databases) + - [How to start from scratch](#how-to-start-from-scratch) + - [License](#license) + - [Author](#author) + - [Sponsor this project](#sponsor-this-project) + - [Feedback, bug-reports, requests, ...](#feedback-bug-reports-requests-) ## Cluster types From d91557968e8c7259706b277159e6d7bdf4644742 Mon Sep 17 00:00:00 2001 From: Sanson Thomas Date: Tue, 30 May 2023 13:59:40 +0000 Subject: [PATCH 4/5] =?UTF-8?q?=F0=9F=94=80=20chore(README.md):=20reformat?= =?UTF-8?q?=20index=20and=20cluster=20types=20sections=20for=20better=20re?= =?UTF-8?q?adability=20The=20index=20and=20cluster=20types=20sections=20we?= =?UTF-8?q?re=20reformatted=20to=20improve=20readability=20and=20make=20it?= =?UTF-8?q?=20easier=20to=20navigate=20the=20document.=20The=20changes=20i?= =?UTF-8?q?nclude=20removing=20unnecessary=20characters,=20reordering=20th?= =?UTF-8?q?e=20sections,=20and=20changing=20the=20formatting=20of=20the=20?= =?UTF-8?q?sub-sections.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🎨 style(README.md): reformat table for better readability The table was reformatted to improve readability and make it easier to compare the test results across different distributions. --- README.md | 101 +++++++++++++++++++++++++----------------------------- 1 file changed, 46 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index fb03bdf17..0eea15864 100644 --- a/README.md +++ b/README.md @@ -23,46 +23,37 @@ In addition to deploying new clusters, this playbook also support the deployment ## Index -- [PostgreSQL High-Availability Cluster :elephant: :sparkling\_heart:](#postgresql-high-availability-cluster-elephant-sparkling_heart) - - [Deploy a Production Ready PostgreSQL High-Availability Cluster (based on "Patroni" and DCS "etcd" or "consul"). Automating with Ansible.](#deploy-a-production-ready-postgresql-high-availability-cluster-based-on-patroni-and-dcs-etcd-or-consul-automating-with-ansible) - - [Index](#index) - - [Cluster types](#cluster-types) - - [\[Type A\] PostgreSQL High-Availability with HAProxy Load Balancing](#type-a-postgresql-high-availability-with-haproxy-load-balancing) - - [if variable "synchronous\_mode" is 'true' (vars/main.yml):](#if-variable-synchronous_mode-is-true-varsmainyml) - - [Components of high availability:](#components-of-high-availability) - - [Components of load balancing:](#components-of-load-balancing) - - [\[Type B\] PostgreSQL High-Availability only](#type-b-postgresql-high-availability-only) - - [\[Type C\] PostgreSQL High-Availability with Consul Service Discovery (DNS)](#type-c-postgresql-high-availability-with-consul-service-discovery-dns) - - [Compatibility](#compatibility) - - [Supported Linux Distributions:](#supported-linux-distributions) - - [PostgreSQL versions:](#postgresql-versions) - - [Ansible version](#ansible-version) - - [Requirements](#requirements) - - [Port requirements](#port-requirements) - - [Recommenations](#recommenations) - - [Deployment: quick start](#deployment-quick-start) - - [Specify (non-public) IP addresses and connection settings (`ansible_user`, `ansible_ssh_pass` or `ansible_ssh_private_key_file` for your environment](#specify-non-public-ip-addresses-and-connection-settings-ansible_user-ansible_ssh_pass-or-ansible_ssh_private_key_file-for-your-environment) - - [Minimum set of variables:](#minimum-set-of-variables) - - [Deploy Cluster with TimescaleDB](#deploy-cluster-with-timescaledb) - - [Variables](#variables) - - [Cluster Scaling](#cluster-scaling) - - [Steps to add a new Postgres node:](#steps-to-add-a-new-postgres-node) - - [Steps to add a new balancer node:](#steps-to-add-a-new-balancer-node) - - [Restore and Cloning](#restore-and-cloning) - - [Create cluster with pgBackRest:](#create-cluster-with-pgbackrest) - - [Create cluster with WAL-G:](#create-cluster-with-wal-g) - - [Point-In-Time-Recovery:](#point-in-time-recovery) - - [Maintenance](#maintenance) - - [Update the PostgreSQL HA Cluster](#update-the-postgresql-ha-cluster) - - [Using Git for cluster configuration management (IaC/GitOps)](#using-git-for-cluster-configuration-management-iacgitops) - - [Disaster Recovery](#disaster-recovery) - - [etcd](#etcd) - - [PostgreSQL (databases)](#postgresql-databases) - - [How to start from scratch](#how-to-start-from-scratch) - - [License](#license) - - [Author](#author) - - [Sponsor this project](#sponsor-this-project) - - [Feedback, bug-reports, requests, ...](#feedback-bug-reports-requests-) +- [Cluster types](#cluster-types) + - [[Type A] PostgreSQL High-Availability with HAProxy Load Balancing](#type-a-postgresql-high-availability-with-haproxy-load-balancing) + - [[Type B] PostgreSQL High-Availability only](#type-b-postgresql-high-availability-only) + - [[Type C] PostgreSQL High-Availability with Consul Service Discovery (DNS)](#type-c-postgresql-high-availability-with-consul-service-discovery-dns) +- [Compatibility](#compatibility) + - [Supported Linux Distributions:](#supported-linux-distributions) + - [PostgreSQL versions:](#postgresql-versions) + - [Ansible version](#ansible-version) +- [Requirements](#requirements) +- [Port requirements](#port-requirements) +- [Recommendations](#recommenations) +- [Deployment: quick start](#deployment-quick-start) +- [Variables](#variables) +- [Cluster Scaling](#cluster-scaling) + - [Steps to add a new postgres node](#steps-to-add-a-new-postgres-node) + - [Steps to add a new balancer node](#steps-to-add-a-new-balancer-node) +- [Restore and Cloning](#restore-and-cloning) + - [Create cluster with pgBackRest:](#create-cluster-with-pgbackrest) + - [Create cluster with WAL-G:](#create-cluster-with-wal-g) + - [Point-In-Time-Recovery:](#point-in-time-recovery) +- [Maintenance](#maintenance) + - [Update the PostgreSQL HA Cluster](#update-the-postgresql-ha-cluster) + - [Using Git for cluster configuration management](#using-git-for-cluster-configuration-management-iacgitops) +- [Disaster Recovery](#disaster-recovery) + - [etcd](#etcd) + - [PostgreSQL (databases)](#postgresql-databases) +- [How to start from scratch](#how-to-start-from-scratch) +- [License](#license) +- [Author](#author) +- [Sponsor this project](#sponsor-this-project) +- [Feedback, bug-reports, requests, ...](#feedback-bug-reports-requests-) ## Cluster types @@ -151,22 +142,22 @@ all supported PostgreSQL versions :white_check_mark: tested, works fine: PostgreSQL 10, 11, 12, 13, 14, 15 _Table of results of daily automated testing of cluster deployment:_ -| Distribution | Test result | -|--------------|:----------:| -| Debian 10 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_debian10.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_debian10.yml) | -| Debian 11 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_debian11.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_debian11.yml) | -| Ubuntu 18.04 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_ubuntu1804.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_ubuntu1804.yml) | -| Ubuntu 20.04 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_ubuntu2004.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_ubuntu2004.yml) | -| Ubuntu 22.04 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_ubuntu2204.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_ubuntu2204.yml) | -| CentOS 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_centos8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_centos8.yml) | +| Distribution | Test result | +| --------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| Debian 10 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_debian10.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_debian10.yml) | +| Debian 11 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_debian11.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_debian11.yml) | +| Ubuntu 18.04 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_ubuntu1804.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_ubuntu1804.yml) | +| Ubuntu 20.04 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_ubuntu2004.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_ubuntu2004.yml) | +| Ubuntu 22.04 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_ubuntu2204.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_ubuntu2204.yml) | +| CentOS 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_centos8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_centos8.yml) | | CentOS Stream 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_centosstream8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_centosstream8.yml) | | CentOS Stream 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_centosstream9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_centosstream9.yml) | -| Oracle Linux 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_oracle_linux8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_oracle_linux8.yml) | -| Oracle Linux 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_oracle_linux9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_oracle_linux9.yml) | -| Rocky Linux 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_rockylinux8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_rockylinux8.yml) | -| Rocky Linux 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_rockylinux9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_rockylinux9.yml) | -| AlmaLinux 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_almalinux8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_almalinux8.yml) | -| AlmaLinux 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_almalinux9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_almalinux9.yml) | +| Oracle Linux 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_oracle_linux8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_oracle_linux8.yml) | +| Oracle Linux 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_oracle_linux9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_oracle_linux9.yml) | +| Rocky Linux 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_rockylinux8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_rockylinux8.yml) | +| Rocky Linux 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_rockylinux9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_rockylinux9.yml) | +| AlmaLinux 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_almalinux8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_almalinux8.yml) | +| AlmaLinux 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_almalinux9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_almalinux9.yml) | ###### Ansible version @@ -604,4 +595,4 @@ USDT (TRC20): `TSTSXZzqDCUDHDjZwCpuBkdukjuDZspwjj` --- ## Feedback, bug-reports, requests, ... -Are [welcome](https://github.com/vitabaks/postgresql_cluster/issues)! +Are [welcome](https://github.com/vitabaks/postgresql_cluster/issues)! \ No newline at end of file From 13cb95ec53250e4d429b3675b5642f32fe2af55b Mon Sep 17 00:00:00 2001 From: Sanson Thomas Date: Tue, 30 May 2023 14:02:42 +0000 Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=93=9D=20chore(README.md):=20reformat?= =?UTF-8?q?=20table=20of=20test=20results=20for=20better=20readability=20T?= =?UTF-8?q?he=20table=20of=20test=20results=20has=20been=20reformatted=20t?= =?UTF-8?q?o=20improve=20readability.=20The=20table=20now=20has=20a=20clea?= =?UTF-8?q?ner=20look=20and=20is=20easier=20to=20read.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 0eea15864..9be8f1002 100644 --- a/README.md +++ b/README.md @@ -142,22 +142,22 @@ all supported PostgreSQL versions :white_check_mark: tested, works fine: PostgreSQL 10, 11, 12, 13, 14, 15 _Table of results of daily automated testing of cluster deployment:_ -| Distribution | Test result | -| --------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| Debian 10 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_debian10.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_debian10.yml) | -| Debian 11 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_debian11.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_debian11.yml) | -| Ubuntu 18.04 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_ubuntu1804.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_ubuntu1804.yml) | -| Ubuntu 20.04 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_ubuntu2004.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_ubuntu2004.yml) | -| Ubuntu 22.04 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_ubuntu2204.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_ubuntu2204.yml) | -| CentOS 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_centos8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_centos8.yml) | +| Distribution | Test result | +|--------------|:----------:| +| Debian 10 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_debian10.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_debian10.yml) | +| Debian 11 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_debian11.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_debian11.yml) | +| Ubuntu 18.04 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_ubuntu1804.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_ubuntu1804.yml) | +| Ubuntu 20.04 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_ubuntu2004.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_ubuntu2004.yml) | +| Ubuntu 22.04 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_ubuntu2204.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_ubuntu2204.yml) | +| CentOS 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_centos8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_centos8.yml) | | CentOS Stream 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_centosstream8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_centosstream8.yml) | | CentOS Stream 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_centosstream9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_centosstream9.yml) | -| Oracle Linux 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_oracle_linux8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_oracle_linux8.yml) | -| Oracle Linux 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_oracle_linux9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_oracle_linux9.yml) | -| Rocky Linux 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_rockylinux8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_rockylinux8.yml) | -| Rocky Linux 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_rockylinux9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_rockylinux9.yml) | -| AlmaLinux 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_almalinux8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_almalinux8.yml) | -| AlmaLinux 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_almalinux9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_almalinux9.yml) | +| Oracle Linux 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_oracle_linux8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_oracle_linux8.yml) | +| Oracle Linux 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_oracle_linux9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_oracle_linux9.yml) | +| Rocky Linux 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_rockylinux8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_rockylinux8.yml) | +| Rocky Linux 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_rockylinux9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_rockylinux9.yml) | +| AlmaLinux 8 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_almalinux8.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_almalinux8.yml) | +| AlmaLinux 9 | [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/vitabaks/postgresql_cluster/schedule_pg_almalinux9.yml?branch=master)](https://github.com/vitabaks/postgresql_cluster/actions/workflows/schedule_pg_almalinux9.yml) | ###### Ansible version