Add NFS server/clients for share Wordpress
This commit is contained in:
@@ -16,6 +16,10 @@ mysql:
|
|||||||
hosts:
|
hosts:
|
||||||
mysql1:
|
mysql1:
|
||||||
|
|
||||||
|
nfs:
|
||||||
|
hosts:
|
||||||
|
nfs1:
|
||||||
|
|
||||||
www:
|
www:
|
||||||
hosts:
|
hosts:
|
||||||
www1:
|
www1:
|
||||||
|
|||||||
@@ -154,6 +154,29 @@
|
|||||||
tags:
|
tags:
|
||||||
- "mysql"
|
- "mysql"
|
||||||
|
|
||||||
|
- name: NFS servers
|
||||||
|
hosts: nfs
|
||||||
|
gather_facts: false
|
||||||
|
vars_files:
|
||||||
|
- "vars/common.yml"
|
||||||
|
- "vars/secrets.yml"
|
||||||
|
vars:
|
||||||
|
nfs_server_exports:
|
||||||
|
- path: "/srv/wordpress"
|
||||||
|
owner: 1001
|
||||||
|
group: 33
|
||||||
|
clients:
|
||||||
|
- address: "www1"
|
||||||
|
options: "rw,no_root_squash"
|
||||||
|
- address: "www2"
|
||||||
|
options: "rw,no_root_squash"
|
||||||
|
- address: "www3"
|
||||||
|
options: "rw,no_root_squash"
|
||||||
|
roles:
|
||||||
|
- "nfs_server"
|
||||||
|
tags:
|
||||||
|
- "nfs"
|
||||||
|
|
||||||
- name: HTTP Servers
|
- name: HTTP Servers
|
||||||
hosts: www
|
hosts: www
|
||||||
gather_facts: false
|
gather_facts: false
|
||||||
@@ -172,6 +195,12 @@
|
|||||||
- "DNS:{{ ansible_fqdn }}"
|
- "DNS:{{ ansible_fqdn }}"
|
||||||
- "DNS:{{ ansible_hostname }}"
|
- "DNS:{{ ansible_hostname }}"
|
||||||
- "IP:{{ ansible_default_ipv4.address }}"
|
- "IP:{{ ansible_default_ipv4.address }}"
|
||||||
|
nfs_client_mounts:
|
||||||
|
- mount_point: "/var/www/wordpress"
|
||||||
|
server: "nfs1:/srv/wordpress"
|
||||||
|
owner: 1001
|
||||||
|
group: 33
|
||||||
|
wordpress_create_master: "www1"
|
||||||
wordpress_site: "test.lab"
|
wordpress_site: "test.lab"
|
||||||
wordpress_url: "test.lab"
|
wordpress_url: "test.lab"
|
||||||
wordpress_site_title: "Lab Test"
|
wordpress_site_title: "Lab Test"
|
||||||
@@ -194,6 +223,7 @@
|
|||||||
check_http: "http://localhost:80/"
|
check_http: "http://localhost:80/"
|
||||||
roles:
|
roles:
|
||||||
- "local_ca_certs"
|
- "local_ca_certs"
|
||||||
|
- "nfs_client"
|
||||||
- "wordpress"
|
- "wordpress"
|
||||||
- "consul"
|
- "consul"
|
||||||
tags:
|
tags:
|
||||||
|
|||||||
8
ansible/roles/nfs_client/defaults/main.yml
Normal file
8
ansible/roles/nfs_client/defaults/main.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Required
|
||||||
|
nfs_client_mounts: []
|
||||||
|
# - mount_point: <string>
|
||||||
|
# server: <string>
|
||||||
|
# options: <string> (default "rw,sync,hard")
|
||||||
|
# owner: <int>
|
||||||
|
# group: <int>
|
||||||
|
# mode: <string> (default "0750")
|
||||||
23
ansible/roles/nfs_client/tasks/main.yml
Normal file
23
ansible/roles/nfs_client/tasks/main.yml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
- name: Installation de NFS Common
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name:
|
||||||
|
- "nfs-common"
|
||||||
|
|
||||||
|
- name: Création des points de montage
|
||||||
|
loop: "{{ nfs_client_mounts }}"
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item.mount_point }}"
|
||||||
|
state: "directory"
|
||||||
|
owner: "{{ item.owner }}"
|
||||||
|
group: "{{ item.group }}"
|
||||||
|
mode: "{{ item.mode | default('0750') }}"
|
||||||
|
|
||||||
|
- name: Mount filesystems
|
||||||
|
loop: "{{ nfs_client_mounts }}"
|
||||||
|
ansible.posix.mount:
|
||||||
|
path: "{{ item.mount_point }}"
|
||||||
|
src: "{{ item.server }}"
|
||||||
|
fstype: "nfs4"
|
||||||
|
opts: "{{ item.options | default('rw,sync,hard') }}"
|
||||||
|
state: "mounted"
|
||||||
|
boot: true
|
||||||
9
ansible/roles/nfs_server/defaults/main.yml
Normal file
9
ansible/roles/nfs_server/defaults/main.yml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Required
|
||||||
|
nfs_server_exports: []
|
||||||
|
# - path: <string>
|
||||||
|
# owner: <int>
|
||||||
|
# group: <int>
|
||||||
|
# mode: <string> (default "0750")
|
||||||
|
# clients:
|
||||||
|
# - address: <string>
|
||||||
|
# options: <string> (default "ro")
|
||||||
5
ansible/roles/nfs_server/handlers/main.yml
Normal file
5
ansible/roles/nfs_server/handlers/main.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
- name: Restart NFS-Server
|
||||||
|
ansible.builtin.service:
|
||||||
|
name: "nfs-kernel-server"
|
||||||
|
enabled: true
|
||||||
|
state: "restarted"
|
||||||
36
ansible/roles/nfs_server/tasks/main.yml
Normal file
36
ansible/roles/nfs_server/tasks/main.yml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
- name: Installation du serveur NFS
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name:
|
||||||
|
- "nfs-kernel-server"
|
||||||
|
notify:
|
||||||
|
- "Restart NFS-Server"
|
||||||
|
|
||||||
|
- name: Activation de NFS 4
|
||||||
|
ansible.builtin.lineinfile:
|
||||||
|
dest: "/etc/nfs.conf"
|
||||||
|
regex: "{{ item.regex }}"
|
||||||
|
line: "{{ item.line }}"
|
||||||
|
loop:
|
||||||
|
- regex: "vers3=y"
|
||||||
|
line: "vers3=n"
|
||||||
|
- regex: "vers4=y"
|
||||||
|
line: "vers4=y"
|
||||||
|
notify:
|
||||||
|
- "Restart NFS-Server"
|
||||||
|
|
||||||
|
- name: Création des répertoires exportés
|
||||||
|
loop: "{{ nfs_server_exports }}"
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item.path }}"
|
||||||
|
state: "directory"
|
||||||
|
owner: "{{ item.owner }}"
|
||||||
|
group: "{{ item.group }}"
|
||||||
|
mode: "{{ item.mode | default('750') }}"
|
||||||
|
|
||||||
|
- name: Copie du fichier exports
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "templates/exports"
|
||||||
|
dest: "/etc/exports"
|
||||||
|
mode: "0644"
|
||||||
|
notify:
|
||||||
|
- "Restart NFS-Server"
|
||||||
3
ansible/roles/nfs_server/templates/exports
Normal file
3
ansible/roles/nfs_server/templates/exports
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{% for export in nfs_server_exports %}
|
||||||
|
{{ export.path }}{% for c in export.clients %} {{ c.address }}({{ c.options | default ("ro") }}){% endfor %}
|
||||||
|
{% endfor %}
|
||||||
@@ -21,3 +21,4 @@ wordpress_db_charset: "utf8mb4"
|
|||||||
|
|
||||||
# Optionnal
|
# Optionnal
|
||||||
wordpress_import_ocdi_indexes: []
|
wordpress_import_ocdi_indexes: []
|
||||||
|
wordpress_create_master: null
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
- "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"
|
||||||
@@ -37,6 +38,7 @@
|
|||||||
mode: "0750"
|
mode: "0750"
|
||||||
|
|
||||||
- name: Installation de Wordpress
|
- name: Installation de Wordpress
|
||||||
|
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||||
become: true
|
become: true
|
||||||
become_user: "{{ wordpress_user }}"
|
become_user: "{{ wordpress_user }}"
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
@@ -46,6 +48,7 @@
|
|||||||
|
|
||||||
# TODO: https://make.wordpress.org/cli/handbook/references/config/#config-files
|
# TODO: https://make.wordpress.org/cli/handbook/references/config/#config-files
|
||||||
- name: Configuration de Wordpress
|
- name: Configuration de Wordpress
|
||||||
|
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||||
become: true
|
become: true
|
||||||
become_user: "{{ wordpress_user }}"
|
become_user: "{{ wordpress_user }}"
|
||||||
ansible.builtin.shell:
|
ansible.builtin.shell:
|
||||||
@@ -78,9 +81,9 @@
|
|||||||
- "Flush Wordpress"
|
- "Flush Wordpress"
|
||||||
|
|
||||||
- name: Create Wordpress database tables
|
- name: Create Wordpress database tables
|
||||||
|
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||||
become: true
|
become: true
|
||||||
become_user: "{{ wordpress_user }}"
|
become_user: "{{ wordpress_user }}"
|
||||||
run_once: true
|
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
|
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
|
||||||
cmd: >
|
cmd: >
|
||||||
@@ -99,6 +102,7 @@
|
|||||||
- "Flush Wordpress"
|
- "Flush Wordpress"
|
||||||
|
|
||||||
- name: Installation des thèmes Wordpress
|
- name: Installation des thèmes Wordpress
|
||||||
|
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||||
become: true
|
become: true
|
||||||
become_user: "{{ wordpress_user }}"
|
become_user: "{{ wordpress_user }}"
|
||||||
loop: "{{ wordpress_themes }}"
|
loop: "{{ wordpress_themes }}"
|
||||||
@@ -112,6 +116,7 @@
|
|||||||
- "Flush Wordpress"
|
- "Flush Wordpress"
|
||||||
|
|
||||||
- name: Activation du thème Wordpress
|
- name: Activation du thème Wordpress
|
||||||
|
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||||
become: true
|
become: true
|
||||||
become_user: "{{ wordpress_user }}"
|
become_user: "{{ wordpress_user }}"
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
@@ -123,6 +128,7 @@
|
|||||||
- "Flush Wordpress"
|
- "Flush Wordpress"
|
||||||
|
|
||||||
- name: Installation des plugins wordpress-importer et one-click-demo-import
|
- name: Installation des plugins wordpress-importer et one-click-demo-import
|
||||||
|
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||||
vars:
|
vars:
|
||||||
wordpress_plugins_to_install:
|
wordpress_plugins_to_install:
|
||||||
- "wordpress-importer"
|
- "wordpress-importer"
|
||||||
@@ -130,6 +136,7 @@
|
|||||||
ansible.builtin.include_tasks: "install_plugins.yml"
|
ansible.builtin.include_tasks: "install_plugins.yml"
|
||||||
|
|
||||||
- name: Importation des plugins OCDI
|
- name: Importation des plugins OCDI
|
||||||
|
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||||
become: true
|
become: true
|
||||||
become_user: "{{ wordpress_user }}"
|
become_user: "{{ wordpress_user }}"
|
||||||
loop: "{{ wordpress_import_ocdi_indexes }}"
|
loop: "{{ wordpress_import_ocdi_indexes }}"
|
||||||
@@ -147,11 +154,13 @@
|
|||||||
- "Flush Wordpress"
|
- "Flush Wordpress"
|
||||||
|
|
||||||
- name: Installation des plugins Wordpress
|
- name: Installation des plugins Wordpress
|
||||||
|
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||||
vars:
|
vars:
|
||||||
wordpress_plugins_to_install: "{{ wordpress_plugins }}"
|
wordpress_plugins_to_install: "{{ wordpress_plugins }}"
|
||||||
ansible.builtin.include_tasks: "install_plugins.yml"
|
ansible.builtin.include_tasks: "install_plugins.yml"
|
||||||
|
|
||||||
- name: Création du répertoire cache de Wordpress
|
- name: Création du répertoire cache de Wordpress
|
||||||
|
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/cache"
|
path: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/cache"
|
||||||
state: "directory"
|
state: "directory"
|
||||||
@@ -160,6 +169,7 @@
|
|||||||
mode: "0750"
|
mode: "0750"
|
||||||
|
|
||||||
- name: Apply permissions
|
- name: Apply permissions
|
||||||
|
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||||
loop:
|
loop:
|
||||||
- "uploads"
|
- "uploads"
|
||||||
- "cache"
|
- "cache"
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ vms = {
|
|||||||
waf2 = {},
|
waf2 = {},
|
||||||
waf3 = {},
|
waf3 = {},
|
||||||
mysql1 = {},
|
mysql1 = {},
|
||||||
|
nfs1 = {},
|
||||||
www1 = {},
|
www1 = {},
|
||||||
www2 = {},
|
www2 = {},
|
||||||
www3 = {},
|
www3 = {},
|
||||||
|
|||||||
Reference in New Issue
Block a user