2016-05-10 8 views
1

Ich benutze Vagrant und ich versuche, eine VM mit Marionette bereitzustellen. In der Vagrant Datei konfigurierte ich VM db wie folgt:Puppet PostgresQL-Verwaltung, Fehler: Puppet :: Parser :: AST ::

config.vm.define "db" do |db| 
    db.vm.hostname = "db"  
    db.vm.network "private_network", ip: "10.11.1.201", virtualbox__intnet: true 
    db.vm.provider "virtualbox" do |v| 
     v.memory = 1024 
    end 

    db.vm.network "forwarded_port", guest: 22, host: 2221, id: 'ssh', auto_correct: true 
    db.vm.network "forwarded_port", guest: 5432, host: 2222 
    db.ssh.forward_agent = true 

     config.vm.provision :shell do |shell| 
shell.inline = "mkdir -p /etc/puppet/modules; 
       puppet module install puppetlabs-postgresql" 

    end 
     config.vm.provision :puppet do |puppet| 
    puppet.manifests_path = "puppet/manifests" 
    puppet.manifest_file = "site.pp" 
    puppet.module_path = "puppet/modules" 
    end 
    end 
end 

Wie Sie mir den Download der Module mit Hilfe eines vagabundierenden Shell-Befehl, bevor die Puppe provisioner Läufe zu sehen. Auf diese Weise habe ich das puppetlabs-postgresql Modul von Puppenlabors heruntergeladen. Ich möchte meine Datenbank nicht verwalten, indem ich Klassen in meiner Datei site.pp unter /puppet/manifests/site.pp erstelle. Ich möchte eine Modulaufrufdatenbank in/puppet/modules/database haben. Was ich bisher gemacht habe, ist eine init.pp-Datei in/puppet/modules/database zu erstellen. Im Folgenden ist der Inhalt meiner init.pp Datei:

class database { 
    class { 'postgresql::server': 
    ip_mask_allow_all_users => '0.0.0.0/0', 
    listen_addresses   => '*', 
    ipv4acls     => ['hostssl all johndoe 192.168.0.0/24 cert'], 
    postgres_password   => 'TPSrep0rt!', 
} 
}  

Und dann in meiner /puppet/manifests/site.pp Datei habe ich die Datenbank-Klasse, wie unten aufgeführt:

node 'db' { 
    include database 
} 

Nach dem " Vagrant up“Befehl erhalte ich die Fehlermeldung:

Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class postgresql::server at /tmp/vagrant-puppet/modules-d1208595f982e4ac16b287f9bd398c89/database/manifests/init.pp:8 on node db.lan 

==> db: Wrapped exception: 

==> db: Could not find declared class postgresql::server 

==> db: Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class postgresql::server at /tmp/vagrant-puppet/modules-d1208595f982e4ac16b287f9bd398c89/database/manifests/init.pp:8 on node db.lan 

Was ist der richtige Weg, die Verwendung der postgresql Klassen zu machen?

+0

Können Sie Ihr Verzeichnis/Puppet/Module/Datenbank? –

Antwort

0

Es ist komisches Gefühl, Ihren Code zu lesen, besonders den Klassen-Datenbank-Teil.

können Sie einstellen, hieradata Vorlage für Puppen Modul postgresql

etwas mag:

postgresql::server: 
    ip_mask_allow_all_users: '0.0.0.0/0' 
    listen_addresses: '*' 
    ipv4acls: 
     - 'hostssl all johndoe 192.168.0.0/24 cert' 
    postgres_password: 'TPSrep0rt!' 

in Knoten definieren,

node 'db' { 
    include postgresql::server 
} 

verwalten die facters in pp Datei direkt nicht gute Praxis ist.

+0

ich habe nicht, wo zu platzieren postgresql verstanden :: Server: ip_mask_allow_all_users: '0.0.0.0/0' listen_addresses: '*' ipv4acls: - 'hostssl alle johndoe 192.168.0.0/24 cert' postgres_password: 'TPSrep0rt!' – TrinitasXVII

+0

lesen Sie zuerst: https://docs.puppet.com/hiera/3.1/puppet.html – BMW