Saltstack
  • Willkommen
  • Einführung
  • Testumgebung
    • Salt-Master öffentlicher FQDN
  • Salt installieren
    • Minions und Master "verheiraten"
  • Salt Module
    • Beispiel Benutzer anlegen
    • Dateien hin und her kopieren
  • Salt States
    • Yaml verstehen
    • Editoren anpassen
    • Beispiel Benutzer verwalten
    • Abhängigkeiten
    • Dateien editieren
    • Shell Kommandos
    • Beispiel Caddy Webserver
  • Linter
  • Minions adressieren
    • Grains
    • Hostgruppen - Node Groups
  • Jinja
    • Beispiel Caddy PHP
  • top.sls
  • Output
  • Pillars
    • Hosts Pillars
    • GPG
    • Vault
    • Datenbanken
    • Beispiel Benutzerverwaltung
  • Salt-Mine
  • Eigene Module erstellen
  • Orchestrierung
  • Returner & Job-Cache
  • Salt SSH
  • Salt API
  • Salt Cloud
    • Hinweise und Fallen
    • KVM und Libvirt
    • Scaleway
    • Digitalocean
    • Hetzner Cloud
    • eigene Deploymentscripte
    • Dynamische Portforwarding
    • Keys automatisch aufräumen
    • Start Aktionen
  • GIT
    • Alternative CD
  • Salt Reactor
  • Salt für Windows
    • Software ohne Repository installieren
    • PowerShell
    • Chocolatey Paktemanager
    • Lokales Logon Skript
    • Software Repository
  • Beispiele
    • Restic Backup
    • Apache Web-Proxy
    • Wartungstunnel
    • Unattended Upgrades
  • Salt & Etcd
  • Salt ACS
Powered by GitBook
On this page
  1. Jinja

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

PreviousJinjaNexttop.sls

Last updated 2 years ago

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
1KB
php.sls