Aktivieren/Deaktivieren der Nginx-Site durch Hiera-Puppet verwalten?

Aktivieren/Deaktivieren der Nginx-Site durch Hiera-Puppet verwalten?

ich habe die Aufgabe bekommen, ein Hiera-Puppet-Skript zu implementieren, um sites_enabled für Nginx zu verwalten.

Hier ist mein Puppet-Skript:

common.yaml

---
classes:
    - nginx

nginx:
    enabled:
        abc.com
        xyz.com
    disabled:
        test.com
        test2.com

init.pp

class nginx{
    create_resources("site_enabled", hiera("nginx"), {})
}

define site_enabled($name){
    file { '/etc/nginx/sites_enabled/${name}':
       ensure => 'link',
       target => '/etc/nginx/site_available/${name}',
    }
}

Aber bei der Ausführung von Puppet ist folgender Fehler aufgetreten:

Fehler: Katalog konnte nicht vom Remote-Server abgerufen werden: Fehler 400 auf dem SERVER: String kann unter /etc/puppet/modules/nginx/manifests/init.pp:7 auf Knoten XX nicht in Integer konvertiert werden.

Als ich versuchte, Hiera über die Befehlszeile abzufragen:

$ hier nginx

{"aktiviert"=>["abc.com", "xyz.com"]}

Ich weiß, dass ich irgendwo einen Fehler gemacht habe. Bitte korrigieren Sie mich. Ich verstehe nicht ganz, wie Hiera mit Array-Daten abfragt und verarbeitet. Bitte zeigen Sie mir, wenn möglich, ein nützliches Dokument.

Vielen Dank.

Antwort1

Ihre Fragen sind sehr ähnlichProbleme beim Erstellen von Hiera-Hashes für create_resources, auf die es eine Antwort gibt. Ich werde hier eine Zusammenfassung geben.

Entsprechend derDokumentation für create_resourcesmuss der Hash die Form haben {title => {parameters} }. Sie sollten Ihre Hiera-Daten bearbeiten, um die Parameter festzulegen. Da es keine gibt, könnte es meiner Meinung nach einfach so aussehen:

common.yaml

---
classes:
    - nginx

nginx::enabled:
    abc.com: {}
    xyz.com: {}
nginx::disabled:
    test.com: {}
    test2.com: {}

Als nächstes müssen Sie die richtigen Daten aus Hiera laden. Sie möchten nginx::enablednicht allenginx

init.pp

class nginx{
    create_resources("site_enabled", hiera("nginx::enabled"))
}

define site_enabled($name){
    file { '/etc/nginx/sites_enabled/${name}':
       ensure => 'link',
       target => '/etc/nginx/site_available/${name}',
    }
}

Antwort2

Danke, Sciunus, für deine schnelle Antwort.

Darf ich diese Frage stellen? Ich möchte meine YAML-Daten in folgendem Format erstellen:

nginx:

enabled:
    abc.com
    xyz.com
disabled:
    test.com
    test2.com

ich möchte das Format NICHT so machen:

nginx::aktiviert:

abc.com: {}
xyz.com: {} 

nginx::deaktiviert:

test.com: {}
test2.com: {}

Wie kann ich dafür sorgen, dass mein Puppet-Skript wie erwartet funktioniert? Ich habe auch das Hiera-Dokument gelesen und weiß, dass es auch drei Arten von Nachschlagedaten unterstützt: Hiera, Hiera_Hash und Hiera_Array. Aber ich konnte es nicht wie erwartet zum Laufen bringen, obwohl ich mein YAML-Dateiformat oben verwendet habe.

Entschuldigung, ich bin bei Hiera noch ganz neu.

Danke im Voraus.

verwandte Informationen