Google Mail Calendar Documents Reader Web more »
Recently Visited Groups | Help | Sign in
Google Groups Home
Identify current host
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  7 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Follow-up To:
Add Cc | Add Follow-up to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers that you hear
 
Gary Richardson  
View profile   Translate to Translated (View Original)
 More options 4 July, 01:47
From: Gary Richardson <gary.richard...@gmail.com>
Date: Fri, 3 Jul 2009 17:47:35 -0700
Local: Sat 4 July 2009 01:47
Subject: Identify current host

Hey,
Two part question that I haven't been able to answer:

1) can I get the current host a task is executing on? I've read some stuff
about $CAPISTRANO:HOST$, but it doesn't seem to work for me
2) if I have an array of values (let's say an array that maps ec2 host names
to ec2 instance id's), can I use this same method to look up something from
that array?

For example:

task :example do
  instanceId = lookUpTable[hostname]
  run "somecommand -h #{hostname} -i #{instanceid}"
done

PS, the error I get when I run a task with $CAPISTRANO:HOST$ is:

  * executing "echo $CAPISTRANO:HOST$"
/usr/lib/ruby/gems/1.8/gems/capistrano-2.5.5/lib/capistrano/server_definiti on.rb:16:in
`initialize': undefined method `match' for 101:Fixnum (NoMethodError)
        from
/usr/lib/ruby/gems/1.8/gems/capistrano-2.5.5/lib/capistrano/role.rb:80:in
`new'
        from
/usr/lib/ruby/gems/1.8/gems/capistrano-2.5.5/lib/capistrano/role.rb:80:in
`wrap_server'
        from
/usr/lib/ruby/gems/1.8/gems/capistrano-2.5.5/lib/capistrano/role.rb:98:in
`wrap_list'
        from
/usr/lib/ruby/gems/1.8/gems/capistrano-2.5.5/lib/capistrano/role.rb:97:in
`map'
        from
/usr/lib/ruby/gems/1.8/gems/capistrano-2.5.5/lib/capistrano/role.rb:97:in
`wrap_list'
        from
/usr/lib/ruby/gems/1.8/gems/capistrano-2.5.5/lib/capistrano/role.rb:59:in
`to_ary'
        from
/usr/lib/ruby/gems/1.8/gems/capistrano-2.5.5/lib/capistrano/role.rb:74:in
`concat'
        from
/usr/lib/ruby/gems/1.8/gems/capistrano-2.5.5/lib/capistrano/role.rb:74:in
`dynamic_servers'
         ... 28 levels...
        from
/usr/lib/ruby/gems/1.8/gems/capistrano-2.5.5/lib/capistrano/cli/execute.rb: 14:in
`execute'
        from /usr/lib/ruby/gems/1.8/gems/capistrano-2.5.5/bin/cap:4
        from /usr/bin/cap:16:in `load'
        from /usr/bin/cap:16

Thanks!


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Rafael G.  
View profile   Translate to Translated (View Original)
 More options 6 July, 11:31
From: "Rafael G." <r...@aspgems.com>
Date: Mon, 06 Jul 2009 12:31:17 +0200
Local: Mon 6 July 2009 11:31
Subject: Re: [capistrano] Identify current host
Gary Richardson wrote:
> Hey,

> Two part question that I haven't been able to answer:

> 1) can I get the current host a task is executing on? I've read some
> stuff about $CAPISTRANO:HOST$, but it doesn't seem to work for me

I tested this task and works for me:

    task :host_name do
        run "host $CAPISTRANO:HOST$"
    end

What OS are you using? Could you paste your deploy.rb in
someplace(gist.github, pastie,...)?

> 2) if I have an array of values (let's say an array that maps ec2 host
> names to ec2 instance id's), can I use this same method to look up
> something from that array?

Capistrano uses ruby If you can do it with ruby you can do the same in a
capistrano task.

--
Rafa


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Gary Richardson  
View profile   Translate to Translated (View Original)
 More options 6 July, 16:06
From: Gary Richardson <gary.richard...@gmail.com>
Date: Mon, 6 Jul 2009 08:06:21 -0700
Local: Mon 6 July 2009 16:06
Subject: Re: [capistrano] Re: Identify current host

Hmm. That's odd..$CAPISTRANO:HOST$ wasn't working for me on Friday. Must be
them gremlins.
Is there another variable I can use to get the current host in the ruby
code? This is what I'm trying to do:

  task :bootstrap, :roles => [:master] do
        # instanceids is an array containing hostname => instanceid
id = instanceids["$CAPISTRANO:HOST$"]
run "register_host -H $CAPISTRANO:HOST$ -s #{id}"
  end

Obviously, $CAPISTRANO:HOST$ doesn't interpolate on the id = instanceids[]
line.

Thanks!


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jamis Buck  
View profile   Translate to Translated (View Original)
 More options 6 July, 16:35
From: Jamis Buck <ja...@37signals.com>
Date: Mon, 6 Jul 2009 09:35:08 -0600
Local: Mon 6 July 2009 16:35
Subject: Re: [capistrano] Re: Identify current host
On Mon, Jul 6, 2009 at 9:06 AM, Gary

Richardson<gary.richard...@gmail.com> wrote:
> Hmm. That's odd..$CAPISTRANO:HOST$ wasn't working for me on Friday. Must be
> them gremlins.
> Is there another variable I can use to get the current host in the ruby
> code? This is what I'm trying to do:

Short answer: no.

Longer answer: yes, kind of.

Keep in mind one key concept: capistrano does not run a command on
each server sequentially; it runs the commands on all servers in
parallel. Thus, within a task, there is no such thing as a "current
host". What you have is a set of servers that match the current task,
and all commands invoked within that task will run in parallel on that
set of servers.

So, what you can do is get the list of matching servers:

  task :bootstrap, :roles => :master do
    servers = find_servers_for_task(current_task)
    servers.each do |server|
       puts "host: #{server.host}"
    end
  end

- Jamis


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Rafael G.  
View profile   Translate to Translated (View Original)
 More options 6 July, 16:42
From: "Rafael G." <r...@aspgems.com>
Date: Mon, 06 Jul 2009 17:42:13 +0200
Local: Mon 6 July 2009 16:42
Subject: Re: [capistrano] Re: Identify current host
Jamis Buck reply sometimes ago to this question:

http://groups.google.com/group/capistrano/browse_thread/thread/a83de6...[Capistrano]+Which+server+is+this+task+being+executed+on%3F#89b55c5b7417755 4

--
Rafa

    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Rafael G.  
View profile   Translate to Translated (View Original)
 More options 6 July, 16:43
From: "Rafael G." <r...@aspgems.com>
Date: Mon, 06 Jul 2009 17:43:00 +0200
Subject: Re: [capistrano] Re: Identify current host
Sorry, I didn't saw your reply :-)

--
Rafa

    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Gary Richardson  
View profile   Translate to Translated (View Original)
 More options 6 July, 22:35
From: Gary Richardson <gary.richard...@gmail.com>
Date: Mon, 6 Jul 2009 14:35:02 -0700
Local: Mon 6 July 2009 22:35
Subject: Re: [capistrano] Re: Identify current host

Ok, I'm moving along here. This is what I've come up with:
task :host_name do
  servers = find_servers_for_task(current_task)
  servers.each do |server|
set :myServer, server.host
set :myId, instanceids[myServer]
real_host_name(:hosts => [myServer])
  end
end

task :real_host_name do
  run "echo #{myServer} - #{myId}"
end

The problem is that "real_host_name(:hosts => [myServer])" doesn't do what I
expect it to :( -- real_host_name ends up getting called for all hosts in
the current role.

Is there a way to change :hosts/:roles for a sub-task? Or possible call run
with a limited subset of hosts?

Is there a better way of doing this?

Thanks!


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »

Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2009 Google