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