---
- name: "β³ Wait until WordPress core files exist in {{ WORDPRESS_DOCKER_HTML_PATH }}"
shell: >
container exec {{ WORDPRESS_CONTAINER_ADDRESS }}
test -f {{ WORDPRESS_DOCKER_HTML_PATH }}/wp-includes/version.php
register: wp_core_present
retries: 60
delay: 2
changed_when: false
until: wp_core_present.rc == 0
failed_when: false
- name: "π± Seed WordPress core into volume if missing"
when: wp_core_present.rc != 0
shell: >
container exec -u root {{ WORDPRESS_CONTAINER_ADDRESS }} sh -lc
'set -e;
echo "[seed] WP core missing, copying from /usr/src/wordpress -> {{ WORDPRESS_DOCKER_HTML_PATH }}";
cp -a /usr/src/wordpress/. {{ WORDPRESS_DOCKER_HTML_PATH }}/;
chown -R {{ WORDPRESS_USER }}:{{ WORDPRESS_USER }} {{ WORDPRESS_DOCKER_HTML_PATH }}'
changed_when: true
- name: "βΆοΈ Run WordPress core install via WP CLI"
no_log: "{{ MASK_CREDENTIALS_IN_LOGS | bool }}"
shell: >
container exec -u {{ WORDPRESS_USER }} -e WP_ADMIN_PASSWORD {{ WORDPRESS_CONTAINER_ADDRESS }}
sh -c 'exec wp core install "$@" --admin_password="$WP_ADMIN_PASSWORD"' _
--url={{ WORDPRESS_URL | quote }}
--title={{ WORDPRESS_TITLE | quote }}
--admin_user={{ WORDPRESS_ADMIN_USER | quote }}
--admin_email={{ WORDPRESS_ADMIN_EMAIL | quote }}
--path={{ WORDPRESS_DOCKER_HTML_PATH | quote }}
environment:
WP_ADMIN_PASSWORD: "{{ WORDPRESS_ADMIN_PASSWORD }}"
- name: "π Ensure the WordPress administrator exists and accepts the declared password"
ansible.builtin.shell:
cmd: >-
container exec -i -u {{ WORDPRESS_USER }}
-e WP_REALIGN_LOGIN -e WP_REALIGN_PASSWORD -e WP_REALIGN_EMAIL
{{ WORDPRESS_CONTAINER_ADDRESS }}
wp eval-file - --path={{ WORDPRESS_DOCKER_HTML_PATH | quote }}
stdin: "{{ lookup('file', 'php/realign_admin_password.php') }}"
environment:
WP_REALIGN_LOGIN: "{{ WORDPRESS_ADMIN_USER }}"
WP_REALIGN_PASSWORD: "{{ WORDPRESS_ADMIN_PASSWORD }}"
WP_REALIGN_EMAIL: "{{ WORDPRESS_ADMIN_EMAIL }}"
register: wordpress_admin_realign
changed_when: wordpress_admin_realign.stdout is search('\[CHANGED\]')
failed_when: >-
wordpress_admin_realign.rc != 0
or wordpress_admin_realign.stdout is search('\[FAIL\]')
no_log: "{{ MASK_CREDENTIALS_IN_LOGS | bool }}"