Skip to content

Commit

Permalink
feat(molecule): add postgresql scenario
Browse files Browse the repository at this point in the history
add separate scenario to test postgresql plugin.

* separate requirements file in scenario directory
* change container images to geerlingguy's
* add role geerlingguy.postgresql to be able to run postgresql tests
  • Loading branch information
adf-patrickha committed Apr 26, 2024
1 parent b1e9026 commit 4a44667
Show file tree
Hide file tree
Showing 6 changed files with 262 additions and 0 deletions.
5 changes: 5 additions & 0 deletions molecule/postgresql/collections.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---

collections:
- name: community.docker
- name: community.general
126 changes: 126 additions & 0 deletions molecule/postgresql/converge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
---
- name: Converge
hosts: all
become: true
gather_facts: true

roles:
- role: ansible-role-bareos_fd
bareos_fd_backup_configurations: true
bareos_fd_install_debug_packages: true
bareos_fd_encryption_enabled: true
bareos_fd_encryption_private_key: |
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
bareos_fd_encryption_master_public_key: |
-----BEGIN CERTIFICATE-----
MIIDyjCCArKgAwIBAgIJAIAjOIGqAGRwMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYD
VQQGEwJOTDEQMA4GA1UECAwHVVRSRUNIVDESMBAGA1UEBwwJQnJldWtlbGVuMSIw
IAYDVQQKDBlBZGZpbmlzIElUIE5lZGVybGFuZCBCLlYuMQ8wDQYDVQQDDAZiYXJl
b3MxKDAmBgkqhkiG9w0BCQEWGXJvYmVydC5kZWJvY2tAYWRmaW5pcy5jb20wHhcN
MjMwOTExMDg1MzA0WhcNMjMxMDExMDg1MzA0WjCBkjELMAkGA1UEBhMCTkwxEDAO
BgNVBAgMB1VUUkVDSFQxEjAQBgNVBAcMCUJyZXVrZWxlbjEiMCAGA1UECgwZQWRm
aW5pcyBJVCBOZWRlcmxhbmQgQi5WLjEPMA0GA1UEAwwGYmFyZW9zMSgwJgYJKoZI
hvcNAQkBFhlyb2JlcnQuZGVib2NrQGFkZmluaXMuY29tMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEAxFjcLKHDTf8dcT4kKtyZlIh4Zh7zNglaa6SJNBGW
pmcvtgfR9aBCDbcEphcssdytrXIiLsCEfv1h63o58UXePKYJMtNzbn6NNyzamxB9
CM4oHWr/td8i6fYaYXmqOxOimX707joWPlTB9+/rKWFrxwyg08oVGFdBNR6GmWek
Y5aRaEMwRBhh+bSVR9/Rj/QmqlF9pCB9/TtY3hhBdQkcy1tLTDo7Mf/Z4gLpk7d2
vRmpvVY8JloXjzuJNgVNbzY09pylqe78m9UsrJGBlzocZO5+AnO7wsqMAtUvplOM
oE7GHrg1FpfLjY3bqTQka/fVd1bDt5eDjAJnPqO1RYpKjQIDAQABoyEwHzAdBgNV
HQ4EFgQURTeY0pPxExJwTelsdBXr5PxgOdAwDQYJKoZIhvcNAQELBQADggEBALCi
urw+j1Yg2QDkOzMxmr6r0O/kF3WfrfpcevOCGVN0GxdxP/nGcfAh8feq4xj4oAnS
2CyhNfPPi+rIO1T0EkZWwL/kTByMGoR9Qc+juMgJ1HTYP6nEnBOXPMo1OyUdK5K3
MefQpNgHdWNSjWtLuW3YW8rkIeF8ZjmlXOSmBdOmqFi7p3OwwF8FnuXze1RLTgPL
VeI8D8DtzbX+mocuYxfIAFEmRXAmMeimXgwrVyI+w8+3IRGw8rDje0pFZX5X2aED
Gcz2IVF2cw5k1ryYW5kN027oK9igd8qc6dcJC6nMJw1kLbBdo68Eq3EOx92Fljlg
Wa7Dw2pD6yQGl/dfgQg=
-----END CERTIFICATE-----
bareos_fd_directors:
- name: "bareos-dir"
password: "secretpassword"
monitor: false
connection_from_client_to_director: true
connection_from_director_to_client: false
tls_enable: true
tls_verify_peer: false
- name: "disabled-director"
enabled: false
bareos_fd_messages:
- name: "Standard"
director:
server: bareos-dir
messages:
- all
- "!skipped"
- "!restored"
description: "Send relevant messages to the Director."
append:
file: "/var/log/bareos/bareos.log"
messages:
- all
- "!skipped"
- "!terminate"
console:
- all
- "!skipped"
- "!saved"
- name: "disabled-message"
enabled: false
bareos_fd_plugins:
- mariabackup
- mysql
- mysql_xtrabackup
- postgresql
# TODO disabled as package `bareos-filedaemon-ldap-python-plugin`
# has broken dependencies on Debian (python-ldap instead of python3-ldap)
# - ldap
29 changes: 29 additions & 0 deletions molecule/postgresql/molecule.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
#
# Ansible managed
#

dependency:
name: galaxy
options:
role-file: molecule/postgresql/requirements.yml
requirements-file: molecule/postgresql/requirements.yml
lint: |
set -e
yamllint .
ansible-lint
driver:
name: podman
platforms:
- name: "bareosfd-${MOLECULE_DISTRO:-fedora38}-${tag:-latest}${TOX_ENVNAME}"
image: "geerlingguy/docker-${MOLECULE_DISTRO:-fedora38}-ansible:latest"
command: /sbin/init
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
privileged: yes
pre_build_image: yes
systemd: true
provisioner:
name: ansible
verifier:
name: ansible
55 changes: 55 additions & 0 deletions molecule/postgresql/prepare.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
- name: Prepare
hosts: all
become: true
gather_facts: true

pre_tasks:

- name: RPM Block
when:
- ansible_facts.os_family == "RedHat" or
ansible_facts.os_family == "Fedora"
block:
- name: Install locales
ansible.builtin.package:
name:
- glibc-common
- glibc-locale-source
state: present

- name: Set locales
ansible.builtin.command:
cmd: localedef --inputfile=en_US --charmap=UTF-8 en_US.UTF-8

- name: DEB Block
when:
- ansible_facts.os_family == "Debian" or
ansible_facts.os_family == "Ubuntu"
block:
- name: Update Apt cache
ansible.builtin.apt:
update_cache: true

- name: Install locales
ansible.builtin.package:
name: locales
state: present

- name: Ensure locales exist
community.general.locale_gen:
name: en_US.UTF-8
state: present

roles:
- role: robertdebock.bootstrap
- role: adfinis.bareos_repository
bareos_repository_enable_tracebacks: true

- role: geerlingguy.postgresql
postgresql_databases:
- name: test
postgresql_users:
- name: test
password: test
db: test
10 changes: 10 additions & 0 deletions molecule/postgresql/requirements.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---

roles:
- name: robertdebock.bootstrap
- name: geerlingguy.postgresql
- name: adfinis.bareos_repository

collections:
- name: community.crypto
- name: community.general
37 changes: 37 additions & 0 deletions molecule/postgresql/verify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
- name: Verify
hosts: all
become: true
gather_facts: true

tasks:
- name: Check if port 9102 is listening
ansible.builtin.wait_for:
port: 9102

- name: Test configuration for warnings
ansible.builtin.command:
cmd: bareos-fd --test-config
become_user: bareos
register: bareos_fd_test_config
failed_when:
- bareos_fd_test_config.stdout_lines is search("There are configuration warnings")

# have to be specified in converge.yml: `bareos_fd_plugins`
- name: Check if plugin packages were installed
ansible.builtin.package:
name:
- bareos-filedaemon-mariabackup-python-plugin
- bareos-filedaemon-postgresql-python-plugin
- bareos-filedaemon-postgresql-python-plugin
- bareos-filedaemon-percona-xtrabackup-python-plugin
# TODO disabled as package `bareos-filedaemon-ldap-python-plugin`
# has broken dependencies on Debian (python-ldap instead of python3-ldap)
# - bareos-filedaemon-ldap-python-plugin
state: present
check_mode: true
diff: true
register: _result
failed_when: _result.changed
when:
- ansible_facts.os_family != "Archlinux" # not supported for FD Plugins

0 comments on commit 4a44667

Please sign in to comment.