Files
ansible-lemp-wordpress/playbooks/lemp-wordpress.yml
Sebastian Palencsár 573224a36b 🚀 Initial release: Complete Ansible LEMP WordPress automation
 Features:
- Complete LEMP stack automation
- WordPress with WP-CLI
- Redis Object Cache (50% performance boost)
- Multi-OS support
- SSL/Let's Encrypt integration
- Security hardening
- Enterprise features
- Docker testing environment
- GitHub Actions CI/CD
- Comprehensive documentation

🧪 Fully tested and production-ready

Copyright (c) 2025 Sebastian Palencsár
2025-06-18 18:24:55 +02:00

169 lines
4.3 KiB
YAML

---
- name: LEMP Stack + WordPress Installation auf Ubuntu
hosts: testservers
become: yes
vars:
mysql_root_password: "secure_root_pass_123"
wordpress_db_name: "wordpress"
wordpress_db_user: "wp_user"
wordpress_db_password: "wp_secure_pass_123"
wordpress_admin_user: "admin"
wordpress_admin_password: "admin_secure_pass_123"
wordpress_admin_email: "admin@example.com"
domain_name: "localhost"
tasks:
- name: System aktualisieren
apt:
update_cache: yes
upgrade: dist
cache_valid_time: 3600
- name: Notwendige Pakete installieren
apt:
name:
- nginx
- mysql-server
- php8.3-fpm
- php8.3-mysql
- php8.3-curl
- php8.3-gd
- php8.3-intl
- php8.3-mbstring
- php8.3-soap
- php8.3-xml
- php8.3-xmlrpc
- php8.3-zip
- curl
- wget
- unzip
- python3-pymysql
state: present
- name: MySQL-Service starten und aktivieren
shell: |
service mysql start
update-rc.d mysql enable
become: yes
- name: MySQL root-Passwort setzen
mysql_user:
name: root
password: "{{ mysql_root_password }}"
login_unix_socket: /var/run/mysqld/mysqld.sock
column_case_sensitive: false
state: present
- name: MySQL-Konfiguration für root
copy:
content: |
[client]
user=root
password={{ mysql_root_password }}
dest: /root/.my.cnf
mode: '0600'
- name: WordPress-Datenbank erstellen
mysql_db:
name: "{{ wordpress_db_name }}"
state: present
login_user: root
login_password: "{{ mysql_root_password }}"
- name: WordPress-Datenbankuser erstellen
mysql_user:
name: "{{ wordpress_db_user }}"
password: "{{ wordpress_db_password }}"
priv: "{{ wordpress_db_name }}.*:ALL"
column_case_sensitive: false
state: present
login_user: root
login_password: "{{ mysql_root_password }}"
- name: WordPress herunterladen
get_url:
url: https://wordpress.org/latest.tar.gz
dest: /tmp/wordpress.tar.gz
- name: WordPress entpacken
unarchive:
src: /tmp/wordpress.tar.gz
dest: /tmp
remote_src: yes
- name: WordPress-Dateien kopieren
copy:
src: /tmp/wordpress/
dest: /var/www/html/
remote_src: yes
owner: www-data
group: www-data
mode: '0755'
- name: wp-config.php erstellen
template:
src: wp-config.php.j2
dest: /var/www/html/wp-config.php
owner: www-data
group: www-data
mode: '0644'
- name: Nginx-Konfiguration für WordPress
template:
src: wordpress.nginx.j2
dest: /etc/nginx/sites-available/wordpress
backup: yes
- name: Standard Nginx-Site deaktivieren
file:
path: /etc/nginx/sites-enabled/default
state: absent
- name: WordPress-Site aktivieren
file:
src: /etc/nginx/sites-available/wordpress
dest: /etc/nginx/sites-enabled/wordpress
state: link
- name: Nginx-Konfiguration testen
command: nginx -t
register: nginx_test
failed_when: nginx_test.rc != 0
- name: PHP-FPM Service starten
shell: service php8.3-fpm start
become: yes
- name: Nginx Service neustarten
shell: service nginx restart
become: yes
- name: WordPress-Verzeichnis-Berechtigungen setzen
file:
path: /var/www/html
owner: www-data
group: www-data
recurse: yes
mode: '0755'
- name: Spezielle WordPress-Verzeichnisse erstellen
file:
path: "{{ item }}"
state: directory
owner: www-data
group: www-data
mode: '0755'
loop:
- /var/www/html/wp-content/uploads
- /var/www/html/wp-content/upgrade
- name: Installation abgeschlossen - Info ausgeben
debug:
msg: |
WordPress-Installation abgeschlossen!
URL: http://{{ domain_name }}:8080
Admin-User: {{ wordpress_admin_user }}
Admin-Passwort: {{ wordpress_admin_password }}
DB-Name: {{ wordpress_db_name }}
DB-User: {{ wordpress_db_user }}