Private
Public Access
2
0

Add NFS server/clients for share Wordpress

This commit is contained in:
2026-01-19 16:07:13 +03:00
parent 3d9fe37983
commit afa115e17a
11 changed files with 131 additions and 1 deletions

View File

@@ -16,6 +16,10 @@ mysql:
hosts:
mysql1:
nfs:
hosts:
nfs1:
www:
hosts:
www1:

View File

@@ -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:

View 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")

View 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

View 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")

View File

@@ -0,0 +1,5 @@
- name: Restart NFS-Server
ansible.builtin.service:
name: "nfs-kernel-server"
enabled: true
state: "restarted"

View 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"

View 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 %}

View File

@@ -21,3 +21,4 @@ wordpress_db_charset: "utf8mb4"
# Optionnal
wordpress_import_ocdi_indexes: []
wordpress_create_master: null

View File

@@ -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"