initial commit
This commit is contained in:
parent
9be0197a47
commit
8ae0eb96a9
122
setup_wordpress_site.yml
Normal file
122
setup_wordpress_site.yml
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
---
|
||||||
|
- name: Setup a new WordPress site
|
||||||
|
hosts: localhost
|
||||||
|
tasks:
|
||||||
|
- name: Create the directory for the new website
|
||||||
|
file:
|
||||||
|
path: "/mnt/efs/{{ site_name }}"
|
||||||
|
state: directory
|
||||||
|
owner: www-data
|
||||||
|
group: www-data
|
||||||
|
|
||||||
|
- name: Download WordPress
|
||||||
|
get_url:
|
||||||
|
url: "https://wordpress.org/latest.zip"
|
||||||
|
dest: "/tmp/wordpress.zip"
|
||||||
|
mode: '0644'
|
||||||
|
|
||||||
|
- name: Extract WordPress
|
||||||
|
unarchive:
|
||||||
|
src: "/tmp/wordpress.zip"
|
||||||
|
dest: "/mnt/efs/{{ site_name }}"
|
||||||
|
remote_src: yes
|
||||||
|
creates: "/mnt/efs/{{ site_name }}/index.php"
|
||||||
|
|
||||||
|
- name: Move WordPress files to root of site directory
|
||||||
|
command: mv /mnt/efs/{{ site_name }}/wordpress/* /mnt/efs/{{ site_name }}/
|
||||||
|
args:
|
||||||
|
removes: "/mnt/efs/{{ site_name }}/wordpress"
|
||||||
|
become: true
|
||||||
|
|
||||||
|
- name: Change ownership of WordPress files
|
||||||
|
file:
|
||||||
|
path: "/mnt/efs/{{ site_name }}"
|
||||||
|
state: directory
|
||||||
|
recurse: yes
|
||||||
|
owner: www-data
|
||||||
|
group: www-data
|
||||||
|
|
||||||
|
- name: Copy wp-config.php
|
||||||
|
copy:
|
||||||
|
src: "/mnt/efs/common/wp-config.php"
|
||||||
|
dest: "/mnt/efs/{{ site_name }}/wp-config.php"
|
||||||
|
owner: www-data
|
||||||
|
group: www-data
|
||||||
|
mode: '0644'
|
||||||
|
|
||||||
|
- name: Create nginx directory
|
||||||
|
file:
|
||||||
|
path: "/mnt/efs/{{ site_name }}/nginx"
|
||||||
|
state: directory
|
||||||
|
owner: www-data
|
||||||
|
group: www-data
|
||||||
|
|
||||||
|
- name: Copy nginx configuration template
|
||||||
|
template:
|
||||||
|
src: "/mnt/efs/common/wordpress.conf"
|
||||||
|
dest: "/mnt/efs/{{ site_name }}/nginx/wordpress.conf"
|
||||||
|
owner: www-data
|
||||||
|
group: www-data
|
||||||
|
mode: '0644'
|
||||||
|
# Modify template for domain name and docker name
|
||||||
|
# Assume the template uses {{ domain_name }} and {{ docker_name }} variables
|
||||||
|
vars:
|
||||||
|
domain_name: "{{ domain_name }}"
|
||||||
|
docker_name: "{{ site_name }}"
|
||||||
|
|
||||||
|
- name: Generate Docker Compose snippet for FPM and Nginx
|
||||||
|
copy:
|
||||||
|
content: |
|
||||||
|
{{ site_name }}_fpm:
|
||||||
|
image: wordpress:php8.1-fpm
|
||||||
|
networks:
|
||||||
|
- shared_network
|
||||||
|
volumes:
|
||||||
|
- /mnt/efs/{{ site_name }}/wp-content:/var/www/html/wp-content
|
||||||
|
- /mnt/efs/{{ site_name }}/wp-config.php:/var/www/html/wp-config.php
|
||||||
|
- /mnt/efs/{{ site_name }}/nginx:/etc/nginx/conf.d:ro
|
||||||
|
- /mnt/efs/common/php.ini:/usr/local/etc/php/conf.d/custom.ini
|
||||||
|
environment:
|
||||||
|
- WORDPRESS_DB_HOST=mysql
|
||||||
|
- WORDPRESS_DB_USER={{ db_user }}
|
||||||
|
- WORDPRESS_DB_PASSWORD={{ db_password }}
|
||||||
|
- WORDPRESS_DB_NAME={{ db_name }}
|
||||||
|
deploy:
|
||||||
|
replicas: 1
|
||||||
|
labels:
|
||||||
|
- "traefik.http.routers.{{ site_name }}_fpm-https.rule=Host(`{{ domain_name }}`)"
|
||||||
|
- "traefik.http.routers.{{ site_name }}_fpm-https.entrypoints=https"
|
||||||
|
- "traefik.http.routers.{{ site_name }}_fpm-https.tls.certresolver=myresolver"
|
||||||
|
- "traefik.http.services.{{ site_name }}_fpm-service.loadbalancer.server.port=9000"
|
||||||
|
|
||||||
|
{{ site_name }}_nginx:
|
||||||
|
image: nginx:latest
|
||||||
|
networks:
|
||||||
|
- shared_network
|
||||||
|
volumes:
|
||||||
|
- /mnt/efs/{{ site_name }}/nginx:/etc/nginx/conf.d:ro
|
||||||
|
- /mnt/efs/{{ site_name }}:/var/www/html
|
||||||
|
deploy:
|
||||||
|
replicas: 1
|
||||||
|
labels:
|
||||||
|
- "traefik.http.routers.{{ site_name }}_nginx-http.rule=Host(`{{ domain_name }}`)"
|
||||||
|
- "traefik.http.routers.{{ site_name }}_nginx-http.entrypoints=http"
|
||||||
|
- "traefik.http.routers.{{ site_name }}_nginx-http.middlewares=https-redirect"
|
||||||
|
- "traefik.http.routers.{{ site_name }}_nginx-https.rule=Host(`{{ domain_name }}`)"
|
||||||
|
- "traefik.http.routers.{{ site_name }}_nginx-https.entrypoints=https"
|
||||||
|
- "traefik.http.routers.{{ site_name }}_nginx-https.tls.certresolver=myresolver"
|
||||||
|
- "traefik.http.services.{{ site_name }}_nginx-service.loadbalancer.server.port=80"
|
||||||
|
depends_on:
|
||||||
|
- {{ site_name }}_fpm
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '1'
|
||||||
|
memory: 1024M
|
||||||
|
dest: "/mnt/efs/{{ site_name }}/docker-compose-{{ site_name }}.yml"
|
||||||
|
mode: '0644'
|
||||||
|
vars:
|
||||||
|
db_user: "{{ db_user }}"
|
||||||
|
db_password: "{{ db_password }}"
|
||||||
|
db_name: "{{ db_name }}"
|
||||||
|
domain_name: "{{ domain_name }}"
|
||||||
|
docker_name: "{{ site_name }}"
|
||||||
Loading…
x
Reference in New Issue
Block a user