- From: "John E. Vincent (lusis)" <
>
- To: Charles Sullivan <
>
- Cc:
- Subject: [chef] Re: Re: Re: Re: Re: Re: Re: Deploying .war files?
- Date: Tue, 21 Jun 2011 14:21:48 -0400
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:reply-to:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=cCAFU7OAi6vJxmZJVOuf+mvrWynS7DHtRtGSnn3EBERJGcMUd4qdkWza4eqjdG96pg toGpyh2tKk9UXJOxtFCuJjIYu6l3BpnkpbWjVng6UgS3+BariCvoO4o1/69Y95GBeZux 1vZyvLq7wQTWRQUukzVl+bMMKaP202zpKzNwg=
Yeah we actually do something similar specific for bootstrapping new
nodes. We have a cookbook per application (around 7 or so now) and
each cookbook has a "bootstrap" recipe. This is part of the bootstrap
and then is removed from the run_list after it's online. This also
does things like add the node to our ELB pool.
Everything after that is a Jenkins push.
On Tue, Jun 21, 2011 at 2:16 PM, Charles Sullivan
<
>
wrote:
>
I've also found that doing multiple deploys via Tomcat API doesn't work well
>
so I'm using a build based approach with all new instances.. to do this
>
I've created a custom Bootstrap template for EC2. I've added the following
>
which gets slurped up and read in my recipe. I then pull the appropriate
>
file from S3. My web layer knows about all of the different builds
>
available and can direct different clients to the correct build for their DB
>
state...
>
(
>
cat <<'EOP'
>
build: <%= ENV['BUILD'] %>
>
EOP
>
) > /tmp/build.yml
>
>
>
---- spinner script ---
>
#!/bin/bash
>
echo
>
if test -z "$1"
>
then
>
echo "No build number passed"
>
echo "Usage: "
>
echo "sledgehammer_app_prod.sh <build-number>"
>
else
>
echo "Starting Production Server w/ Build #: $1."
>
BUILD=$1 knife ec2 server create \
>
-I ami-04c9306d \
>
-f m1.large \
>
-S production \
>
-E production \
>
-G application_layer,chef_client,production \
>
-x ubuntu \
>
--template-file ~/chef-repo/templates/sledgehammer_app.erb \
>
-i ~/.ssh/production.pem \
>
-r
>
recipe[sledgehammer_app],recipe[zabbix::client],recipe[splunk::light_forwarder]
>
fi
>
>
>
>
On Tue, Jun 21, 2011 at 1:04 PM, John E. Vincent (lusis)
>
<
>
>
wrote:
>
>
>
> Specifically on the process management front, we're using jetty. We
>
> tried the hot deploy and it pretty much became unreliable after 5 or
>
> so deploys a day.
>
>
>
> We've since moved to using supervisord to manage our jetty processes.
>
> We just do a full restart at deploy time. It's sequentially done in
>
> jenkins right now so we don't lose all of our capacity at once. We
>
> pull the war + appropriate configs from S3.
>
>
>
> On Tue, Jun 21, 2011 at 1:57 PM, KC Braunschweig
>
> <
>
>
> wrote:
>
> > A couple other thoughts for you:
>
> >
>
> > - We do this by keeping builds as maven (http://maven.apache.org/)
>
> > artifacts in a nexus repository (http://nexus.sonatype.org/) and
>
> > deploy with a custom artifact deployer cookbook. With nexus you have a
>
> > nice API you can use to determine the right build to deploy and
>
> > compare to what was deployed. Although we haven't released that
>
> > cookbook yet, if you're having issues, I'll prod my teammate that
>
> > wrote it to help you.
>
> >
>
> > - Keep in mind if you end up doing live deployments (i.e. don't
>
> > restart tomcat) you may run into memory issues. I've had problems with
>
> > pretty much every java container trying to do live deploys. Basically
>
> > the JVM leaks memory and eventually you hang the JVM. Since the
>
> > failure happens indeterminately, I decided better to deal with
>
> > restarts and have a repeatable process then to attempt a live deploy
>
> > that may fail randomly, if infrequently. However, I've heard tomcat 7
>
> > tries to work around this issues and maybe its better?
>
> >
>
> > KC
>
> >
>
> > On Tue, Jun 21, 2011 at 4:44 AM, Matthew Drobnak
>
> > <
>
>
> > wrote:
>
> >> I appreciate everyone's input so far.
>
> >> Seth, I totally missed the application cookbook. I'll look into that
>
> >> and
>
> >> hopefully can get at least 1 piece running with Chef!
>
> >> I love the premise, but all of the configuration management systems
>
> >> seem to
>
> >> have a bit of a steep climb before it becomes easy and powerful. :)
>
> >> Thanks again.
>
> >> -Matt
>
> >>
>
> >> On Jun 21, 2011, at 12:10 AM, Seth Chisamore wrote:
>
> >>
>
> >> The java_webapp recipe in the application cookbook [0][1] was created
>
> >> to
>
> >> accomplish just this task!
>
> >> The Java Quick Start [1] has a full working example of using this
>
> >> recipe to
>
> >> deploy a Java webapp, including setting up an environment
>
> >> specific context.xml with database connection information.
>
> >> Seth
>
> >> --
>
> >> Opscode, Inc.
>
> >> Seth Chisamore, Senior Technical Evangelist
>
> >> IRC, Skype, Twitter, Github: schisamo
>
> >> [0] http://community.opscode.com/cookbooks/application
>
> >>
>
> >> [1] https://github.com/opscode/cookbooks/blob/master/application/README.md
>
> >> [2] http://help.opscode.com/kb/otherhelp/build-a-java-web-stack
>
> >>
>
> >>
>
> >> On Mon, Jun 20, 2011 at 11:35 PM, Ken Mazaika
>
> >> <
>
>
> >> wrote:
>
> >>>
>
> >>> could you use something like capistrano for java?
>
> >>>
>
> >>> On Mon, Jun 20, 2011 at 11:32 PM, Edward Sargisson
>
> >>> <
>
>
> >>> wrote:
>
> >>>>
>
> >>>> I need to do the same thing but haven't written it yet. Here's my
>
> >>>> plan
>
> >>>> - hopefully others can critique.
>
> >>>>
>
> >>>> Firstly, you don't want to stop tomcat. Chef runs every 20 minutes or
>
> >>>> so (or whenever you set it for) so it would stop your server every 20
>
> >>>> minutes. Instead, you should work out if the file on your file server
>
> >>>> has changed and then do the update. In my case, my build artifacts
>
> >>>> have a build id. I plan to store the desired build id in a data bag
>
> >>>> *.
>
> >>>> The deployed data bag goes into the node data. Then, on the chef run
>
> >>>> it can compare and then run the update if required.
>
> >>>>
>
> >>>> When you do the update you don't need to stop tomcat. Instead you
>
> >>>> download the WAR to a temp directory then go to the webapps dir and
>
> >>>> delete the directory for your webapp as well as the old WAR. Then you
>
> >>>> copy the WAR in. (You can't download directly because then Tomcat
>
> >>>> un-jars it before it's downloaded). Tomcat then un-jars it and starts
>
> >>>> it up for you.
>
> >>>>
>
> >>>> Cheers,
>
> >>>> Edward
>
> >>>>
>
> >>>> * Amusingly, I forgot the name for data bag and my mind came up with
>
> >>>> drop bag. Once a trail runner, always a trail runner... :-)
>
> >>>>
>
> >>>> On Mon, Jun 20, 2011 at 8:25 PM,
>
> >>>> <
>
>
> >>>> wrote:
>
> >>>> > Hi everyone,
>
> >>>> > I'm fairly new to Chef. I downloaded and deployed the tomcat
>
> >>>> > cookbook
>
> >>>> > to a
>
> >>>> > node, and now I'm trying to add a recipe? or another cookbook, I'm
>
> >>>> > not
>
> >>>> > sure
>
> >>>> > really...to deploy our web app that should run on Tomcat.
>
> >>>> >
>
> >>>> > I basically want the node to stop tomcat, delete everything in the
>
> >>>> > webapps
>
> >>>> > directory, and scp a file to the right spot..then start tomcat.
>
> >>>> >
>
> >>>> > I looked briefly at the deploy resource, but that's from a version
>
> >>>> > control
>
> >>>> > system...we don't keep builds in version control, only the
>
> >>>> > source..the
>
> >>>> > binary
>
> >>>> > builds are on a server, so I don't think that's what I want.
>
> >>>> >
>
> >>>> > If anyone can point me in the right direction to get this going,
>
> >>>> > that
>
> >>>> > would be
>
> >>>> > greatly appreciated.
>
> >>>> >
>
> >>>> > Thanks.
>
> >>>> >
>
> >>>> > -Matt
>
> >>>> >
>
> >>>
>
> >>
>
> >>
>
> >>
>
> >
>
>
>
>
--
>
Charles Sullivan
>
>
>
Archive powered by MHonArc 2.6.16.