Hello! I''m trying to create a resource of type service in which there is a clause subscribe. In this clause need to put a variable, and when I run the client gives me this error: warning: Configuration could not be instantiated: Parameter subscribe failed: Relationships must be resource references at / etc / puppet / manifests / classes / custom_functions.pp: 73; using cached catalog Then you expose the piece of code and see if you have idea why this happens. service ($ title: ensure => true, enable => true, subscribe => [$ model] ) The variable $ model returns the following: debug: Scope (Custom_functions: Superservice [apache2]) File [ "/ etc/ apache2/sites-available/ssl"], File [ "/ etc/apache2/apache.pem"] It is possible that the clause does not support variables subscribe? I''ve been looking all over the Internet and have not found the answer. Thanks for everything, greetings. -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
I don''t think that that''s gonna work... As the error message says subscribe needs a resource reference which means that you need something like File["myfile"]. What is it exactly that you want to do? You want to start a service after 2 files being created/changed? Then you should try something like subscribe => [File["file1"], File["file2"]] And of course you need to define file1 and file2 as well ;) In your actual manifest are there whitespaces between the "$" and the variablename, too? This may also cause some syntax problems, I guess. On 11 Mrz., 17:51, Antonio Xanxess <antonio.sanchez.agui...@gmail.com> wrote:> Hello! I''m trying to create a resource of type service in which there > is a clause subscribe. In this clause need to put a variable, and when > I run the client gives me this error: > warning: Configuration could not be instantiated: Parameter subscribe > failed: Relationships must be resource references at / etc / puppet / > manifests / classes / custom_functions.pp: 73; using cached catalog > Then you expose the piece of code and see if you have idea why this > happens. > > service ($ title: > ensure => true, > enable => true, > subscribe => [$ model] > ) > > The variable $ model returns the following: > debug: Scope (Custom_functions: Superservice [apache2]) File [ "/ etc/ > apache2/sites-available/ssl"], File [ "/ etc/apache2/apache.pem"] > > It is possible that the clause does not support variables subscribe? > I''ve been looking all over the Internet and have not found the answer. > > Thanks for everything, greetings.-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Hi Christian, thanks for the comment. I will explain more carefully the case so all of the data. My goal is to happen to subscribe clause with a variable proper syntax, because the resource service I have defined as a function. For my needs I created a specific function, make the process of generating the string you must enter the clause subscribe. I show first the role of the manifest, this is is in a class of its own that I called custom_functions.pp: superservice defined ($initscript, $filecontrol) { $pattern = modelo_suscribe( "$filecontrol") package { $title: ensure => installed } service {$initscript: ensure => true, enable => true, subscribe => [$model] } } modelo_suscribe is the proper role of Ruby that make this process: module Puppet::Parser::Functions NewFunction (:modelo_suscribe,:type =>:rvalue) do | args | string = args[0] array = cadena.split(",") str = "" array.each do |element| str_tmp = "File[\"# (element)\"]," str = str + str_tmp end str = str.chomp(",") return str end end And last stop superservice call the function on the manifest, for apache2 service for example, would be called like this: superservice {apache2: initscript => "apache2" filecontrol => "/etc/apache2/sites-available/ssl,/etc/ apache2/apache.pem,/etc/apache2/sites-available/default,/etc/apache2/ ports.conf " } I debugging the server and get the following: debug:Scope(Custom_functions:Superservice[apache2]):File["/etc/apache2/ sites-available/ssl"], File["/etc/apache2/apache.pem"], File ["/etc/ apache2/sites-available/default"], File["/etc/apache2/ports.conf"] And the client side you see the same error. warning: Configuration could not be instantiated: Parameter subscribe failed: Relationships must be resource references at /etc/puppet/ manifests/classes/custom_functions.pp: 71; using cached catalog I reviewed what I''ve mentioned, but understand what the term definition files. As I have created a specific function for service, I created one for file, because I need to make checks before setting the file, then in the case of manifest apache2 would be: class apache2 inherits base { superpackage { openssl: } superfile { "/etc/apache2/sites-available/ssl": service => apache2 } ... As I really do not define the files with "file" but I''ve created "superfile", which first performs a check and then define file for files. Can this influence the behavior of puppet? Thanks and regards On 12 mar, 08:40, christian <christ...@cust.in> wrote:> I don''t think that that''s gonna work... > As the error message says subscribe needs a resource reference which > means that you need something like File["myfile"]. > > What is it exactly that you want to do? > You want to start a service after 2 files being created/changed? > Then you should try something like subscribe => [File["file1"], > File["file2"]] > And of course you need to define file1 and file2 as well ;) > > In your actual manifest are there whitespaces between the "$" and the > variablename, too? > This may also cause some syntax problems, I guess. > > On 11 Mrz., 17:51, Antonio Xanxess <antonio.sanchez.agui...@gmail.com> > wrote: > > > > > Hello! I''m trying to create a resource of type service in which there > > is a clause subscribe. In this clause need to put a variable, and when > > I run the client gives me this error: > > warning: Configuration could not be instantiated: Parameter subscribe > > failed: Relationships must be resource references at / etc / puppet / > > manifests / classes / custom_functions.pp: 73; using cached catalog > > Then you expose the piece of code and see if you have idea why this > > happens. > > > service ($ title: > > ensure => true, > > enable => true, > > subscribe => [$ model] > > ) > > > The variable $ model returns the following: > > debug: Scope (Custom_functions: Superservice [apache2]) File [ "/ etc/ > > apache2/sites-available/ssl"], File [ "/ etc/apache2/apache.pem"] > > > It is possible that the clause does not support variables subscribe? > > I''ve been looking all over the Internet and have not found the answer. > > > Thanks for everything, greetings.-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Sorry, to copy the code has emerged a small error: custom_functions.pp: define superservice ($initscript, $filecontrol) { On 12 mar, 09:51, Antonio Xanxess <antonio.sanchez.agui...@gmail.com> wrote:> Hi Christian, thanks for the comment. I will explain more carefully > the case so all of the data. > My goal is to happen to subscribe clause with a variable proper > syntax, because the resource service I have defined as a function. For > my needs I created a specific function, make the process of generating > the string you must enter the clause subscribe. I show first the role > of the manifest, this is is in a class of its own that I called > custom_functions.pp: > > superservice defined ($initscript, $filecontrol) { > $pattern = modelo_suscribe( "$filecontrol") > package { $title: ensure => installed } > service {$initscript: > ensure => true, > enable => true, > subscribe => [$model] > } > > } > > modelo_suscribe is the proper role of Ruby that make this process: > > module Puppet::Parser::Functions > NewFunction (:modelo_suscribe,:type =>:rvalue) do | args | > string = args[0] > array = cadena.split(",") > str = "" > array.each do |element| > str_tmp = "File[\"# (element)\"]," > str = str + str_tmp > end > str = str.chomp(",") > return str > end > end > > And last stop superservice call the function on the manifest, for > apache2 service for example, would be called like this: > > superservice {apache2: > initscript => "apache2" > filecontrol => "/etc/apache2/sites-available/ssl,/etc/ > apache2/apache.pem,/etc/apache2/sites-available/default,/etc/apache2/ > ports.conf " > } > > I debugging the server and get the following: > debug:Scope(Custom_functions:Superservice[apache2]):File["/etc/apache2/ > sites-available/ssl"], File["/etc/apache2/apache.pem"], File ["/etc/ > apache2/sites-available/default"], File["/etc/apache2/ports.conf"] > > And the client side you see the same error. > warning: Configuration could not be instantiated: Parameter subscribe > failed: Relationships must be resource references at /etc/puppet/ > manifests/classes/custom_functions.pp: 71; using cached catalog > > I reviewed what I''ve mentioned, but understand what the term > definition files. As I have created a specific function for service, I > created one for file, because I need to make checks before setting the > file, then in the case of manifest apache2 would be: > class apache2 inherits base { > > superpackage { openssl: } > > superfile { "/etc/apache2/sites-available/ssl": > service => apache2 > } > ... > > As I really do not define the files with "file" but I''ve created > "superfile", which first performs a check and then define file for > files. Can this influence the behavior of puppet? > > Thanks and regards > > On 12 mar, 08:40, christian <christ...@cust.in> wrote: > > > > > I don''t think that that''s gonna work... > > As the error message says subscribe needs a resource reference which > > means that you need something like File["myfile"]. > > > What is it exactly that you want to do? > > You want to start a service after 2 files being created/changed? > > Then you should try something like subscribe => [File["file1"], > > File["file2"]] > > And of course you need to define file1 and file2 as well ;) > > > In your actual manifest are there whitespaces between the "$" and the > > variablename, too? > > This may also cause some syntax problems, I guess. > > > On 11 Mrz., 17:51, Antonio Xanxess <antonio.sanchez.agui...@gmail.com> > > wrote: > > > > Hello! I''m trying to create a resource of type service in which there > > > is a clause subscribe. In this clause need to put a variable, and when > > > I run the client gives me this error: > > > warning: Configuration could not be instantiated: Parameter subscribe > > > failed: Relationships must be resource references at / etc / puppet / > > > manifests / classes / custom_functions.pp: 73; using cached catalog > > > Then you expose the piece of code and see if you have idea why this > > > happens. > > > > service ($ title: > > > ensure => true, > > > enable => true, > > > subscribe => [$ model] > > > ) > > > > The variable $ model returns the following: > > > debug: Scope (Custom_functions: Superservice [apache2]) File [ "/ etc/ > > > apache2/sites-available/ssl"], File [ "/ etc/apache2/apache.pem"] > > > > It is possible that the clause does not support variables subscribe? > > > I''ve been looking all over the Internet and have not found the answer. > > > > Thanks for everything, greetings.-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Sorry, i put ONLY the code here: custom_functions.pp: ... define superservice ( $initscript, $filecontrol ) { $modelo = modelo_suscribe("$filecontrol") package { $title: ensure => installed } service { $initscript: ensure => true, enable => true, subscribe => [$modelo] } } .... modelo_suscribe.rb: module Puppet::Parser::Functions newfunction(:modelo_suscribe, :type => :rvalue) do |args| cadena = args[0] array = cadena.split(",") str="" array.each do |element| str_tmp = " File[\"#{element}\"]," str = str + str_tmp end str = str.chomp(",") return str end end apache2.pp: class apache2 inherits base { .... superfile { "/etc/apache2/sites-available/ssl": service => apache2 } superfile { "/etc/apache2/apache.pem": mode => "600", service => apache2 } superfile { "/etc/apache2/sites-available/default": service => apache2 } superfile { "/etc/apache2/ports.conf": service => apache2 } superservice { apache2: initscript => "apache2", filecontrol => "/etc/apache2/sites-available/ssl,/etc/ apache2/apache.pem,/etc/apache2/sites-available/default,/etc/apache2/ ports.conf" } } -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Christian, thanks for the clarification. After analyzing the problem I have clear that the configuration I had in mind no sense either : D I''ve solved the problem, so the subject of debate for me is settled. Thank you very much! Greetings! -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.