[chef-dev] Re: Fwd: How do I know if my application has really been "provisioned"? a suggestion


Chronological Thread 
  • From: Steven Danna < >
  • To: < >
  • Subject: [chef-dev] Re: Fwd: How do I know if my application has really been "provisioned"? a suggestion
  • Date: Sun, 9 Dec 2012 11:32:36 -0800

-1 Internet for me. Apologies for the duplicate emails Bryan, sending
this to the whole list now.

On 12/9/12 11:14 AM, Bryan Berry wrote:

> I think that your example above could work for a lot of use cases and
> I could definitely could see myself using. However, it doesn't really
> apply to the specific use case I have in mind. I need chef to loop for
> a maximum specified timeout value, checking if a condition is true.
> For example, starting a JBoss instance that uses the standalone-full
> configuration will take around 20 seconds to start. A one-time check
> after an indeterminate period will not be sufficient for my needs.

I'm wondering if, rather than tying this to the service resource in
particular, a "lock" resource might be more useful.  The API might look
something like:

    lock "wait for foobar" do
      until { some_ruby_code}
      timeout 30 # default to nil to never timeout
    end

    lock "wait for wombats" do
      until "some shell command"
    end

I've seen a number of recipes that use the execute and ruby_block
resources with the retries and retry_delay attributes to mimic this
behavior.

In your example with elasticsearch, you would then have two options,
the elastic search node could lock, waiting for its service to be up.
Or the logstash node would lock waiting for elasticsearch to be up. (I
would paint my bikeshed this latter color.)

As an aside, you might want to check if elasticsearch is up simply by
making an HTTP call against one of its endpoints.  The _status endpoint
might be useful here.

Cheers,

Steven








Attachment: signature.asc
Description: OpenPGP digital signature




Archive powered by MHonArc 2.6.16.

§