diff --git a/README.md b/README.md index 755bfa8..28f17c3 100644 --- a/README.md +++ b/README.md @@ -7,3 +7,6 @@ To add a new role: 1. usually meta/main.yml with depend on container 1. README.md 1. Add docs to docs/ + +The following roles have default versions which should probably be overridden: +- wordpress: `wordpress_tag` diff --git a/docs/wordpress.md b/docs/wordpress.md new file mode 100644 index 0000000..137e471 --- /dev/null +++ b/docs/wordpress.md @@ -0,0 +1,21 @@ +# Required variables +These variables are required. Example values included. + +``` +ports: + wordpress_http: 8080 + +docker_vhost_domains: + wordpress: + - wordpress.domain.tld + +database_passwords: + wordpress: secret +``` + +# Optional variables +These variables have default values listed below + +``` +wordpress_tag: php8.1 +``` diff --git a/roles/wordpress/README.md b/roles/wordpress/README.md new file mode 100644 index 0000000..48493be --- /dev/null +++ b/roles/wordpress/README.md @@ -0,0 +1 @@ +Installs wordpress in docker and configures cron diff --git a/roles/wordpress/defaults/main.yml b/roles/wordpress/defaults/main.yml new file mode 100644 index 0000000..15a039e --- /dev/null +++ b/roles/wordpress/defaults/main.yml @@ -0,0 +1,14 @@ +--- + +wordpress_tag: php8.1 + +dockerfile: {} +docker_additional_services: [] + +docker_host_user: false +wordpress_symlinks: false + +wordpress_docker_volumes: + - name: html + path: /var/www/html + diff --git a/roles/wordpress/tasks/main.yml b/roles/wordpress/tasks/main.yml new file mode 100644 index 0000000..0e9d3d3 --- /dev/null +++ b/roles/wordpress/tasks/main.yml @@ -0,0 +1,35 @@ +--- + +- name: Add memcached php extension to container + set_fact: + dockerfile: "{{ dockerfile | combine({'run': ['apt-get update && apt-get install -y libmemcached-dev zlib1g-dev && pecl install memcached-3.2.0 && docker-php-ext-enable memcached']}, list_merge='append') }}" + when: "'memcached' in docker_additional_services" + +- name: Add pdo_mysql php extension to container + set_fact: + dockerfile: "{{ dockerfile | combine({'run': ['docker-php-ext-install -j$(nproc) pdo_mysql']}, list_merge='append') }}" + when: "'pdo_mysql' in wordpress_php_extensions" + +- name: Include additional volume vars + include_vars: "{{ item }}_volume.yml" + loop: "{{ wordpress_additional_volumes | default([]) }}" + +- name: Wordpress container setup + include_role: + name: container + 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_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_PASSWORD: "{{ database_passwords[docker_service_name] }}" + WORDPRESS_CONFIG_EXTRA: | + define('WP_SITEURL', 'https://{{ docker_vhost_domains[docker_service_name][0] }}'); + define('WP_HOME', 'https://{{ docker_vhost_domains[docker_service_name][0] }}'); + diff --git a/roles/wordpress/vars/log_volume.yml b/roles/wordpress/vars/log_volume.yml new file mode 100644 index 0000000..295a6f4 --- /dev/null +++ b/roles/wordpress/vars/log_volume.yml @@ -0,0 +1,6 @@ +--- + +wordpress_log_volume: + - name: logs + path: /var/log/apache2 + diff --git a/roles/wordpress/vars/www_volume.yml b/roles/wordpress/vars/www_volume.yml new file mode 100644 index 0000000..4cd1f68 --- /dev/null +++ b/roles/wordpress/vars/www_volume.yml @@ -0,0 +1,6 @@ +--- + +wordpress_www_volume: + - name: www + path: /var/www +