Beispiel Caddy PHP

Das nachfolgende Beispiel erweitert das Caddy-Beispiel mit PHP

/srv/salt/caddy/php.sls
include:
  - .init

php8-fpm:
  pkg.installed:
    - pkgs:
    {% if grains.os_family == "Suse"%}
      - php8
      - php8-fpm
      - php8-cli
    {% elif grains.os_family == "RedHat"%}
      - php-fpm
    {% endif %}

{% if grains.os_family == "Suse"%}
php-fpm-conf:
  file.copy:
    - name: /etc/php8/fpm/php-fpm.conf
    - source: /etc/php8/fpm/php-fpm.conf.default

/etc/php8/fpm/php-fpm.d/www.conf:
  file.copy:
    - source: /etc/php8/fpm/php-fpm.d/www.conf.default
{% endif %}

php-fpm:
  service.running:
    - enable: true
    {% if grains.os_family == "Suse"%}
    - watch:
      - file: php-fpm-conf
    {% endif %}
    - require:
      - php8-fpm

#
# Change the existing config file.
#
extend:
  /etc/caddy/Caddyfile:
    file.managed:
      - contents: |
          :80 {
              root * /var/www/
              php_fastcgi 127.0.0.1:9000
              file_server
          }

/var/www/info.php:
  file.managed:
    - contents: <?php phpinfo(); ?>
    - user: caddy
    - group: caddy

😯 Probleme:

  1. PHP läuft auf den RedHat-Systemen nicht, weil per Standard ein Socket statt einem TCP Port verwendet wird.

  2. Was passiert, wenn Sie diesen State auf ein Ubuntu oder Debian-System anwenden?

🧩 Aufgaben:

  1. Erweitern Sie den State mit einem If-Else-Block, sodass auf RedHat-Systemen die Datei /etc/php-fpm.d/www.conf geändert wird. Ersetzen Sie listen = /run/php-fpm/www.sock durch listen = 127.0.0.1:9000 mit dem State-Modul file.replace.

  2. Erweitern den State, indem Sie folgenden Check an den Anfang setzen. Der State bricht ab, wenn die nötigen Voraussetzungen nicht gegeben sind.

{% if grains.os_family not in ["Suse","RedHat"]%}
requirement-not-met:
  test.fail_without_changes:
    - comment: This state is only applicable on Suse and RedHat
    - failhard: True
{% endif %}

Last updated