Brauchen Sie etwas Hilfe, wie ich jetzt ein wenig fest bin. Das Endziel ist es, einen Zustand zu haben, der generisch ist und es uns erlaubt, unsere pem-cert-Dateien an jeden Server zu senden, der sie benötigt, und an verschiedene Verzeichnisse für jeden Server. Ich hoffe das ergibt Sinn. Mit anderen Worten, ich möchte keinen separaten Status für jeden Server, um PEM-Dateien zu verteilen.Saltstack und machen Staaten Generika
Was ich habe, so weit:
Hauptzustand in den entsprechenden Servern enthalten sein (ich habe die spezifischen Details für Variablen, um etwas anderes geändert):
{% if 'custom_id' in pillar.get('the_custom_id') %}
{% set theuser = 'relevantuser' %}
{% set certpath = '/path/to/certs' %}
{% elif 'another-custom_id' in pillar.get('the_custom_id') %}
{% set theuser = 'relevantuser' %}
{% set certpath = '/path/to/certs' %}
{% else %}
{% set theuser = 'relevantuser' %}
{% set certpath = '/path/to/certs' %}
{% endif %}
{{ certpath }}:
file.directory:
- user: {{ theuser }}
- group: {{ theuser }}
- file_mode: 600
- dir_mode: 755
- makedirs: True
- recurse:
- user
- group
- mode
{% for cert_type in pillar.get('pem_certs', {}) %}
{{ certpath }}{{ cert_type }}.pem:
file.managed:
- context:
cert_type: {{ cert_type }}
- mode: 600
- source: salt://path/to/file/filename
- template: jinja
{% endfor %}
Der Inhalt der Quelle der Datei .verwaltet oben:
{{ pillar['pem_certs'][cert_type] }}
Die Pillar-Datei in der pillar.get-Funktion würde dann die PEM-Taste enthalten.
pem_certs:
ca-cert:
-----BEGIN CERTIFICATE---------
etc
Die Umgebung des Salzstacks läuft und läuft einwandfrei. Die gleiche Route wurde beim Hinzufügen der privaten Schlüssel rsa_id für Minions genommen, die gut funktionieren. Das file.directory funktioniert einwandfrei und erstellt das Verzeichnis und wendet den richtigen Benutzer entsprechend an.
Vom Debuggen kann ich sehen, dass der file.managed Zustand nicht gerendert wird und ich weiß nicht warum.
Debug-Ausgabe vom Laufen den Zustand:
[DEBUG ] Rendered data from file: /var/cache/salt/minion/files/base/path/to/state.sls:
/path/to/certs:
file.directory:
- user: theuser
- group: theuser
- file_mode: 600
- dir_mode: 755
- makedirs: True
- recurse:
- user
- group
- mode
[DEBUG ] LazyLoaded config.get
Derzeit gehe davon aus, dass ich die pillar.get nicht abruft oder nicht pem_certs abzurufen. Gibt es eine Möglichkeit, dies speziell zu testen?
Kann jemand da draußen helfen?