[chef] Re: Re: Re: Re: Re: Re: Re: Re: Partial Convergence Support


Chronological Thread 
  • From: Lamont Granquist < >
  • To:
  • Cc: Adam Jacob < >
  • Subject: [chef] Re: Re: Re: Re: Re: Re: Re: Re: Partial Convergence Support
  • Date: Tue, 24 Jun 2014 15:37:50 -0700


here's some similar stuff i wrote for my own use. in this case i'm searching for rails apps in order to setup nginx config. i just used pure-ruby libraries and did a retry/sleep loop. mostly i'm just worried about the delay between writing the node data and it showing up in search, so i loop waiting for it to show up.

https://gist.github.com/lamont-granquist/f6f5c633c732ed1522b0

chef providers also support retries and retry_delay settings. if you go that route with ruby_blocks to search though you will probably have an interesting time with compile/converge mode problems later, using a pure ruby library which does all its work in compile mode means you can use that information to dynamically generate resources a bit more straightforwards.

On Mon Jun 23 20:10:03 2014, Adam Jacob wrote:
Gotcha. You can do this on a resource-by-resource basis by setting
"ignore_failure true" on a resource. Probably the easiest thing would
be to encapsulate your setup in an LWRP, set ignore_failure on that
call, and move the group of resources inside the LWRP resource.

Adam


On Mon, Jun 23, 2014 at 8:02 PM, Greg Zapp 
<
<mailto: >>
 wrote:

    I'll try to expand on it a bit more :)

    I have a lot of websites that need to be installed or upgraded,
    potentially.  They use a custom installer and this phase requires
    the database having already been setup or upgraded.  These
    database configurations are handled outside the web cluster.  The
    site information comes from a rest API.  A custom service runs
    Chef when a cluster change is reflect in the API. This service
    also records the timestamp of the most recent resource from the
    remote API when Chef has fully converged the node.  It will run
    Chef again if the remote API indicates the cluster has changed.

    This all works well however I'm looking to improve one aspect:
    Sites whose databases are not ready currently end the run.  This
    blocks other site's resources from being processed and is not very
    efficient.  So, I want to skip those sites and indicate that the
    node is "partially converged" to my service that runs Chef so that
    it knows the node is not fully converged and can run it again
    until it is.

    The two most direct methods I can think of involve a custom report
    handler that can tell if something was postponed/skipped/etc.  If
    so it could:
    A.) Exit Chef with a custom exit code
    B.) Print something to stdout that will be parsed

    I'm curious if anyone knows of such a handler, or has any
    experience in implementing an N-run converge setup.

    Cheers,
       -Greg


    On Tue, Jun 24, 2014 at 12:55 PM, Adam Jacob 
<
    
<mailto: >>
 wrote:

        I don't understand what you're trying to accomplish. :) Can
        you give us more of a use case?


        On Mon, Jun 23, 2014 at 5:46 PM, Greg Zapp
        
<
 
<mailto: >>
 wrote:

            Hi Adam,

            Are you aware of any built-in way to indicate it has not
            completed without throwing an exception or otherwise
            stopping the run?

            Thanks,
               -Greg


            On Tue, Jun 24, 2014 at 12:41 PM, Adam Jacob
            
<
 
<mailto: >>
 wrote:

                A non zero exit code does exactly that in Chef. If it
                is completed, we return 0.

                On Jun 23, 2014 4:18 PM, "Greg Zapp"
                
<
 
<mailto: >>
 wrote:

                    Non-zero exit codes do not necessarily, or do not
                    have to, indicate an error.

                    I'm trying to accomplish Chef finishing and
                    indicating it has not fully converged the node.  I
                    apologize if that wasn't clear in my original post.

                    -Greg


                    On Tue, Jun 24, 2014 at 11:08 AM, Noah Kantrowitz
                    
<
 
<mailto: >>
                    wrote:

                        It should exit with a non zero code if there
                        is an error, what are you trying to accomplish!


                        On June 23, 2014 3:59:17 PM PDT, Greg Zapp
                        
<
                        
<mailto: >>
 wrote:

                            Hello,

                            Is anyone aware of a handler, or a
                            technique in use, for indicating that Chef
                            has not successfully converged the node?

                            I'm considering writing a custom handler
                            that will check an "unfinished" flag and
                            either kill chef with a custom exit code(
                            :| ) or write something to stdout that I
                            can look for.


                            Cheers,
                               -Greg






        --
        Opscode, Inc.
        Adam Jacob, Chief Dev Officer
        T: (206) 619-7151 <tel:%28206%29%20619-7151> E:
        

 
<mailto: >





--
Opscode, Inc.
Adam Jacob, Chief Dev Officer
T: (206) 619-7151 E: 

 
<mailto: >





Archive powered by MHonArc 2.6.16.

§