diff --git a/roles/wordpress/defaults/main.yml b/roles/wordpress/defaults/main.yml index d25e50f..b2fcab9 100644 --- a/roles/wordpress/defaults/main.yml +++ b/roles/wordpress/defaults/main.yml @@ -1,5 +1,7 @@ --- +docker_service_name: wordpress + wordpress_tag: php8.1 docker_additional_services: [] diff --git a/roles/wordpress/molecule/default/converge.yml b/roles/wordpress/molecule/default/converge.yml new file mode 100644 index 0000000..00c35b7 --- /dev/null +++ b/roles/wordpress/molecule/default/converge.yml @@ -0,0 +1,25 @@ +--- +- name: Converge + hosts: all + tasks: + - name: "Include wordpress" + ansible.builtin.include_role: + name: "wordpress" + vars: + docker_additional_services: + - memcached + - redis + wordpress_php_extensions: + - pdo_mysql + wordpress_additional_volumes: + - www + - log + database_passwords: + wordpress: molecule + docker_vhost_domains: + wordpress: + - localhost + admin_email: molecule@example.com + ports: + wordpress: + http: 28001 diff --git a/roles/wordpress/molecule/default/molecule.yml b/roles/wordpress/molecule/default/molecule.yml new file mode 100644 index 0000000..2de74e4 --- /dev/null +++ b/roles/wordpress/molecule/default/molecule.yml @@ -0,0 +1,15 @@ +--- +dependency: + name: galaxy +driver: + name: podman +platforms: + - name: bullseye + image: git.uumas.fi/uumas/molecule-testbed:bullseye-docker + command: /lib/systemd/systemd + pre_build_image: true + privileged: true +provisioner: + name: ansible +verifier: + name: ansible diff --git a/roles/wordpress/molecule/default/verify.yml b/roles/wordpress/molecule/default/verify.yml new file mode 100644 index 0000000..b43fc52 --- /dev/null +++ b/roles/wordpress/molecule/default/verify.yml @@ -0,0 +1,44 @@ +--- +# This is an example playbook to execute Ansible tests. + +- name: Verify + hosts: all + gather_facts: false + tasks: + - name: Ensure https://localhost responds appropriately + ansible.builtin.uri: + url: https://localhost + validate_certs: false + return_content: true + register: get_localhost + + - name: "Assert caddy responded on https://localhost" + ansible.builtin.assert: + that: "(get_localhost.server | split(', '))[0] == 'Caddy'" + - name: "Assert apache responded on https://localhost" + ansible.builtin.assert: + that: "(get_localhost.server | split(', '))[1].startswith('Apache')" + - name: Assert there was a redirect + ansible.builtin.assert: + that: "get_localhost.redirected == true" + + - name: Get docker host info + community.docker.docker_host_info: + volumes: true + register: docker_host_out + - name: Assert all containers are running + ansible.builtin.assert: + that: docker_host_out.host_info.Containers == docker_host_out.host_info.ContainersRunning + msg: There should have been {{ docker_host_out.host_info.Containers }} containers running but there were {{ docker_host_out.host_info.ContainersRunning }} + - name: Assert correct number of containers were created + ansible.builtin.assert: + that: docker_host_out.host_info.Containers == 4 + msg: There should have been 4 containers created but there were {{ docker_host_out.host_info.Containers }} + - name: Assert correct number of images were pulled + ansible.builtin.assert: + that: docker_host_out.host_info.Images == 6 + msg: There should have been 4 images present but there were {{ docker_host_out.host_info.Images }} + - name: Assert no volumes were created + ansible.builtin.assert: + that: docker_host_out.volumes | length == 0 + msg: There should have been no volumes present but there were {{ docker_host_out.volumes | length }} diff --git a/roles/wordpress/tasks/main.yml b/roles/wordpress/tasks/main.yml index 0a77772..bba4fa7 100644 --- a/roles/wordpress/tasks/main.yml +++ b/roles/wordpress/tasks/main.yml @@ -6,16 +6,16 @@ - name: Set docker service full name (required because docker_env uses it) set_fact: - docker_service_name: "wordpress_{{ docker_service_suffix }}" + docker_service_name: "wordpress-{{ docker_service_suffix }}" when: docker_service_suffix is defined - name: Add memcached php extension to container set_fact: dockerfile: > - "{{ dockerfile + - ['RUN apt-get update && \ - apt-get install -y libmemcached-dev libssl-dev zlib1g-dev && \ - pecl install memcached-3.2.0 && docker-php-ext-enable memcached'] }}" + {{ dockerfile + + ['RUN apt-get update && + apt-get install -y libmemcached-dev libssl-dev zlib1g-dev && + pecl install memcached-3.2.0 && docker-php-ext-enable memcached'] }} when: "'memcached' in docker_additional_services" - name: Add pdo_mysql php extension to container @@ -28,19 +28,19 @@ loop: "{{ wordpress_additional_volumes | default([]) }}" - name: Wordpress container setup - include_role: - name: container + ansible.builtin.include_role: + name: service vars: docker_service: wordpress docker_image: wordpress:{{ wordpress_tag }} docker_image_http_port: 80 docker_database: mariadb - docker_volumes: "{{ wordpress_docker_volumes + wordpress_www_volume + wordpress_log_volume }}" + docker_mounts: "{{ wordpress_docker_mounts + wordpress_www_volume + wordpress_log_volume }}" docker_volume_type: bind docker_env: - WORDPRESS_DB_HOST: "{{ docker_service_name }}_db" - WORDPRESS_DB_NAME: "{{ docker_service_name }}" - WORDPRESS_DB_USER: "{{ docker_service_name }}" + WORDPRESS_DB_HOST: "{{ docker_service_name }}-db" + WORDPRESS_DB_NAME: "{{ docker_service_name | replace('-', '_') }}" + WORDPRESS_DB_USER: "{{ docker_service_name | replace('-', '_') }}" WORDPRESS_DB_PASSWORD: "{{ database_passwords[docker_service_name] }}" WORDPRESS_CONFIG_EXTRA: | define('WP_SITEURL', 'https://{{ docker_vhost_domains[docker_service_name][0] }}'); diff --git a/roles/wordpress/vars/main.yml b/roles/wordpress/vars/main.yml index 0b3b0e5..bfda0a9 100644 --- a/roles/wordpress/vars/main.yml +++ b/roles/wordpress/vars/main.yml @@ -1,6 +1,6 @@ --- -wordpress_docker_volumes: +wordpress_docker_mounts: - name: html path: /var/www/html - template: php.ini