Private
Public Access
2
0

7 Commits
v0.3.3 ... dev

14 changed files with 315 additions and 207 deletions

2
.gitignore vendored
View File

@@ -3,3 +3,5 @@
__pycache__/ __pycache__/
infra-*/ infra-*/
.DS_Store .DS_Store
/seb4itik/byow/roles/elastic/
/seb4itik/byow/roles/metabase/

View File

@@ -5,3 +5,17 @@ linux:
ubuntu2404lts: ubuntu2404lts:
vars: vars:
ansible_python_interpreter: "/usr/bin/python3.12" ansible_python_interpreter: "/usr/bin/python3.12"
test1:
hosts:
www1:
www2:
www3:
test2:
hosts:
www4:
test3:
hosts:
www5:

View File

@@ -77,9 +77,21 @@
- "DNS:{{ ansible_fqdn }}" - "DNS:{{ ansible_fqdn }}"
- "DNS:{{ ansible_hostname }}" - "DNS:{{ ansible_hostname }}"
# Sites # Sites
- cn: "test.lab" - cn: "test1.lab"
domains: domains:
- "DNS:test.lab" - "DNS:test1.lab"
- "DNS:{{ ansible_fqdn }}"
- "DNS:{{ ansible_hostname }}"
- "IP:{{ ansible_default_ipv4.address }}"
- cn: "test2.lab"
domains:
- "DNS:test2.lab"
- "DNS:{{ ansible_fqdn }}"
- "DNS:{{ ansible_hostname }}"
- "IP:{{ ansible_default_ipv4.address }}"
- cn: "test3.lab"
domains:
- "DNS:test3.lab"
- "DNS:{{ ansible_fqdn }}" - "DNS:{{ ansible_fqdn }}"
- "DNS:{{ ansible_hostname }}" - "DNS:{{ ansible_hostname }}"
- "IP:{{ ansible_default_ipv4.address }}" - "IP:{{ ansible_default_ipv4.address }}"
@@ -144,17 +156,6 @@
- "vars/common.yml" - "vars/common.yml"
- "vars/secrets.yml" - "vars/secrets.yml"
vars: vars:
local_ca_certs_ca_passphrase: "{{ secrets.ca.passphrase }}"
local_ca_certs_default_country_name: "{{ common.certificates.country_name }}"
local_ca_certs_default_locality_name: "{{ common.certificates.locality_name }}"
local_ca_certs_default_organization_name: "{{ common.certificates.organization_name }}"
local_ca_certs_default_email_address: "{{ common.certificates.email_address }}"
local_ca_certs_list:
- cn: "{{ ansible_fqdn }}"
domains:
- "DNS:{{ ansible_fqdn }}"
- "DNS:{{ ansible_hostname }}"
- "IP:{{ ansible_default_ipv4.address }}"
mysql_databases: mysql_databases:
- "wordpress" - "wordpress"
mysql_users: mysql_users:
@@ -163,7 +164,6 @@
priv: "wordpress.*:ALL" priv: "wordpress.*:ALL"
host: "{{ ansible_default_ipv4.network }}/255.255.255.0" host: "{{ ansible_default_ipv4.network }}/255.255.255.0"
roles: roles:
- "local_ca_certs"
- "mysql" - "mysql"
tags: tags:
- "bdd" - "bdd"
@@ -191,34 +191,23 @@
tags: tags:
- "nfs" - "nfs"
- name: HTTP Servers - name: HTTP Servers (test1.lab)
hosts: www hosts: test1
gather_facts: false gather_facts: false
vars_files: vars_files:
- "vars/common.yml" - "vars/common.yml"
- "vars/secrets.yml" - "vars/secrets.yml"
vars: vars:
local_ca_certs_ca_passphrase: "{{ secrets.ca.passphrase }}"
local_ca_certs_default_country_name: "{{ common.certificates.country_name }}"
local_ca_certs_default_locality_name: "{{ common.certificates.locality_name }}"
local_ca_certs_default_organization_name: "{{ common.certificates.organization_name }}"
local_ca_certs_default_email_address: "{{ common.certificates.email_address }}"
local_ca_certs_list:
- cn: "{{ ansible_fqdn }}"
domains:
- "DNS:{{ ansible_fqdn }}"
- "DNS:{{ ansible_hostname }}"
- "IP:{{ ansible_default_ipv4.address }}"
nfs_client_mounts: nfs_client_mounts:
- mount_point: "/var/www/wordpress" - mount_point: "/var/www/wordpress"
server: "nfs1:/srv/wordpress" server: "nfs1:/srv/wordpress"
owner: 1001 owner: 1001
group: 33 group: 33
wordpress_create_master: "www1" wordpress_create_master: "www1"
wordpress_site: "test.lab" wordpress_site: "test1.lab"
wordpress_url: "test.lab" wordpress_url: "test1.lab"
wordpress_site_title: "Lab Test" wordpress_site_title: "Lab Test I"
wordpress_admin_user: "spock" wordpress_admin_user: "spock1"
wordpress_admin_password: "{{ secrets.wordpress.admin_password }}" wordpress_admin_password: "{{ secrets.wordpress.admin_password }}"
wordpress_admin_email: "seb@itik.fr" wordpress_admin_email: "seb@itik.fr"
wordpress_themes: ["twentytwentyfive"] wordpress_themes: ["twentytwentyfive"]
@@ -226,8 +215,63 @@
wordpress_db_host: "bdd1" wordpress_db_host: "bdd1"
wordpress_db_pass: "{{ secrets.wordpress.mysql_password }}" wordpress_db_pass: "{{ secrets.wordpress.mysql_password }}"
roles: roles:
- "local_ca_certs"
- "nfs_client" - "nfs_client"
- "wordpress" - "wordpress"
tags: tags:
- "www" - "test1"
- name: HTTP Server (test2.lab)
hosts: test2
gather_facts: false
vars_files:
- "vars/common.yml"
- "vars/secrets.yml"
vars:
mysql_databases:
- "wordpress"
mysql_users:
- name: "wordpress"
password: "{{ secrets.wordpress.mysql_password }}"
priv: "wordpress.*:ALL"
wordpress_site: "test2.lab"
wordpress_url: "test2.lab"
wordpress_site_title: "Lab Test II"
wordpress_admin_user: "spock2"
wordpress_admin_password: "{{ secrets.wordpress.admin_password }}"
wordpress_admin_email: "seb@itik.fr"
wordpress_themes: ["twentytwentyfive"]
wordpress_active_theme: "twentytwentyfive"
wordpress_db_pass: "{{ secrets.wordpress.mysql_password }}"
roles:
- "mysql"
- "wordpress"
tags:
- "test2"
- name: HTTP Server (test3.lab)
hosts: test3
gather_facts: false
vars_files:
- "vars/common.yml"
- "vars/secrets.yml"
vars:
mysql_databases:
- "wordpress"
mysql_users:
- name: "wordpress"
password: "{{ secrets.wordpress.mysql_password }}"
priv: "wordpress.*:ALL"
wordpress_site: "test3.lab"
wordpress_url: "test3.lab"
wordpress_site_title: "Lab Test III"
wordpress_admin_user: "spock3"
wordpress_admin_password: "{{ secrets.wordpress.admin_password }}"
wordpress_admin_email: "seb@itik.fr"
wordpress_themes: ["twentytwentyfive"]
wordpress_active_theme: "twentytwentyfive"
wordpress_db_pass: "{{ secrets.wordpress.mysql_password }}"
roles:
- "mysql"
- "wordpress"
tags:
- "test3"

View File

@@ -11,8 +11,9 @@ common:
datacenter: "lab" datacenter: "lab"
sites: sites:
- id: "test"
name: "test.lab" - id: "test1"
name: "test1.lab"
paths: paths:
- addrs: - addrs:
- "http://www1" - "http://www1"
@@ -23,8 +24,8 @@ common:
proxy_active_checks_status: "301" proxy_active_checks_status: "301"
proxy_passive_checks: false proxy_passive_checks: false
custom_cert: true custom_cert: true
custom_cert_file: "/etc/ssl/certs/test.lab.crt" custom_cert_file: "/etc/ssl/certs/test1.lab.crt"
custom_cert_key_file: "/etc/ssl/private/test.lab.key" custom_cert_key_file: "/etc/ssl/private/test1.lab.key"
rate_limit_events: 10 rate_limit_events: 10
rate_limit_window: "1m" rate_limit_window: "1m"
# filter_whitelist: ["10.60.117.1"] # filter_whitelist: ["10.60.117.1"]
@@ -46,3 +47,45 @@ common:
style-src-attr: "'self' 'unsafe-inline'" style-src-attr: "'self' 'unsafe-inline'"
style-src-elem: "'self' 'unsafe-inline'" style-src-elem: "'self' 'unsafe-inline'"
frame-src: "'self' blob:" frame-src: "'self' blob:"
- id: "test2"
name: "test2.lab"
paths:
- addrs:
- "http://www4"
custom_cert: true
custom_cert_file: "/etc/ssl/certs/test2.lab.crt"
custom_cert_key_file: "/etc/ssl/private/test2.lab.key"
crs_plugins:
- "wordpress-rule-exclusions"
header_cross_origin_embedder_policy: "unsafe-none"
header_content_security_policy:
worker-src: "'self' blob:"
img-src: "'self' data: https://secure.gravatar.com/avatar/ https://s.w.org/images/"
font-src: "'self' data:"
script-src: "'self' 'unsafe-eval'"
script-src-elem: "'self' 'unsafe-inline'"
style-src-attr: "'self' 'unsafe-inline'"
style-src-elem: "'self' 'unsafe-inline'"
frame-src: "'self' blob:"
- id: "test3"
name: "test3.lab"
paths:
- addrs:
- "http://www4"
custom_cert: true
custom_cert_file: "/etc/ssl/certs/test3.lab.crt"
custom_cert_key_file: "/etc/ssl/private/test3.lab.key"
crs_plugins:
- "wordpress-rule-exclusions"
header_cross_origin_embedder_policy: "unsafe-none"
header_content_security_policy:
worker-src: "'self' blob:"
img-src: "'self' data: https://secure.gravatar.com/avatar/ https://s.w.org/images/"
font-src: "'self' data:"
script-src: "'self' 'unsafe-eval'"
script-src-elem: "'self' 'unsafe-inline'"
style-src-attr: "'self' 'unsafe-inline'"
style-src-elem: "'self' 'unsafe-inline'"
frame-src: "'self' blob:"

View File

@@ -1,24 +1,29 @@
$ANSIBLE_VAULT;1.1;AES256 $ANSIBLE_VAULT;1.1;AES256
30356233646632316565363533613033376333306433626366623230633838356230363461383135 64353736626438653965303633376231356361353433626432333862363638353937386635396430
3834363137353762316262363134643763353632306362640a613538306235633565356563613532 6339336333323062333732626539333761396234316535360a376361326263393431626638373165
64643862613431313666363130376338356538323035346532636331316637646235346236333331 34663632643038643630386331663035383738333364393636376137643037623939313136373665
6336313466313434640a316437343866343061383838383362633638363633363535363330333463 3238356630313039310a636661613764373133323033356339373334613331366337343935313334
64616330333361643166663061306338616265316262646339663438306465623231336139653764 30326631386562666336363735316234616339396633356633343339313562386530303863613331
63353862303538636636306430333464383339316233326133623564613337306266353730616564 30646638313535316433393361613461613932393933613932656362653666383638333739383831
63366562626135626136663665353663323265346438346131363838383263663665653937393066 64363266336438373635376663616432346464303365316564326536623133356264326462393537
32353061396661346138386561633734353634363164663438656331383663323035613264653265 38646261303962373465663266643139393366616133346662666331326539353635616662326138
38646164633465363238623232393731633761393466326466653430316532633139636533613033 64393163396339336231303765366130323530336433666361353161376536326465333438326337
39303764363861353666356239306366633662643865663033383235336663623632373566383330 64633731626636666430656335303431623663333464383138393231633435323338303862666634
32363334653936393962633266666439623130616161373231313037343735616361303131383230 33373664383663393637623735656338346566626431333964366637636431653461656363396463
62333863313432353536363962623161383434363136316264663061343038633065316232313334 65343033326433343863393865663236623133306663636237383532306137316534313436323137
38653233356135623431343166356464666663636330373663303663326561363333633837303337 66346630383133383430383263656137653462656665313664626366613135323463613737346261
66616464393661653835636665353439353539393530623730656331316235643032336337616436 32643833616135363066633632313863373563366362366534353762616162626239306135356164
64373163373932653038613765633061306331363962333932383564333735353534646637303237 31323631323939343763643964656330363133383437306236646466326266333964613162623666
62376561303364386662343331373631343166326261636362623432323437643735663437333564 61623139616466653438663065373635653162653461613131383531373632633235336332333935
39323961626131616334323131393963323231626638393231326631306337306230666138323830 30666430396634373563646439353563646536353966653635323932306261383863653137333766
63373331636234646431666332633633353637313338353536663539303531663938336132356134 39616564373330366230333562626435343934333331623761373336393937376562343433386334
30323631646666396239323261366435656434623537343935393531633966643135633561633636 31386663613031613835353662373138663835373235613462316232373533626439343631353632
31626266366432613936643937646537636164646334316562396639363132313862616433653535 36366133313862336336663134353935306661613935363331663136323930616361396431653439
34666537653433663466323730373363363064393334386133366365383435616436623963626634 37356666363331303637326663623561346236356266323731383632323835336362633362646237
31376162306565623262663732356463616464376231356432316137373138356466393663653035 31376230633165306135306537656434666630343865343333663762646361323462303031303935
613336396164633836626637393036303336 36356132313934323235343436303032623461343630623464353663303138653566313938653635
36613037376430313966356237323362353862626139663339323834326637313636326534343031
37373664653361373064666362343165613063303336663330643064643331383432653333353330
38646535363835653039636531616632313130313963656435303739326530633434316237303562
66646631393563356136303537303563346537366633316437373231313265633133653431323031
33393937356430363739

View File

@@ -16,4 +16,6 @@ vms = {
www1 = {}, www1 = {},
www2 = {}, www2 = {},
www3 = {}, www3 = {},
www4 = {},
www5 = {},
} }

View File

@@ -1,6 +1,6 @@
namespace: "seb4itik" namespace: "seb4itik"
name: "byow" name: "byow"
version: "0.2.1" version: "0.3.0"
readme: "README.md" readme: "README.md"
authors: authors:
- "S. Namèche <sebastien@itik.fr>" - "S. Namèche <sebastien@itik.fr>"

View File

@@ -8,7 +8,7 @@ local_ca_certs_default_not_before: "-1d" # valid since yesterday
# Required # Required
local_ca_certs_ca_passphrase: null local_ca_certs_ca_passphrase: null
local_ca_certs_list: {} local_ca_certs_list: []
# - cn: <string> # - cn: <string>
# domains: <array of strings> # domains: <array of strings>
# country_name: <string> # country_name: <string>

View File

@@ -4,3 +4,4 @@ mysql_users: []
# - name: <string # - name: <string
# password: <string> # password: <string>
# priv: <string> # priv: <string>
# host: <string> (default "127.0.0.1")

View File

@@ -28,4 +28,4 @@
name: "{{ item.name }}" name: "{{ item.name }}"
password: "{{ item.password }}" password: "{{ item.password }}"
priv: "{{ item.priv }}" priv: "{{ item.priv }}"
host: "{{ item.host }}" host: "{{ item.host | default('127.0.0.1') }}"

View File

@@ -0,0 +1,5 @@
# BYOW - Build Your Own WAF
A WAF _à la carte_.
## Squid

View File

@@ -13,7 +13,7 @@ wordpress_active_theme: null
wordpress_user: "wordpress" wordpress_user: "wordpress"
wordpress_plugins: [] wordpress_plugins: []
wordpress_locale: "fr_FR" wordpress_locale: "fr_FR"
wordpress_db_host: "localhost" wordpress_db_host: "127.0.0.1"
wordpress_db_name: "{{ wordpress_user }}" wordpress_db_name: "{{ wordpress_user }}"
wordpress_db_user: "{{ wordpress_user }}" wordpress_db_user: "{{ wordpress_user }}"
wordpress_db_prefix: "wp_" wordpress_db_prefix: "wp_"

View File

@@ -0,0 +1,133 @@
- name: Téléchargement de Wordpress
become: true
become_user: "{{ wordpress_user }}"
ansible.builtin.command:
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
cmd: "wp core download --locale='{{ wordpress_locale }}' --skip-content"
creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-config-sample.php"
# TODO: https://make.wordpress.org/cli/handbook/references/config/#config-files
- name: Configuration de Wordpress
become: true
become_user: "{{ wordpress_user }}"
ansible.builtin.shell:
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
executable: "/usr/bin/bash"
cmd: |
set -o pipefail
wp config create \
--dbhost='{{ wordpress_db_host }}' \
--dbname='{{ wordpress_db_name }}' \
--dbuser='{{ wordpress_db_user }}' \
--dbpass='{{ wordpress_db_pass }}' \
--dbprefix='{{ wordpress_db_prefix }}' \
--dbcharset='{{ wordpress_db_charset }}' \
--extra-php <<PHP
define('FS_METHOD', 'direct');
define('FORCE_SSL_ADMIN', false);
define('WP_HOME', 'https://{{ wordpress_site }}');
define('WP_SITEURL', 'https://{{ wordpress_site }}');
error_reporting(0);
@ini_set('display_errors', 0);
define('DISALLOW_FILE_EDIT', true);
if (isset(\$_SERVER['HTTP_X_FORWARDED_PROTO']) && \$_SERVER['HTTP_X_FORWARDED_PROTO']=='https')
\$_SERVER['HTTPS'] = 'on';
PHP
creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-config.php"
notify:
- "Flush Wordpress"
- name: Create Wordpress database tables
become: true
become_user: "{{ wordpress_user }}"
ansible.builtin.command:
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
cmd: >
wp core install
--url='{{ wordpress_url }}'
--title='{{ wordpress_site_title }}'
--admin_user='{{ wordpress_admin_user }}'
--admin_password='{{ wordpress_admin_password }}'
--admin_email='{{ wordpress_admin_email }}'
--locale='{{ wordpress_locale }}'
--skip-email
creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/uploads/ }}"
register: "wordpress_out_core_install"
changed_when: "'Success: WordPress installed successfully.' in wordpress_out_core_install.stdout"
notify:
- "Flush Wordpress"
- name: Installation des thèmes Wordpress
become: true
become_user: "{{ wordpress_user }}"
loop: "{{ wordpress_themes }}"
ansible.builtin.command:
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
cmd: "wp theme install '{{ item }}'"
creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/themes/{{ item | basename | splitext | first }}"
register: "wordpress_out_theme_install"
changed_when: "'Success: Installed 1 of 1 themes' in wordpress_out_theme_install.stdout"
notify:
- "Flush Wordpress"
- name: Activation du thème Wordpress
become: true
become_user: "{{ wordpress_user }}"
ansible.builtin.command:
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
cmd: "wp theme activate '{{ wordpress_active_theme }}'"
register: "wordpress_out_theme_activate"
changed_when: "'Success: Switched to ' in wordpress_out_theme_activate.stdout"
notify:
- "Flush Wordpress"
- name: Installation des plugins wordpress-importer et one-click-demo-import
vars:
wordpress_plugins_to_install:
- "wordpress-importer"
- "one-click-demo-import"
ansible.builtin.include_tasks: "install_plugins.yml"
- name: Importation des plugins OCDI
become: true
become_user: "{{ wordpress_user }}"
loop: "{{ wordpress_import_ocdi_indexes }}"
ansible.builtin.shell:
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
executable: "/usr/bin/bash"
cmd: |
set -o pipefail
wp ocdi import --predefined='{{ item }}' \
&& touch /var/www/{{ wordpress_user }}/{{ wordpress_site }}/.ocdi_index{{ item }}_imported
creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/.ocdi_index{{ item }}_imported"
register: "wordpress_out_ocdi_import"
changed_when: "'Success: Content import finished!' in wordpress_out_ocdi_import.stdout"
notify:
- "Flush Wordpress"
- name: Installation des plugins Wordpress
vars:
wordpress_plugins_to_install: "{{ wordpress_plugins }}"
ansible.builtin.include_tasks: "install_plugins.yml"
- name: Création du répertoire cache de Wordpress
ansible.builtin.file:
path: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/cache"
state: "directory"
owner: "{{ wordpress_user }}"
group: "www-data"
mode: "0750"
- name: Apply permissions
loop:
- "cache"
- "upgrade"
- "uploads"
ansible.builtin.file:
path: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/{{ item }}/"
owner: "{{ wordpress_user }}"
group: "www-data"
mode: "u=rwX,g=rwX,o=rX"
recurse: true

View File

@@ -16,7 +16,6 @@
- "zip" - "zip"
- name: Installation de wp-cli - name: Installation de wp-cli
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
ansible.builtin.get_url: ansible.builtin.get_url:
url: "https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar" url: "https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar"
dest: "/usr/local/bin/wp" dest: "/usr/local/bin/wp"
@@ -42,148 +41,8 @@
mode: "0750" mode: "0750"
- name: Installation de Wordpress - name: Installation de Wordpress
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname" when: "wordpress_create_master == None or wordpress_create_master == ansible_hostname"
become: true ansible.builtin.include_tasks: "install_wordpress.yml"
become_user: "{{ wordpress_user }}"
ansible.builtin.command:
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
cmd: "wp core download --locale='{{ wordpress_locale }}' --skip-content"
creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-config-sample.php"
# TODO: https://make.wordpress.org/cli/handbook/references/config/#config-files
- name: Configuration de Wordpress
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
become: true
become_user: "{{ wordpress_user }}"
ansible.builtin.shell:
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
executable: "/usr/bin/bash"
cmd: |
set -o pipefail
wp config create \
--dbhost='{{ wordpress_db_host }}' \
--dbname='{{ wordpress_db_name }}' \
--dbuser='{{ wordpress_db_user }}' \
--dbpass='{{ wordpress_db_pass }}' \
--dbprefix='{{ wordpress_db_prefix }}' \
--dbcharset='{{ wordpress_db_charset }}' \
--extra-php <<PHP
define('FS_METHOD', 'direct');
define('FORCE_SSL_ADMIN', false);
define('WP_HOME', 'https://{{ wordpress_site }}');
define('WP_SITEURL', 'https://{{ wordpress_site }}');
error_reporting(0);
@ini_set('display_errors', 0);
define('DISALLOW_FILE_EDIT', true);
if (isset(\$_SERVER['HTTP_X_FORWARDED_PROTO']) && \$_SERVER['HTTP_X_FORWARDED_PROTO']=='https')
\$_SERVER['HTTPS'] = 'on';
PHP
creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-config.php"
notify:
- "Flush Wordpress"
- name: Create Wordpress database tables
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
become: true
become_user: "{{ wordpress_user }}"
ansible.builtin.command:
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
cmd: >
wp core install
--url='{{ wordpress_url }}'
--title='{{ wordpress_site_title }}'
--admin_user='{{ wordpress_admin_user }}'
--admin_password='{{ wordpress_admin_password }}'
--admin_email='{{ wordpress_admin_email }}'
--locale='{{ wordpress_locale }}'
--skip-email
creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/uploads/ }}"
register: "wordpress_out_core_install"
changed_when: "'Success: WordPress installed successfully.' in wordpress_out_core_install.stdout"
notify:
- "Flush Wordpress"
- name: Installation des thèmes Wordpress
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
become: true
become_user: "{{ wordpress_user }}"
loop: "{{ wordpress_themes }}"
ansible.builtin.command:
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
cmd: "wp theme install '{{ item }}'"
creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/themes/{{ item | basename | splitext | first }}"
register: "wordpress_out_theme_install"
changed_when: "'Success: Installed 1 of 1 themes' in wordpress_out_theme_install.stdout"
notify:
- "Flush Wordpress"
- name: Activation du thème Wordpress
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
become: true
become_user: "{{ wordpress_user }}"
ansible.builtin.command:
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
cmd: "wp theme activate '{{ wordpress_active_theme }}'"
register: "wordpress_out_theme_activate"
changed_when: "'Success: Switched to ' in wordpress_out_theme_activate.stdout"
notify:
- "Flush Wordpress"
- name: Installation des plugins wordpress-importer et one-click-demo-import
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
vars:
wordpress_plugins_to_install:
- "wordpress-importer"
- "one-click-demo-import"
ansible.builtin.include_tasks: "install_plugins.yml"
- name: Importation des plugins OCDI
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
become: true
become_user: "{{ wordpress_user }}"
loop: "{{ wordpress_import_ocdi_indexes }}"
ansible.builtin.shell:
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
executable: "/usr/bin/bash"
cmd: |
set -o pipefail
wp ocdi import --predefined='{{ item }}' \
&& touch /var/www/{{ wordpress_user }}/{{ wordpress_site }}/.ocdi_index{{ item }}_imported
creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/.ocdi_index{{ item }}_imported"
register: "wordpress_out_ocdi_import"
changed_when: "'Success: Content import finished!' in wordpress_out_ocdi_import.stdout"
notify:
- "Flush Wordpress"
- name: Installation des plugins Wordpress
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
vars:
wordpress_plugins_to_install: "{{ wordpress_plugins }}"
ansible.builtin.include_tasks: "install_plugins.yml"
- name: Création du répertoire cache de Wordpress
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
ansible.builtin.file:
path: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/cache"
state: "directory"
owner: "{{ wordpress_user }}"
group: "www-data"
mode: "0750"
- name: Apply permissions
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
loop:
- "cache"
- "upgrade"
- "uploads"
ansible.builtin.file:
path: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/{{ item }}/"
owner: "{{ wordpress_user }}"
group: "www-data"
mode: "u=rwX,g=rwX,o=rX"
recurse: true
- name: Configuration de Nginx - name: Configuration de Nginx
ansible.builtin.template: ansible.builtin.template: