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 +5 -0
- data/Gemfile.lock +1 -1
- data/README.markdown +4 -0
- data/lib/capistrano/ext/capstrap/apt.rb +4 -3
- data/lib/capistrano/ext/capstrap/core.rb +8 -0
- data/lib/capistrano/ext/capstrap/hostname.rb +29 -0
- data/lib/capstrap/cli.rb +20 -1
- data/lib/capstrap/version.rb +1 -1
- data/lib/capstrap.rb +1 -0
- metadata +6 -5
data/CHANGELOG.markdown
CHANGED
data/Gemfile.lock
CHANGED
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
|
7
|
-
|
8
|
-
libsqlite3-dev sqlite3 libxml2-dev subversion autoconf
|
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
|
data/lib/capstrap/version.rb
CHANGED
data/lib/capstrap.rb
CHANGED
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:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
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:
|
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
|