capstrap 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.markdown CHANGED
@@ -1,3 +1,8 @@
1
+ # 0.4.0
2
+
3
+ * Tweak RVM ubuntu package dependencies.
4
+ * Add --hostname flag to set remote hostname (duh).
5
+
1
6
  # 0.3.3
2
7
 
3
8
  * Add call to apt-get update pre-package install
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- capstrap (0.3.2)
4
+ capstrap (0.3.3)
5
5
  capistrano (~> 2.5.19)
6
6
  thor (~> 0.14.3)
7
7
 
data/README.markdown CHANGED
@@ -75,6 +75,10 @@ To save config options to a yaml file to be read by capstrap:
75
75
  config-rake-update: true
76
76
  END_OF_CAPSTRAPRC
77
77
 
78
+ To set the remote hostname, use the --hostname flag:
79
+
80
+ capstrap solo root@zland --hostname=zland
81
+
78
82
  To get more help:
79
83
 
80
84
  capstrap help
@@ -3,9 +3,10 @@ module Capstrap
3
3
 
4
4
  APT_RVM_PKGS = %w{sed grep tar gzip bzip2 bash curl git-core}
5
5
 
6
- APT_MRI_AND_REE_PKGS = %w{build-essential bison openssl libreadline5
7
- libreadline-dev zlib1g zlib1g-dev libssl-dev vim libsqlite3-0
8
- libsqlite3-dev sqlite3 libxml2-dev subversion autoconf ssl-cert}
6
+ APT_MRI_AND_REE_PKGS = %w{build-essential bison openssl libreadline6
7
+ libreadline6-dev zlib1g zlib1g-dev libssl-dev libsqlite3-0
8
+ libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev subversion autoconf
9
+ ssl-cert}
9
10
 
10
11
  def self.load_into(configuration)
11
12
  configuration.load do
@@ -101,6 +101,14 @@ def config_repo_installed?
101
101
  cmd_test %{-d "#{config_path}"}
102
102
  end
103
103
 
104
+ ##
105
+ # Checks if the hostname is current and correct.
106
+ #
107
+ # @param [String] desired hostname
108
+ def hostname_correct?(host_name)
109
+ host_name == capture(%{hostname}).chomp
110
+ end
111
+
104
112
  def update_cmd
105
113
  if cookbooks_rake_update
106
114
  %{rake update}
@@ -0,0 +1,29 @@
1
+ module Capstrap
2
+ module Hostname
3
+
4
+ def self.load_into(configuration)
5
+ configuration.load do
6
+
7
+ namespace :hostname do
8
+
9
+ desc "Sets the hostname."
10
+ task :set_hostname do
11
+ unless hostname_correct?(host_name)
12
+ cmd = [
13
+ %{echo "#{host_name}" > /etc/hostname},
14
+ %{chown root:root /etc/hostname},
15
+ %{chmod 0644 /etc/hostname},
16
+ %{start hostname}
17
+ ]
18
+ run cmd.join(" && ")
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ if Capistrano::Configuration.instance
28
+ Capstrap::Hostname.load_into(Capistrano::Configuration.instance)
29
+ end
data/lib/capstrap/cli.rb CHANGED
@@ -68,6 +68,10 @@ module Capstrap
68
68
  method_option "ruby", :for => task, :type => :string,
69
69
  :desc => "Version of ruby to install.",
70
70
  :default => "ree-1.8.7"
71
+
72
+ method_option "hostname", :for => task, :type => :string,
73
+ :desc => "Desired name of host.",
74
+ :aliases => "-h"
71
75
  end
72
76
 
73
77
  [:chef, :solo, :execute, :update].each do |task|
@@ -114,29 +118,41 @@ module Capstrap
114
118
  end
115
119
 
116
120
  def exec_ruby
121
+ exec_hostname unless @ran_exec_hostname
117
122
  config.find_and_execute_task "rvm:install:#{config.fetch(:ruby)}"
118
123
  config.find_and_execute_task "rvm:default:#{config.fetch(:ruby)}"
119
124
  end
120
125
 
121
126
  def exec_chef
127
+ exec_hostname unless @ran_exec_hostname
122
128
  exec_ruby
123
129
  config.find_and_execute_task "chef:install:lib"
124
130
  end
125
131
 
126
132
  def exec_solo
133
+ exec_hostname unless @ran_exec_hostname
127
134
  exec_chef
128
135
  config.find_and_execute_task "chef:install:cookbooks"
129
136
  config.find_and_execute_task "chef:install:config"
130
137
  end
131
138
 
132
139
  def exec_execute
140
+ exec_hostname unless @ran_exec_hostname
133
141
  exec_solo
134
142
  config.find_and_execute_task "chef:execute:solo"
135
143
  end
136
144
 
137
145
  def exec_update
146
+ exec_hostname unless @ran_exec_hostname
138
147
  config.find_and_execute_task "chef:execute:update"
139
148
  end
149
+
150
+ def exec_hostname
151
+ if config.exists?(:host_name)
152
+ config.find_and_execute_task "hostname:set_hostname"
153
+ end
154
+ @ran_exec_hostname = true
155
+ end
140
156
 
141
157
  def config
142
158
  @config ||= prep_config
@@ -147,6 +163,7 @@ module Capstrap
147
163
  config.logger.level = Capistrano::Logger::TRACE
148
164
  config.role(:remote_host, @ssh_host)
149
165
 
166
+ Capstrap::Hostname.load_into(config)
150
167
  Capstrap::Apt.load_into(config)
151
168
  Capstrap::Core.load_into(config)
152
169
  Capstrap::RVM.load_into(config)
@@ -158,6 +175,7 @@ module Capstrap
158
175
  def setup_config(cli_options)
159
176
  abort ">> HOST must be set" unless @ssh_host
160
177
 
178
+ @ran_exec_hostname = false
161
179
  options = Hash.new
162
180
  options.merge!(cli_options)
163
181
  if File.exists?(options["config"])
@@ -169,7 +187,8 @@ module Capstrap
169
187
  {:sym => :cookbooks_repo, :opt => "cookbooks-repo"},
170
188
  {:sym => :cookbooks_path, :opt => "cookbooks-path"},
171
189
  {:sym => :config_repo, :opt => "config-repo"},
172
- {:sym => :config_path, :opt => "config-path"}
190
+ {:sym => :config_path, :opt => "config-path"},
191
+ {:sym => :host_name, :opt => "hostname"}
173
192
  ].each do |var|
174
193
  config.set(var[:sym], options[var[:opt]]) if options[var[:opt]]
175
194
  end
@@ -1,3 +1,3 @@
1
1
  module Capstrap
2
- VERSION = "0.3.3"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/capstrap.rb CHANGED
@@ -3,6 +3,7 @@ require 'yaml'
3
3
  require 'capistrano'
4
4
  require 'capistrano/cli'
5
5
 
6
+ require 'capistrano/ext/capstrap/hostname'
6
7
  require 'capistrano/ext/capstrap/apt'
7
8
  require 'capistrano/ext/capstrap/core'
8
9
  require 'capistrano/ext/capstrap/rvm'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capstrap
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 3
9
- - 3
10
- version: 0.3.3
8
+ - 4
9
+ - 0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Fletcher Nichol
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-10 00:00:00 -07:00
18
+ date: 2011-01-21 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -107,6 +107,7 @@ files:
107
107
  - lib/capistrano/ext/capstrap/apt.rb
108
108
  - lib/capistrano/ext/capstrap/chef.rb
109
109
  - lib/capistrano/ext/capstrap/core.rb
110
+ - lib/capistrano/ext/capstrap/hostname.rb
110
111
  - lib/capistrano/ext/capstrap/rvm.rb
111
112
  - lib/capstrap.rb
112
113
  - lib/capstrap/cli.rb