Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Molecule 6 #1303

Merged
merged 17 commits into from
Jun 30, 2024
3 changes: 0 additions & 3 deletions .github/workflows/agent.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,6 @@ jobs:
python -m pip install --upgrade pip
pip install -r molecule/requirements.txt

- name: Install ansible.netcommon collection
run: ansible-galaxy collection install ansible.netcommon

- name: Build the collection
run: |
# Pin versions to speed up CI
Expand Down
4 changes: 4 additions & 0 deletions molecule/default/collections.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
collections:
- name: community.docker
version: ">=3.0.0"
47 changes: 47 additions & 0 deletions molecule/default/create.docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
- name: Create
hosts: localhost
connection: local

gather_facts: false

pre_tasks:
- name: Create network
community.docker.docker_network:
name: zabbix

tasks:
- name: Create OS container(s)
community.docker.docker_container:
state: started
recreate: true
name: "{{ item.name }}"
image: "{{ item.image }}"
privileged: "{{ item.privileged | default(omit) }}"
command: "{{ item.command | default(omit) }}"
networks: "{{ item.networks | default(omit) }}"
volumes: "{{ item.volumes | default(omit) }}"
cgroupns_mode: "{{ item.cgroupns_mode | default(omit) }}"
loop: "{{ molecule_yml.platforms }}"

- name: Create database container(s)
community.docker.docker_container:
name: "{{ item.name }}-db"
image: "{{ _container[_db_type].image }}"
state: started
recreate: true
networks:
- name: zabbix
env: "{{ _container[_db_type].env }}"
loop: "{{ molecule_yml.platforms }}"
when: item.groups | intersect(_database_groups)
vars:
_database_groups: ['mysql', 'pgsql']
_db_type: "{{ item.groups | intersect(_database_groups) | first }}"
_container:
mysql:
image: "mysql:8.0"
env: { MYSQL_ROOT_PASSWORD: changeme }
pgsql:
image: "postgres:13"
env: { POSTGRES_PASSWORD: changeme }
27 changes: 27 additions & 0 deletions molecule/default/destroy.docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
- name: Destroy
hosts: localhost
connection: local

gather_facts: false

tasks:
- name: Destroy OS container(s)
community.docker.docker_container:
name: "{{ item.name }}"
state: absent
force_kill: "{{ item.force_kill | default(True) }}"
loop: "{{ molecule_yml.platforms }}"

- name: Destroy database container(s)
community.docker.docker_container:
name: "{{ item.name }}-db"
state: absent
force_kill: true
loop: "{{ molecule_yml.platforms }}"

post_tasks:
- name: Destroy network
community.docker.docker_network:
name: zabbix
state: absent
18 changes: 6 additions & 12 deletions molecule/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
# Install CI dependencies for the Zabbix Roles
#ansible==8.0.0 # commented out to avoid installing collections in site-packages/ansible_collections
ansible-compat==3.0.0
ansible-core==2.15.11
docker==6.1.3
molecule<5
molecule-docker @ git+https://github.com/ansible-community/molecule-docker@main
netaddr==1.2.1
pytest==7.2.1
pytest-testinfra==7.0.0
ipaddr==2.2.0
ipaddress==1.0.23
requests==2.31.0
ansible-core<2.17
docker
molecule>=6,<24.7.0
netaddr>=1.2.1
pytest<8 # newer versions require python>=3.8
pytest-testinfra<9 # newer versions require python>=3.9
4 changes: 4 additions & 0 deletions molecule/zabbix_agent_tests/common/collections.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
collections:
- name: community.docker
version: ">=3.0.0"
17 changes: 14 additions & 3 deletions molecule/zabbix_agent_tests/common/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
---
dependency:
name: galaxy
enabled: true
options:
requirements-file: common/collections.yml

driver:
name: docker
name: default

platforms:
- name: zabbix-agent-${MY_MOLECULE_CONTAINER:-centos}
Expand All @@ -20,15 +26,18 @@ platforms:
provisioner:
name: ansible
playbooks:
create: ../../common/playbooks/create.yml
prepare: ../../common/playbooks/prepare.yml
converge: ../../common/playbooks/converge.yml
destroy: ../../common/playbooks/destroy.yml
env:
ANSIBLE_REMOTE_TMP: /tmp/
ANSIBLE_COLLECTIONS_PATHS: $HOME/.ansible/collections/ansible_collections/community/zabbix
ANSIBLE_ROLES_PATH: $HOME/.ansible/collections/ansible_collections/community/zabbix/roles
# https://github.com/ansible/molecule/issues/4015#issuecomment-1680859724
ANSIBLE_ROLES_PATH: ../../../../roles
inventory:
group_vars:
all:
ansible_connection: community.docker.docker
zabbix_agent_server: 192.168.3.33
zabbix_agent_serveractive: 192.168.3.33
zabbix_agent_listenip: 0.0.0.0
Expand All @@ -42,6 +51,7 @@ provisioner:
zabbix_agent_version: 6.4
v60:
zabbix_agent_version: 6.0

scenario:
test_sequence:
- dependency
Expand All @@ -56,5 +66,6 @@ scenario:
- verify
- cleanup
- destroy

verifier:
name: testinfra
25 changes: 25 additions & 0 deletions molecule/zabbix_agent_tests/common/playbooks/create.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
- name: Create
hosts: localhost
connection: local

gather_facts: false

pre_tasks:
- name: Create network
community.docker.docker_network:
name: zabbix

tasks:
- name: "Create OS container"
community.docker.docker_container:
state: started
recreate: true
name: "{{ item.name }}"
image: "{{ item.image }}"
privileged: "{{ item.privileged | default(omit) }}"
command: "{{ item.command | default(omit) }}"
networks: "{{ item.networks | default(omit) }}"
volumes: "{{ item.volumes | default(omit) }}"
cgroupns_mode: "{{ item.cgroupns_mode | default(omit) }}"
loop: "{{ molecule_yml.platforms }}"
20 changes: 20 additions & 0 deletions molecule/zabbix_agent_tests/common/playbooks/destroy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
- name: Destroy
hosts: localhost
connection: local

gather_facts: false

tasks:
- name: Destroy OS container(s)
community.docker.docker_container:
name: "{{ item.name }}"
state: absent
force_kill: "{{ item.force_kill | default(True) }}"
loop: "{{ molecule_yml.platforms }}"

post_tasks:
- name: Destroy network
community.docker.docker_network:
name: zabbix
state: absent
19 changes: 15 additions & 4 deletions molecule/zabbix_javagateway/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
---
dependency:
name: galaxy
enabled: true
options:
requirements-file: molecule/default/collections.yml

driver:
name: docker
name: default

platforms:
- name: zabbix-server-${MY_MOLECULE_VERSION:-v70}-${MY_MOLECULE_DATABASE:-mysql}-${MY_MOLECULE_CONTAINER:-rockylinux8}
- name: zabbix-jgw-${MY_MOLECULE_VERSION:-v70}-${MY_MOLECULE_CONTAINER:-rockylinux8}
image: geerlingguy/docker-${MY_MOLECULE_IMAGE:-rockylinux8}-ansible:latest
privileged: true
pre_build_image: true
Expand All @@ -15,14 +21,19 @@ platforms:
cgroupns_mode: host
groups:
- ${MY_MOLECULE_VERSION:-v70}

provisioner:
name: ansible
playbooks:
create: ../default/create.docker.yml
destroy: ../default/destroy.docker.yml
env:
ANSIBLE_COLLECTIONS_PATHS: $HOME/.ansible/collections/ansible_collections/community/zabbix
ANSIBLE_ROLES_PATH: $HOME/.ansible/collections/ansible_collections/community/zabbix/roles
# https://github.com/ansible/molecule/issues/4015#issuecomment-1680859724
ANSIBLE_ROLES_PATH: ../../roles
inventory:
group_vars:
all:
ansible_connection: community.docker.docker
zabbix_repo_apt_priority: 1
zabbix_repo_yum_gpg_check: 1
v70:
Expand Down
1 change: 1 addition & 0 deletions molecule/zabbix_javagateway/prepare.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
- name: Prepare
hosts: all

pre_tasks:
- name: "Installing packages on CentOS"
ansible.builtin.yum:
Expand Down
23 changes: 0 additions & 23 deletions molecule/zabbix_proxy/destroy.yml

This file was deleted.

17 changes: 14 additions & 3 deletions molecule/zabbix_proxy/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
---
dependency:
name: galaxy
enabled: true
options:
requirements-file: molecule/default/collections.yml

driver:
name: docker
name: default

platforms:
- name: zabbix-proxy-${MY_MOLECULE_VERSION:-v70}-${MY_MOLECULE_DATABASE:-mysql}-${MY_MOLECULE_CONTAINER:-rockylinux8}
image: geerlingguy/docker-${MY_MOLECULE_IMAGE:-rockylinux8}-ansible:latest
Expand All @@ -18,12 +25,16 @@ platforms:

provisioner:
name: ansible
playbooks:
create: ../default/create.docker.yml
destroy: ../default/destroy.docker.yml
env:
ANSIBLE_COLLECTIONS_PATHS: $HOME/.ansible/collections/ansible_collections/community/zabbix
ANSIBLE_ROLES_PATH: $HOME/.ansible/collections/ansible_collections/community/zabbix/roles
# https://github.com/ansible/molecule/issues/4015#issuecomment-1680859724
ANSIBLE_ROLES_PATH: ../../roles
inventory:
group_vars:
all:
ansible_connection: community.docker.docker
zabbix_repo_apt_priority: 1
zabbix_repo_yum_gpg_check: 1
v70:
Expand Down
43 changes: 1 addition & 42 deletions molecule/zabbix_proxy/prepare.yml
Original file line number Diff line number Diff line change
@@ -1,49 +1,8 @@
---
- name: Prepare
hosts: localhost
connection: local
pre_tasks:
- name: "Create MySQL Container"
docker_container:
name: "{{ item.name }}-db"
image: mysql:8.0
state: started
recreate: true
networks:
- name: zabbix
env:
MYSQL_ROOT_PASSWORD: changeme
no_log: true
with_items: "{{ molecule_yml.platforms }}"
when:
- '"mysql" in item.groups'

- name: "Create postgresql Container"
docker_container:
name: "{{ item.name }}-db"
image: postgres:13
state: started
recreate: true
networks:
- name: zabbix
env:
POSTGRES_PASSWORD: changeme
no_log: true
with_items: "{{ molecule_yml.platforms }}"
when:
- '"pgsql" in item.groups'

- name: Prepare
hosts: all
tasks:
- name: "Create group for imaginary host"
add_host:
name: imaginary-host
groups:
- mysql
- postgresql
changed_when: false

tasks:
- name: "Installing packages on CentOS"
ansible.builtin.yum:
name:
Expand Down
23 changes: 0 additions & 23 deletions molecule/zabbix_repo/destroy.yml

This file was deleted.

Loading
Loading