-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplaybook-wordpress.yaml
155 lines (134 loc) · 4.28 KB
/
playbook-wordpress.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
---
- hosts: webserver
become: true
vars:
php_version: 8.4
ubuntu_packages:
- apt-transport-https
- ca-certificates
- curl
- software-properties-common
- python3-pip
nginx_packages:
- nginx
php_packages:
- php{{ php_version }}
- php{{ php_version }}-cli
- php{{ php_version }}-common
- php{{ php_version }}-curl
- php{{ php_version }}-fpm
- php{{ php_version }}-opcache
- php{{ php_version }}-pdo
- php{{ php_version }}-mysql
- php{{ php_version }}-xml
- php{{ php_version }}-intl
- php{{ php_version }}-mbstring
- php{{ php_version }}-zip
- php{{ php_version }}-imagick
- php{{ php_version }}-imap
mariadb_packages:
- mariadb-server
- python3-mysqldb
pip_packages:
- PyMySQL
wordpress_version: latest
wordpress_download_url: "https://wordpress.org/wordpress-{{ wordpress_version }}.tar.gz"
wordpress_dir: /var/www/wordpress
wordpress_domain: "{{ ansible_host }}"
tasks:
- name: Carregar variáveis do arquivo .env
include_vars:
file: .env
name: env_vars
- name: Define as variáveis de ambiente
ansible.builtin.set_fact:
wordpress_db_name: "{{ env_vars.WORDPRESS_DB_NAME }}"
wordpress_db_user: "{{ env_vars.WORDPRESS_DB_USER }}"
wordpress_db_password: "{{ env_vars.WORDPRESS_DB_PASSWORD }}"
login_password: "{{ env_vars.MYSQL_ROOT_PASSWORD }}"
- name: Atualizar cache do APT
apt:
update_cache: yes
cache_valid_time: 3600
- name: Instalar pacotes Linux
apt:
name: "{{ ubuntu_packages }}"
state: present
- name: Instalar pacotes do Nginx
apt:
name: "{{ nginx_packages }}"
state: present
- name: Instalar pacotes PIP
pip:
name: "{{ pip_packages }}"
state: present
- name: Adicionar repositório PHP
ansible.builtin.apt_repository:
repo: 'ppa:ondrej/php'
state: present
- name: Instalar pacotes do PHP-FPM
apt:
name: "{{ php_packages }}"
state: present
- name: Instalar pacotes do MariaDB
apt:
name: "{{ mariadb_packages }}"
state: present
- name: Iniciar o MariaDB
service:
name: mariadb
state: started
- name: Garantir que o diretório do WordPress exista
file:
path: "{{ wordpress_dir }}"
state: directory
owner: www-data
group: www-data
recurse: yes
- name: Baixar o WordPress
get_url:
url: "{{ wordpress_download_url }}"
dest: /tmp/wordpress.tar.gz
- name: Descompactar o WordPress
unarchive:
src: /tmp/wordpress.tar.gz
dest: "{{ wordpress_dir }}"
remote_src: yes
owner: www-data
group: www-data
extra_opts: [--strip-components=1]
- name: Configurar arquivo wp-config.php
template:
src: templates/wp-config.php.j2
dest: "{{ wordpress_dir }}/wp-config.php"
owner: www-data
group: www-data
notify: restart php-fpm
- name: Criar banco de dados WordPress
shell: |
mysql -u root -p{{ login_password }} -e "CREATE DATABASE IF NOT EXISTS {{ wordpress_db_name }};"
- name: Criar usuário do banco de dados WordPress
shell: |
mysql -u root -p{{ login_password }} -e "CREATE USER IF NOT EXISTS '{{ env_vars.WORDPRESS_DB_USER }}'@'localhost' IDENTIFIED BY '{{ env_vars.WORDPRESS_DB_PASSWORD }}';"
mysql -u root -p{{ login_password }} -e "GRANT ALL PRIVILEGES ON {{ env_vars.WORDPRESS_DB_NAME }}.* TO '{{ env_vars.WORDPRESS_DB_USER }}'@'localhost';"
mysql -u root -p{{ login_password }} -e "FLUSH PRIVILEGES;"
- name: Configurar arquivo de configuração do Nginx
template:
src: templates/nginx.conf.j2
dest: /etc/nginx/sites-available/wordpress
notify: restart nginx
- name: Habilitar site do Nginx
file:
src: /etc/nginx/sites-available/wordpress
dest: /etc/nginx/sites-enabled/wordpress
state: link
notify: restart nginx
handlers:
- name: restart nginx
service:
name: nginx
state: restarted
- name: restart php-fpm
service:
name: php8.4-fpm
state: restarted