diff --git a/dev/host_vars/wordpress.yml b/dev/host_vars/wordpress.yml new file mode 100644 index 0000000..2a2ad1f --- /dev/null +++ b/dev/host_vars/wordpress.yml @@ -0,0 +1,23 @@ +# base +allow_reboot: false +manage_network: false + +# docker +docker_users: + - vagrant + +# traefik +traefik_version: latest +traefik_dashboard: true +traefik_domain: traefik.vm.krislamo.org +traefik_auth: admin:$apr1$T1l.BCFz$Jyg8msXYEAUi3LLH39I9d1 # admin:admin +#traefik_acme_email: realemail@example.com # Let's Encrypt settings +#traefik_production: true + +# container settings +wordpress_version: latest +wordpress_domain: wordpress.vm.krislamo.org + +# database settings +wordpress_dbversion: latest +wordpress_dbpass: password diff --git a/dev/wordpress.yml b/dev/wordpress.yml new file mode 100644 index 0000000..64277da --- /dev/null +++ b/dev/wordpress.yml @@ -0,0 +1,10 @@ +- name: Install WordPress server (docker) + hosts: all + become: true + vars_files: + - host_vars/wordpress.yml + roles: + - base + - docker + - traefik + - wordpress diff --git a/roles/wordpress/defaults/main.yml b/roles/wordpress/defaults/main.yml index f490576..1da900a 100644 --- a/roles/wordpress/defaults/main.yml +++ b/roles/wordpress/defaults/main.yml @@ -1,6 +1,12 @@ -mariadb_name: mariadb -mariadb_version: latest +# container names +wordpress_container: wordpress +wordpress_dbcontainer: "{{ wordpress_container }}-db" -wordpress_version: latest -wordpress_dbname: wordpress -wordpress_dbuser: wordpress +# database settings +wordpress_dbname: "{{ wordpress_container }}" +wordpress_dbuser: "{{ wordpress_dbname }}" + +# host mounts +wordpress_root: "/opt/wordpress" +wordpress_docroot: "{{ wordpress_root }}/public_html" +wordpress_dbroot: "{{ wordpress_root }}/database" diff --git a/roles/wordpress/tasks/main.yml b/roles/wordpress/tasks/main.yml index 23bced7..8d30faf 100644 --- a/roles/wordpress/tasks/main.yml +++ b/roles/wordpress/tasks/main.yml @@ -1,9 +1,9 @@ -- name: Start MariaDB container +- name: Start WordPress database container docker_container: - name: "{{ mariadb_name }}" - image: mariadb:{{ mariadb_version }} + name: "{{ wordpress_dbcontainer }}" + image: mariadb:{{ wordpress_dbversion }} restart_policy: always - volumes: mariadb:/var/lib/mysql + volumes: "{{ wordpress_dbroot }}:/var/lib/mysql" env: MYSQL_RANDOM_ROOT_PASSWORD: "true" MYSQL_DATABASE: "{{ wordpress_dbname }}" @@ -12,17 +12,22 @@ - name: Start WordPress container docker_container: - name: "{{ wordpress_name }}" + name: "{{ wordpress_container }}" image: wordpress:{{ wordpress_version }} restart_policy: always - volumes: wordpress:/var/www/html + volumes: + - "{{ wordpress_docroot }}:/var/www/html" labels: traefik.http.routers.wordpress.rule: "Host(`{{ wordpress_domain }}`)" + traefik.http.routers.wordpress.entrypoints: websecure + traefik.http.routers.wordpress.tls.certresolver: letsencrypt + traefik.http.routers.wordpress.middlewares: securehttps@file + traefik.docker.network: traefik traefik.enable: "true" links: - - "{{ mariadb_name }}" + - "{{ wordpress_dbcontainer }}" env: WORDPRESS_DB_NAME: "{{ wordpress_dbname }}" WORDPRESS_DB_USER: "{{ wordpress_dbuser }}" WORDPRESS_DB_PASSWORD: "{{ wordpress_dbpass }}" - WORDPRESS_DB_HOST: "{{ mariadb_name }}" + WORDPRESS_DB_HOST: "{{ wordpress_dbcontainer }}" diff --git a/update-hosts.sh b/update-hosts.sh index 9be49ff..66886b2 100755 --- a/update-hosts.sh +++ b/update-hosts.sh @@ -10,6 +10,7 @@ HOST[4]="prom.${DOMAIN}" HOST[5]="grafana.${DOMAIN}" HOST[6]="nginx.${DOMAIN}" HOST[7]="vault.${DOMAIN}" +HOST[8]="wordpress.${DOMAIN}" # Get Vagrantbox guest IP VAGRANT_OUTPUT=$(vagrant ssh -c "hostname -I | cut -d' ' -f2" 2>/dev/null)