Puppet Anfänger zu verwenden, so vielleicht etwas mache ich falsch ...„Ungültige Ressourcentyp“ versucht hier Puppet des Defined Ressourcentyp
Ich habe ein Manifest, das die folgenden definieren
define amqconf (
$activemq_home = '/opt/apache-activemq',
$group = 'activemq',
$mode = 0644,
$owner = 'activemq',
$broker_name = $title,
$broker_port = 61616,
) {
file { $title:
ensure => present,
path => "${activemq_home}/${broker_name}/conf/activemq.xml",
content => template('profiles/activemq.xml.erb'),
}
}
enthält und dann versucht, dass
$broker_conf = hiera('profiles::activemq::broker::conf')
create_resources(amqconf, $broker_conf)
aber wenn ich versuche, und benutzen Sie diese Klasse bekomme ich folgende Fehler
zu verwenden, definierenInfo: Using configured environment 'testing'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type amqconf at /etc/puppetlabs/code/environments/testing/modules/profiles/manifests/activemq.pp:73:5 on node cust-stage.internal
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
Was muss ich tun, um diese Definition verwenden zu können?
EDIT: hinzugefügt komplettes Manifest
class profiles::activemq {
include archive
include profiles::java_7_oracle
$activemq_version = '5.13.3'
define amqconf (
$activemq_home = '/opt/apache-activemq',
$group = 'activemq',
$mode = 0644,
$owner = 'activemq',
$broker_name = $title,
$broker_port = 61616,
) {
file { $title:
ensure => present,
path => "${activemq_home}/${broker_name}/conf/activemq.xml",
content => template('profiles/activemq.xml.erb'),
}
}
group { 'activemq':
ensure => present,
}
user { 'activemq':
groups => 'activemq',
comment => 'Service user for running the ActiveMQ service',
home => "/opt/apache-activemq-$activemq_version",
ensure => present,
shell => '/bin/bash',
}
file { "/opt/apache-activemq-$activemq_version" :
ensure => directory,
owner => 'activemq',
group => 'activemq',
mode => '0755',
}
archive { "/tmp/apache-activemq-$activemq_version-bin.tar.gz" :
ensure => present,
source => 'http://archive.apache.org/dist/activemq/5.13.3/apache-activemq-5.13.3-bin.tar.gz',
checksum => 'c19e2717f5c844a2f271fcd39eb024d04ebcfa5d',
checksum_type => 'sha1',
extract => true,
extract_path => '/opt',
creates => "/opt/apache-activemq-$activemq_version/bin",
cleanup => true,
user => 'activemq',
group => 'activemq',
}
# Create the brokers defined in hiera.
$brokers = hiera('profiles::activemq::brokers')
$broker_defaults = {
cwd => "/opt/apache-activemq-${activemq_version}",
group => 'activemq',
user => 'activemq',
}
create_resources(exec , $brokers, $broker_defaults)
$broker_conf = hiera('profiles::activemq::broker::conf')
create_resources(amqconf, $broker_conf)
}
Wird diese Definition während der Katalogkompilierung automatisch geladen? Wenn sich die Definition in einer Datei unter '/ etc/puppetlabs/code/environments/tests/modules/amqconf/manifests/init.pp' befindet, ist die Antwort wahrscheinlich yes. Ansonsten muss dies einer weiteren Überprüfung unterzogen werden, um Ihre Situation zu verbessern. FYI: https://docs.puppet.com/puppet/latest/reference/lang_defined_types.html –
Ich habe das referenzierte Dokument gelesen - unter dem Abschnitt Position heißt es, dass die Definition innerhalb einer Klassendefinition liegen kann (obwohl dies nicht der Fall ist) empfohlen). Das ist mein Fall, sowohl die Definition als auch die Verwendung des definierten Ressourcentyps befinden sich im selben Manifest/derselben Klasse. – sceaj
kannst du uns deine ganze Klasse zeigen? – ptierno