Avoiding CHEF-3694


#1

What’s the right way to avoid CHEF-3694 for the simple case of prerequiste
packages?

I’m about to build an oracle instantclient cookbook so I can fold it into
the database cookbook, but I want chrpath installed so I can fix up the
path in sqlplus.

I could do:

begin
resources(‘package[chrpath]’)
rescue Chef::Exceptions::ResourceNotFound
package 'chrpath’
end

But it feels kinda ugly… am I missing something?


Alex Kiernan


#2

That is not what you want. You want to a package resource, for the package chrpath, with action install, and the latest version available. No extra flags to the package installer.

Just because someone else defined a package[chrpath] resource doesn’t mean any of the rest of that is true. They may using the remove action.

CHEF-3694 just says: you’ve got multiple attempts to define a resource. The only way to guarantee that those two attempts play nice is to use a good olde fashioned eyeball, figure out what the intersecting requirements are, and only do that once.


http://josephholsten.com

On Jun 10, 2013, at 4:29, Alex Kiernan alex.kiernan@gmail.com wrote:

What’s the right way to avoid CHEF-3694 for the simple case of prerequiste packages?

I’m about to build an oracle instantclient cookbook so I can fold it into the database cookbook, but I want chrpath installed so I can fix up the path in sqlplus.

I could do:

begin
resources(‘package[chrpath]’)
rescue Chef::Exceptions::ResourceNotFound
package 'chrpath’
end

But it feels kinda ugly… am I missing something?


Alex Kiernan


#3

Urgh, you’ve just made me realise resource cloning is even more insidious
than I’d previously realised
On 10 Jun 2013 18:14, “Joseph Holsten” joseph@josephholsten.com wrote:

That is not what you want. You want to a package resource, for the package
chrpath, with action install, and the latest version available. No extra
flags to the package installer.

Just because someone else defined a package[chrpath] resource doesn’t mean
any of the rest of that is true. They may using the remove action.

CHEF-3694 just says: you’ve got multiple attempts to define a resource.
The only way to guarantee that those two attempts play nice is to use a
good olde fashioned eyeball, figure out what the intersecting requirements
are, and only do that once.


http://josephholsten.com

On Jun 10, 2013, at 4:29, Alex Kiernan alex.kiernan@gmail.com wrote:

What’s the right way to avoid CHEF-3694 for the simple case of
prerequiste packages?

I’m about to build an oracle instantclient cookbook so I can fold it
into the database cookbook, but I want chrpath installed so I can fix up
the path in sqlplus.

I could do:

begin
resources(‘package[chrpath]’)
rescue Chef::Exceptions::ResourceNotFound
package 'chrpath’
end

But it feels kinda ugly… am I missing something?


Alex Kiernan


#4

Resource cloning: Die in all the fires

Alex Kiernan wrote:

Urgh, you’ve just made me realise resource cloning is even more
insidious than I’d previously realised

On 10 Jun 2013 18:14, “Joseph Holsten” <joseph@josephholsten.com
mailto:joseph@josephholsten.com> wrote:

That is not what you want. You want to a package resource, for the
package chrpath, with action install, and the latest version
available. No extra flags to the package installer.

Just because someone else defined a package[chrpath] resource
doesn't mean any of the rest of that is true. They may using the
remove action.

CHEF-3694 just says: you've got multiple attempts to define a
resource. The only way to guarantee that those two attempts play
nice is to use a good olde fashioned eyeball, figure out what the
intersecting requirements are, and only do that once.

--
http://josephholsten.com

On Jun 10, 2013, at 4:29, Alex Kiernan <alex.kiernan@gmail.com
<mailto:alex.kiernan@gmail.com>> wrote:

> What's the right way to avoid CHEF-3694 for the simple case of
prerequiste packages?
>
> I'm about to build an oracle instantclient cookbook so I can
fold it into the database cookbook, but I want chrpath installed
so I can fix up the path in sqlplus.
>
> I could do:
>
> begin
>   resources('package[chrpath]')
> rescue Chef::Exceptions::ResourceNotFound
>   package 'chrpath'
> end
>
> But it feels kinda ugly... am I missing something?
>
> --
> Alex Kiernan