capstrap 0.3.3 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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