[chef] Re: Re: Using Chef to Configue Autoscaled EC2 Instances


Chronological Thread 
  • From: Aaron Abramson < >
  • To:
  • Subject: [chef] Re: Re: Using Chef to Configue Autoscaled EC2 Instances
  • Date: Thu, 10 Nov 2011 12:08:57 -0600

I've thought about this, but haven't put much work into implementing it yet.  
So this is more of a concept than anything.

Set up a script listening on a server.  It could be a simple php script, IE 
http://someurl/script.php

Set up the user-data with a bash script that hits the listener.  (wget -O 
/dev/null http://someurl/script.php?role=myrole)

The script receives the request, and it knows 2 things, the public hostname 
of the server making the request, and the "role" it is requesting.  The 
script makes certain assumptions (username, ssh-key, etc) and then executes a 
system command, calling "knife bootstrap *server* -r "role[myrole]"

So, if you auto-scale official cannonical ubuntu AMI's, simply have the 
user-data "ping" your knife listener, and knife then bootstraps the server.

Perhaps such a bootstrap request feature could be built into chef-server?


Aaron

On Nov 10, 2011, at 11:55 AM, John Martinez wrote:

> 
> Hello,
> 
> I agree with you, using knife to provision EC2 instances is not the best 
> way to do this in autoscaled environments. As a temporary solution, I've 
> done exactly what you suggest. I pass along a lot of things into user-data, 
> and specifically, a node's role is one of those. I read user-data and tell 
> Chef on the node what its role is (amongst other things). It's a kludge. 
> I'm going to be looking into integrating Chef with CloudFormation, which 
> plays nice(r) with ASGs.
> 
> http://aws.amazon.com/cloudformation/aws-cloudformation-articles-and-tutorials/
>  (second link)
> https://s3.amazonaws.com/cloudformation-examples/IntegratingAWSCloudFormationWithOpscodeChef.pdf
> 
> -john
> 
> On Nov 10, 2011, at 9:44 AM, 
> < >
>  
> < >
>  wrote:
> 
>> Hi all, I'd like to get some feedback on how people are doing this now. It
>> seems that since .10, the preferred way of starting Amazon EC2 instances 
>> is via
>> the 'knife ec2 server create' command, while the 'knife ec2 instance data' 
>> and
>> chef preinstalled AMIs are deprecated. That's all fine and good for 
>> manually
>> launching instances, but what about autoscaling? When a node comes up for
>> autoscalling, I want it to update and configure itself according to its 
>> role(s)
>> and environment. With the instance data method of doing thing deprecated,
>> what's the alternative (aside from having a custom baked AMI that I need to
>> manually update as is the normal way of doing this without chef)? If there 
>> is
>> no alternative, and I have to use the deprecated method which would mean 
>> using
>> 'knife ec2 instance data' to wire into the autoscaling group as UserData. 
>> When
>> using this method how would I specify the environment that the server 
>> should be
>> run as too? I don't see anyway to do this using the instance data. Running 
>> some
>> command outside the server after the server it is started to set the
>> environment is not an option as we won't know when a new server has been 
>> spun
>> up (controlled by Amazon). 
>
>> I'm interested in what other people have found to be best practice for this
>> scenario and any advice, tips or tricks that have been learned while 
>> trying to
>> work with chef and autoscaled EC2 instances. 
>
>> Thanks for your thoughts! 
> 




Archive powered by MHonArc 2.6.16.

§