Oops, I forgot the deploy_to_instances method.
def deploy_to_instances(instances, memoized_role_host_snapshot)
vip = VipNetwork::Service.new(stage)
restrict_roles_to_use_specified_instances(instances,
memoized_role_host_snapshot)
remove_instances_from_vip(vip, instances)
deploy_without_events_attached
add_instances_to_vip(vip, instances)
end
On Fri, Jan 30, 2009 at 10:46 AM, Brian Takita <[email protected]> wrote:
> We are doing a rolling deploy.
>
> Here is our task:
>
> desc "Does a rolling deploy to the application instances. NOTE: Do
> not use this task if there are database migrations."
> task :rolling do
> memoized_role_host_snapshot = role_host_snapshot
> first_half_of_instances, second_half_of_instances =
> split_all_instances_into_two_halves
>
> deploy_to_instances(first_half_of_instances, memoized_role_host_snapshot)
> deploy_to_instances(second_half_of_instances,
> memoized_role_host_snapshot)
>
> restrict_roles_to_use_specified_instances(first_half_of_instances
> + second_half_of_instances, memoized_role_host_snapshot)
> git_repo.update_environment_tag
> end
>
>
> On Fri, Jan 30, 2009 at 10:14 AM, Jamis Buck <[email protected]> wrote:
>>
>> 1. Define your roles in each stage file. E.g.
>>
>> # config/deploy/staging.rb
>> role :app, "stage-app-01", "stage-app-02"
>>
>> # config/deploy/production.rb
>> role :app, "prod-app-01", "prod-app-02"
>>
>> 2. Put the snippet in a task.
>>
>> task :foo do
>> find_servers(:roles => :app).each do |server|
>> # ...
>> end
>> end
>>
>> 3. There is no step three!
>>
>> - Jamis
>>
>> On 1/30/09 7:51 AM, Gerhardus Geldenhuis wrote:
>>> True,
>>> But I do need multistage to deploy to different stages eg production,
>>> test, demo, load-test etc.
>>>
>>> I have also defined stages for different application stacks in
>>> production for example. eg prod-app1, prod-app2
>>>
>>> We need to deploy our tomcat application to one server at a time in
>>> production to prevent any outages. We handle about 350 web
>>> transactions a second on a busy day in one of our environments which
>>> makes it critical that deployment is one at a time. I have been trying
>>> to modify this line to be a task
>>> find_servers(:roles => :foo).each do |server|
>>> but no success so far. It is probably due to my lack of ruby language
>>> knowledge.
>>>
>>> In the example given a specific role is given, however all my tasks
>>> defined in my cap file have no specific role attached and will thus
>>> execute for all servers defined in the config file of the stage.
>>>
>>> Regards
>>>
>>> On Jan 30, 2:23 pm, Lee Hambley <[email protected]> wrote:
>>>> Ger,
>>>>
>>>> You don't need multistage to deploy to an array of servers?
>>>>
>>>> - Lee
>>>>
>>>> 2009/1/30 Gerhardus Geldenhuis <[email protected]>:
>>>>
>>>>
>>>>
>>>>> Hi
>>>>> I have finally found time to start implementing this but am a bit
>>>>> stuck atm. I am not sure how to convert this code snippet into a
>>>>> working task. I also need to adapt my task to work in a multistage
>>>>> environment where I set my role definition in each stage's config
>>>>> file.
>>>>> Regards
>>>>> On Jan 28, 3:31 pm, Jamis Buck <[email protected]> wrote:
>>>>>> find_servers(:roles => :foo).each do |server|
>>>>>> run "disable server on load balancer", :host => server
>>>>>> run "install new software", :host => server
>>>>>> run "test server", :host => server
>>>>>> # etc.
>>>>>> end
>>>>>> - Jamis
>>>>>> On 1/28/09 8:16 AM, Gerhardus Geldenhuis wrote:
>>>>>>> Hi
>>>>>>> I need to do something like the following:
>>>>>>> for server in role do
>>>>>>> Disable server on load balancer
>>>>>>> Install new software
>>>>>>> Test Server
>>>>>>> Enable server in load balancer
>>>>>>> If successful then deploy next server else fail/rollback.
>>>>>>> done
>>>>>>> The individual steps is not a problem but I am unsure how to approach
>>>>>>> the sequential install in a capistrano way.
>>>>>>> I could not find anything on the wiki or list archives.
>>>>>>> Regards
>>> >
>>
>>
>> >>
>>
>
--~--~---------~--~----~------------~-------~--~----~
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at http://groups.google.com/group/capistrano
-~----------~----~----~----~------~----~------~--~---