Add NFS server/clients for share Wordpress
This commit is contained in:
@@ -16,6 +16,10 @@ mysql:
|
||||
hosts:
|
||||
mysql1:
|
||||
|
||||
nfs:
|
||||
hosts:
|
||||
nfs1:
|
||||
|
||||
www:
|
||||
hosts:
|
||||
www1:
|
||||
|
||||
@@ -154,6 +154,29 @@
|
||||
tags:
|
||||
- "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
|
||||
hosts: www
|
||||
gather_facts: false
|
||||
@@ -172,6 +195,12 @@
|
||||
- "DNS:{{ ansible_fqdn }}"
|
||||
- "DNS:{{ ansible_hostname }}"
|
||||
- "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_url: "test.lab"
|
||||
wordpress_site_title: "Lab Test"
|
||||
@@ -194,6 +223,7 @@
|
||||
check_http: "http://localhost:80/"
|
||||
roles:
|
||||
- "local_ca_certs"
|
||||
- "nfs_client"
|
||||
- "wordpress"
|
||||
- "consul"
|
||||
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
|
||||
wordpress_import_ocdi_indexes: []
|
||||
wordpress_create_master: null
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
- "zip"
|
||||
|
||||
- name: Installation de wp-cli
|
||||
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||
ansible.builtin.get_url:
|
||||
url: "https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar"
|
||||
dest: "/usr/local/bin/wp"
|
||||
@@ -37,6 +38,7 @@
|
||||
mode: "0750"
|
||||
|
||||
- name: Installation de Wordpress
|
||||
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||
become: true
|
||||
become_user: "{{ wordpress_user }}"
|
||||
ansible.builtin.command:
|
||||
@@ -46,6 +48,7 @@
|
||||
|
||||
# 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:
|
||||
@@ -78,9 +81,9 @@
|
||||
- "Flush Wordpress"
|
||||
|
||||
- name: Create Wordpress database tables
|
||||
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||
become: true
|
||||
become_user: "{{ wordpress_user }}"
|
||||
run_once: true
|
||||
ansible.builtin.command:
|
||||
chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}"
|
||||
cmd: >
|
||||
@@ -99,6 +102,7 @@
|
||||
- "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 }}"
|
||||
@@ -112,6 +116,7 @@
|
||||
- "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:
|
||||
@@ -123,6 +128,7 @@
|
||||
- "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"
|
||||
@@ -130,6 +136,7 @@
|
||||
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 }}"
|
||||
@@ -147,11 +154,13 @@
|
||||
- "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"
|
||||
@@ -160,6 +169,7 @@
|
||||
mode: "0750"
|
||||
|
||||
- name: Apply permissions
|
||||
when: "wordpress_create_master != None and wordpress_create_master == ansible_hostname"
|
||||
loop:
|
||||
- "uploads"
|
||||
- "cache"
|
||||
|
||||
Reference in New Issue
Block a user