[chef] Re: Re: how to manage dependent resources?


Chronological Thread 
  • From: Bryan Berry < >
  • To:
  • Subject: [chef] Re: Re: how to manage dependent resources?
  • Date: Wed, 29 Feb 2012 16:55:25 +0100
  • Authentication-results: mr.google.com; spf=pass (google.com: domain of designates 10.52.28.200 as permitted sender) ; dkim=pass

that's a good idea Andrea but I really like the solution that ssd7 came up w/ 

I generate the base inside the initialize method for my tomcat LWRP

file: tomcat/resources/default.rb

def initialize(*args)s                                                                                                                        
  super                                                                                                                                       
  @action = ":install"                                                                                                                          
  catalina_parent = Pathname.new(node['tomcat']['home']).parent.to_s                                                                          
  @base = "#{catalina_parent}/ "                                                                                                       
  Chef::Log.debug("base_is ")                                                                                                         
  @supports = {:report => true, :exception => true}                                                                                           
end  

now my recipe code looks like this

t = tomcat "jira" do                                                                                                                          
  user node['jira']['user']                                                                                                                   
  action :install                                                                                                                             
end                                                                                                                                           
                                                                                                                                              
# get mysql connector                                                                                                                         
ivy "mysql-connector-java" do                                                                                                                 
  groupId "mysql"                                                                                                                             
  version "5.1.18"                                                                                                                            
  dest  "#{t.base}/lib"                                                                                                                       
end      

much more elegant

thanks a lot SSD!



On Wed, Feb 29, 2012 at 4:22 PM, Andrea Campi < "> > wrote:
On Wed, Feb 29, 2012 at 9:53 AM, Bryan Berry < "> > wrote:
> I have an issue where I need to provide values generated dynamically by one
> resource to resources that follow it
>
> My tomcat lwrp generates a base directory for each new instance that is a
> readable attribute "base"
>
> Following resources will use that base attribute. In this example, the ivy
> resource should place a .jar file in the #{base}/lib directory
>
>
> include_recipe "ark"
>
> include_recipe "tomcat::base"
>
> include_recipe "ivy"
>
>
>
> t = tomcat "jira" do
>
>   user node['jira']['user']
>
>   action :install
>
> end
>
>
>
>
> # get mysql connector
>
> ivy "mysql-connector-java" do
>
>   groupId "mysql"
>
>   version "5.1.18"
>
>   dest    "#{t.base}/lib"    # evaluates to "/lib"
>
>
> end


The ivy provider should be able to retrieve the tomcat resource by
name, and then access any attribute.

So something like this:

ivy "mysql" do
 groupId "mysql"
 version "5.1.18"
 base_resource :tomcat => "jira"
end

And then in the ivy provider do:

parent = resources(new_resource.base_resource)
parent.base


That's off the top of my head so YMMV

Andrea




Archive powered by MHonArc 2.6.16.

§