fhcap-cli 0.4.11 → 0.4.12
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/cookbooks/provision/recipes/ose_reset_cluster.rb +41 -0
- data/lib/cookbooks/provision/recipes/post_create_instances.rb +2 -1
- data/lib/fhcap.rb +1 -1
- data/lib/fhcap/component.rb +12 -7
- data/lib/fhcap/tasks/chef/cookbook/update_artifact.rb +10 -6
- data/lib/fhcap/tasks/chef/cookbook/update_config.rb +1 -1
- data/lib/fhcap/tasks/cluster/create_dns_records.rb +30 -28
- data/lib/fhcap/tasks/cluster/create_environment.rb +3 -1
- data/lib/fhcap/version.rb +1 -1
- data/spec/fhcap/tasks/chef/cookbook/update_artifact_spec.rb +39 -13
- data/templates/chef/environment_ose-multi-node.json.erb +30 -0
- data/templates/cluster/aws/common.json.erb +25 -2
- data/templates/cluster/aws/ose-multi-node.json.erb +230 -0
- data/templates/cluster/aws/ose-single.json.erb +3 -2
- data/templates/cluster/openstack/ose-multi-node.json.erb +30 -0
- data/templates/cluster/openstack/ose-single.json.erb +3 -2
- data/templates/cluster/ose-multi-node.json.erb +8 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 586e4b4984cbf2ee4847cfa59ca3a69bb7784345
|
4
|
+
data.tar.gz: bb3fc51822d6289862e760de8251eea9abbb2689
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab9358a1d95772e4bc80f9b256da13a476c0b2075eb3b11dd90377d64645229a0808761d811f6562b68275b844cc231d74f4c476a162ff779c31ecdb62434742
|
7
|
+
data.tar.gz: c7410c8d9b6ec940b8b130ffefbd1f7504961fe1f53ba7a5d6fdff1bd05d80aa29ccabdb6633a5a3e8aa10e1610f29bd9b2a1136d1bfa969392fdf6f604a031a
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
|
2
2
|
## Unreleased
|
3
3
|
|
4
|
+
## 0.4.12
|
5
|
+
|
6
|
+
* [RHMAP-14106] - Add cookbook option to component update tasks. Allows updating the version of a component that isn't contained in a cookbook of the same name.
|
7
|
+
* [RHMAP-13583] - Adding support for NFS server in Openshift Multi Node templates
|
8
|
+
* [RHMAP-13133] - Add options to component update task that allow any stage to be skipped (artifact/config/cookbook update)
|
9
|
+
* [RHMAP-13133] - Use force flag to force attribute file update during component update if set to true.
|
10
|
+
* [RHMAP-13137] - Openshift Multi Node Cluster support: Added new templates, environments and post create recipes for both AWS and Openstack
|
11
|
+
* [RHMAP-13265] - Modified DNS creation logic to support ELBs in AWS Openshift Multi Node Cluster template (ose_multi_node)
|
12
|
+
|
4
13
|
## 0.4.11
|
5
14
|
|
6
15
|
* Fix component update for components that do not have a config that can be parsed into chef attributes (unifiedpush)
|
@@ -0,0 +1,41 @@
|
|
1
|
+
include_recipe 'provision::common'
|
2
|
+
include_recipe "provision::#{node['driver']}"
|
3
|
+
|
4
|
+
with_cluster_instances(node) do |cluster_instances|
|
5
|
+
cluster_instances.each do |chef_environment, instances|
|
6
|
+
with_chef_environment chef_environment do
|
7
|
+
|
8
|
+
search_role = '.*ose.*_server'
|
9
|
+
run_list_query = /role\[#{search_role}\]/
|
10
|
+
|
11
|
+
ose_instances = instances.select do |name, cfg|
|
12
|
+
if cfg[:instance_config] && cfg[:instance_config][:run_list] && cfg[:instance_config][:run_list].index { |s| s =~ run_list_query }
|
13
|
+
node.default['tmp_node_run_list'] = {} unless node['tmp_node_run_list']
|
14
|
+
tmp_run_list = node['tmp_node_run_list'][name] ? node['tmp_node_run_list'][name].dup : []
|
15
|
+
if cfg[:instance_config][:run_list].include?("role[ose_storage_server]")
|
16
|
+
tmp_run_list << 'role[ose_storage_server]'
|
17
|
+
else
|
18
|
+
tmp_run_list << 'recipe[openshift::common]'
|
19
|
+
end
|
20
|
+
cfg[:instance_config][:tmp_run_list] = tmp_run_list
|
21
|
+
node.default['tmp_node_run_list'][name] = tmp_run_list
|
22
|
+
true
|
23
|
+
else
|
24
|
+
false
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
machine_batch "ose_reset_cluster: Batch Provison" do
|
29
|
+
ose_instances.each do |name, cfg|
|
30
|
+
machine name do
|
31
|
+
chef_environment chef_environment
|
32
|
+
machine_options(cfg[:machine_options])
|
33
|
+
run_list cfg[:instance_config][:tmp_run_list]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
action :converge
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/fhcap.rb
CHANGED
@@ -3,7 +3,7 @@ require "pathname"
|
|
3
3
|
|
4
4
|
module Fhcap
|
5
5
|
GEM_DIR = File.expand_path '..', File.dirname(__FILE__)
|
6
|
-
TEMPLATE_NAMES = %w{single core-3node mbaas-3node core-mbaas-6node core-small-9node nginx-test single-blank farm-3node farm-5node farm-single ose-single}.sort
|
6
|
+
TEMPLATE_NAMES = %w{single core-3node mbaas-3node core-mbaas-6node core-small-9node nginx-test single-blank farm-3node farm-5node farm-single ose-single ose-multi-node}.sort
|
7
7
|
|
8
8
|
class << self
|
9
9
|
def source_root
|
data/lib/fhcap/component.rb
CHANGED
@@ -7,36 +7,41 @@ module Fhcap
|
|
7
7
|
|
8
8
|
add_shared_option :verbose, :aliases => "-v", :desc => "Verbose output", :type => :boolean, :required => false, :default => false
|
9
9
|
add_shared_option :interactive, :aliases => "-i", :desc => "Interactive mode (Stops for input)", :type => :boolean, :required => false, :default => false
|
10
|
+
add_shared_option :cookbook, :desc => "Cookbook where component artifact version is stored if different from component name", :type => :string, :required => false
|
10
11
|
|
11
12
|
desc "update COMPONENT VERSION BUILD", "Update a single component"
|
12
13
|
|
13
|
-
shared_options :interactive, :verbose
|
14
|
+
shared_options :interactive, :verbose, :cookbook
|
14
15
|
method_option 'force', :type => :boolean, :aliases => "-f", :desc => "Will force the component version update even if the artifact cant be found"
|
15
16
|
method_option 'level', :type => :string, :aliases => "-l", :desc => "Cookbook Bump level", :default => 'minor', :enum => %w{major minor patch}
|
17
|
+
method_option 'update-artifact', :desc => "Update component artifact", :type => :boolean, :required => false, :default => true
|
18
|
+
method_option 'update-config', :desc => "Update component config", :type => :boolean, :required => false, :default => true
|
19
|
+
method_option 'update-cookbook', :desc => "Update component cookbook", :type => :boolean, :required => false, :default => true
|
16
20
|
|
17
21
|
def update(component, version, build)
|
18
22
|
|
23
|
+
artifact_cookbook = options[:cookbook] || component
|
19
24
|
#1. Update artifact version
|
20
|
-
Fhcap::CLI::Component.new.invoke(:update_artifact, [component, version, build], {interactive: options[:interactive]})
|
25
|
+
Fhcap::CLI::Component.new.invoke(:update_artifact, [component, version, build], {cookbook: artifact_cookbook, interactive: options[:interactive]}) if options['update-artifact']
|
21
26
|
|
22
27
|
#2. Update config
|
23
|
-
Fhcap::CLI::Component.new.invoke(:update_config, [
|
28
|
+
Fhcap::CLI::Component.new.invoke(:update_config, [artifact_cookbook], {force: options[:force]}) if options['update-config']
|
24
29
|
|
25
30
|
#3. Update cookbook
|
26
|
-
Fhcap::CLI::Cookbook.new.invoke(:update, [], {cookbooks: [
|
31
|
+
Fhcap::CLI::Cookbook.new.invoke(:update, [], {cookbooks: [artifact_cookbook], level: options['level']}) if options['update-cookbook']
|
27
32
|
|
28
33
|
end
|
29
34
|
|
30
35
|
desc "update_artifact COMPONENT VERSION BUILD", "Update a single component artifact"
|
31
36
|
|
32
|
-
shared_options :interactive
|
37
|
+
shared_options :interactive, :cookbook
|
33
38
|
|
34
39
|
def update_artifact(component, version, build)
|
35
40
|
require "fhcap/tasks/chef/cookbook/update_artifact"
|
36
|
-
Tasks::Chef::Cookbook::UpdateArtifact.new(task_options(options.dup.merge({cookbook: component, version: version, build: build}))).run
|
41
|
+
Tasks::Chef::Cookbook::UpdateArtifact.new(task_options(options.dup.merge({cookbook: options[:cookbook], component: component, version: version, build: build}))).run
|
37
42
|
end
|
38
43
|
|
39
|
-
desc "update_config
|
44
|
+
desc "update_config COOKBOOK", "Generates a chef attributes file from the given config file (json or java properties)"
|
40
45
|
long_desc <<-LONGDESC
|
41
46
|
Updates a chef attribute file e.g. site-cookbooks/fh-ngui/attributes/conf.json form a config file stored within the
|
42
47
|
components own git repository e.g. <FH_SRC_DIR>/fh-ngui/config.dev.json. It can take both json config files
|
@@ -6,20 +6,24 @@ module Fhcap
|
|
6
6
|
module Cookbook
|
7
7
|
class UpdateArtifact < ChefTaskBase
|
8
8
|
|
9
|
-
attr_reader :name, :version, :build
|
9
|
+
attr_reader :name, :cookbook, :version, :build
|
10
10
|
|
11
11
|
def initialize(options)
|
12
12
|
super
|
13
|
-
@name = options[:
|
13
|
+
@name = options[:component]
|
14
|
+
@cookbook = options[:cookbook] || @name
|
14
15
|
@version = options[:version]
|
15
16
|
@build = options[:build]
|
16
17
|
end
|
17
18
|
|
18
19
|
def run
|
19
|
-
thor.say "Chef::Cookbook::UpdateArtifact
|
20
|
-
|
20
|
+
thor.say "Chef::Cookbook::UpdateArtifact name = #{name}, cookbook = #{cookbook}, version = #{version}, build = #{build}", :yellow
|
21
|
+
c = cookbook_loader.cookbooks_by_name[cookbook]
|
22
|
+
unless c
|
23
|
+
exit_with_error("Failed to load cookbook \"#{cookbook}\"!")
|
24
|
+
end
|
21
25
|
|
22
|
-
artifact_attribute_filepath =
|
26
|
+
artifact_attribute_filepath = c.attribute_filenames.find { |e| /artifact.rb/ =~ e }
|
23
27
|
|
24
28
|
if artifact_attribute_filepath
|
25
29
|
text = File.read(artifact_attribute_filepath)
|
@@ -27,7 +31,7 @@ module Fhcap
|
|
27
31
|
replace = replace.gsub(/default\['#{name}'\]\['build'\] = .+$/, "default['#{name}']['build'] = '#{build}'")
|
28
32
|
thor.create_file(artifact_attribute_filepath, replace, {force: !options[:interactive]})
|
29
33
|
else
|
30
|
-
thor.say_status("error", "No artifact file found for #{name}", :red)
|
34
|
+
thor.say_status("error", "No artifact file found for #{name} in #{cookbook}", :red)
|
31
35
|
end
|
32
36
|
|
33
37
|
end
|
@@ -63,7 +63,7 @@ module Fhcap
|
|
63
63
|
end
|
64
64
|
cfg.from_attributes_file(name, conf_attr_file)
|
65
65
|
cfg.from_file(file, force, overrides)
|
66
|
-
thor.create_file(conf_attr_file, cfg.attribute_file_content(name, sort))
|
66
|
+
thor.create_file(conf_attr_file, cfg.attribute_file_content(name, sort), {force: force})
|
67
67
|
else
|
68
68
|
thor.say "Missing local file '#{file}', skipping config update"
|
69
69
|
end
|
@@ -71,42 +71,44 @@ module Fhcap
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def create_dns_record_openstack
|
74
|
-
|
74
|
+
cluster_config[:environments].each do |env_name, env_cfg|
|
75
|
+
create_records_for_query(env_name, env_cfg, "recipes:nginx_feedhenry\\:\\:loadbalancer", ["*"])
|
76
|
+
end
|
75
77
|
end
|
76
78
|
|
77
79
|
def create_records_openshift
|
78
80
|
#This is a very basic openshift DNS setup and does not take into account a HA setup or LBs
|
79
|
-
|
80
|
-
|
81
|
+
cluster_config[:environments].each do |env_name, env_cfg|
|
82
|
+
create_records_for_query(env_name, env_cfg, "roles:ose_master_server", [""])
|
83
|
+
create_records_for_query(env_name, env_cfg, "roles:ose_node_server", ["*"]) unless env_cfg[:load_balancers]
|
84
|
+
end
|
81
85
|
end
|
82
86
|
|
83
|
-
def create_records_for_query(query, records)
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
if query_node
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
Dns::CreateRecord.new(@options.dup.merge(dns_record_cfg)).run
|
103
|
-
end
|
104
|
-
else
|
105
|
-
thor.say "Found query node '#{query_node['name']}', but was unable to retrieve it's IP!!}"
|
87
|
+
def create_records_for_query(env_name, env_cfg, query, records)
|
88
|
+
env_name = "#{name}-#{env_name}"
|
89
|
+
knife_config_file = knife_config_file_for(cluster_config[:chef_server])
|
90
|
+
#ToDo [RHMAP-2898] Use knife object
|
91
|
+
nodes = JSON.parse(`knife search "chef_environment:#{env_name} AND #{query}" -c #{knife_config_file} -F json -a name -a cloud.public_ipv4`)
|
92
|
+
|
93
|
+
query_node = nodes['rows'].collect do |row|
|
94
|
+
name, attrs = row.first
|
95
|
+
attrs
|
96
|
+
end.first
|
97
|
+
|
98
|
+
if query_node
|
99
|
+
if query_node['cloud.public_ipv4']
|
100
|
+
records.each do |record|
|
101
|
+
dns_record_cfg = {
|
102
|
+
domain: [record, env_cfg[:domain]].compact.reject(&:empty?).join('.'),
|
103
|
+
ipaddress: query_node['cloud.public_ipv4']
|
104
|
+
}
|
105
|
+
Dns::CreateRecord.new(@options.dup.merge(dns_record_cfg)).run
|
106
106
|
end
|
107
107
|
else
|
108
|
-
thor.say "
|
108
|
+
thor.say "Found query node '#{query_node['name']}', but was unable to retrieve it's IP!!}"
|
109
109
|
end
|
110
|
+
else
|
111
|
+
thor.say "Unable to locate node for query '#{query}' in cluster!!"
|
110
112
|
end
|
111
113
|
end
|
112
114
|
|
@@ -123,4 +125,4 @@ module Fhcap
|
|
123
125
|
end
|
124
126
|
end
|
125
127
|
end
|
126
|
-
end
|
128
|
+
end
|
data/lib/fhcap/version.rb
CHANGED
@@ -15,20 +15,46 @@ describe Fhcap::Tasks::Chef::Cookbook::UpdateArtifact do
|
|
15
15
|
{}
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
18
|
+
context "without cookbook" do
|
19
|
+
|
20
|
+
let(:options) do
|
21
|
+
{
|
22
|
+
:config => config,
|
23
|
+
:thor => thor,
|
24
|
+
:component => 'testname',
|
25
|
+
:version => '9.9.9',
|
26
|
+
:build => '999'
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#initialize" do
|
31
|
+
specify { expect(subject.name).to eq('testname') }
|
32
|
+
specify { expect(subject.cookbook).to eq('testname') }
|
33
|
+
specify { expect(subject.version).to eq('9.9.9') }
|
34
|
+
specify { expect(subject.build).to eq('999') }
|
35
|
+
end
|
27
36
|
|
28
|
-
describe "#initialize" do
|
29
|
-
specify { expect(subject.name).to eq('testname') }
|
30
|
-
specify { expect(subject.version).to eq('9.9.9') }
|
31
|
-
specify { expect(subject.build).to eq('999') }
|
32
37
|
end
|
33
38
|
|
39
|
+
context "with cookbook" do
|
40
|
+
|
41
|
+
let(:options) do
|
42
|
+
{
|
43
|
+
:config => config,
|
44
|
+
:thor => thor,
|
45
|
+
:component => 'testname',
|
46
|
+
:cookbook => 'testcookbook',
|
47
|
+
:version => '9.9.9',
|
48
|
+
:build => '999'
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "#initialize" do
|
53
|
+
specify { expect(subject.name).to eq('testname') }
|
54
|
+
specify { expect(subject.cookbook).to eq('testcookbook') }
|
55
|
+
specify { expect(subject.version).to eq('9.9.9') }
|
56
|
+
specify { expect(subject.build).to eq('999') }
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
34
60
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
{
|
2
|
+
"name": "<%= config[:name] %>",
|
3
|
+
"description": "<%= config[:name] %> Environment",
|
4
|
+
"cookbook_versions": {
|
5
|
+
},
|
6
|
+
"json_class": "Chef::Environment",
|
7
|
+
"chef_type": "environment",
|
8
|
+
"default_attributes": {
|
9
|
+
"openshift": {
|
10
|
+
"domain": "<%= config[:domain] %>"
|
11
|
+
},
|
12
|
+
"rhsm": {
|
13
|
+
"username": "CHANGEME",
|
14
|
+
"password": "CHANGEME"
|
15
|
+
},
|
16
|
+
"resolver": {
|
17
|
+
"nameservers": [
|
18
|
+
"8.8.8.8",
|
19
|
+
"8.8.4.4"
|
20
|
+
]
|
21
|
+
}
|
22
|
+
},
|
23
|
+
"override_attributes": {
|
24
|
+
"authorization": {
|
25
|
+
"sudo": {
|
26
|
+
"passwordless": true
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
30
|
+
}
|
@@ -39,11 +39,34 @@
|
|
39
39
|
"security_groups": {
|
40
40
|
"ops-admin": {
|
41
41
|
"authorize_ingress": [
|
42
|
+
{
|
43
|
+
"protocols": ["icmp"],
|
44
|
+
"start": -1,
|
45
|
+
"end": -1,
|
46
|
+
"sources": [
|
47
|
+
"52.51.188.129"
|
48
|
+
]
|
49
|
+
},
|
42
50
|
{
|
43
51
|
"protocols": ["all"],
|
44
52
|
"start": 0,
|
45
53
|
"end": 65535,
|
46
|
-
|
54
|
+
"sources": [
|
55
|
+
"<%= @my_public_ip %>",
|
56
|
+
"46.38.161.225/32",
|
57
|
+
"52.193.17.19",
|
58
|
+
"52.37.106.23",
|
59
|
+
"52.48.49.57",
|
60
|
+
"52.50.12.70",
|
61
|
+
"52.51.188.129",
|
62
|
+
"52.62.158.176",
|
63
|
+
"52.70.198.93",
|
64
|
+
"52.86.106.110",
|
65
|
+
"54.229.76.48/32",
|
66
|
+
"78.137.150.209/32",
|
67
|
+
"79.125.117.182/32",
|
68
|
+
"149.11.36.106/32"
|
69
|
+
]
|
47
70
|
}
|
48
71
|
]
|
49
72
|
},
|
@@ -58,4 +81,4 @@
|
|
58
81
|
]
|
59
82
|
}
|
60
83
|
}
|
61
|
-
}
|
84
|
+
}
|
@@ -0,0 +1,230 @@
|
|
1
|
+
{
|
2
|
+
"domain": "<%= config[:domain] %>",
|
3
|
+
<%- unless config[:provider_config][:cidr] == "none" -%>
|
4
|
+
"subnets": {
|
5
|
+
"1a": {
|
6
|
+
"cidr": "0/26",
|
7
|
+
"availability_zone": "1a"
|
8
|
+
},
|
9
|
+
"1b": {
|
10
|
+
"cidr": "64/26",
|
11
|
+
"availability_zone": "1b"
|
12
|
+
},
|
13
|
+
"1c": {
|
14
|
+
"cidr": "128/26",
|
15
|
+
"availability_zone": "1c"
|
16
|
+
}
|
17
|
+
},
|
18
|
+
"vpc": {
|
19
|
+
"enable_dns_support": true,
|
20
|
+
"enable_dns_hostnames": true
|
21
|
+
},
|
22
|
+
<%- end -%>
|
23
|
+
"security_groups": {
|
24
|
+
"<%= config[:environment_name] %>-ose-master": {
|
25
|
+
"authorize_ingress": [
|
26
|
+
{
|
27
|
+
"protocols": [
|
28
|
+
"all"
|
29
|
+
],
|
30
|
+
"start": 0,
|
31
|
+
"end": 65535,
|
32
|
+
"groups": [
|
33
|
+
"<%= config[:environment_name] %>-ose-master",
|
34
|
+
"<%= config[:environment_name] %>-ose-node",
|
35
|
+
"<%= config[:environment_name] %>-ose-nfs"
|
36
|
+
]
|
37
|
+
},
|
38
|
+
{
|
39
|
+
"protocols": [
|
40
|
+
"icmp"
|
41
|
+
],
|
42
|
+
"start": -1,
|
43
|
+
"end": -1,
|
44
|
+
"groups": [
|
45
|
+
"<%= config[:environment_name] %>-ose-master",
|
46
|
+
"<%= config[:environment_name] %>-ose-node",
|
47
|
+
"<%= config[:environment_name] %>-ose-nfs"
|
48
|
+
]
|
49
|
+
},
|
50
|
+
{
|
51
|
+
"protocols": [
|
52
|
+
"tcp"
|
53
|
+
],
|
54
|
+
"start": 8443,
|
55
|
+
"end": 8443,
|
56
|
+
"sources": [
|
57
|
+
"0.0.0.0/0"
|
58
|
+
]
|
59
|
+
}
|
60
|
+
]
|
61
|
+
},
|
62
|
+
"<%= config[:environment_name] %>-ose-node": {
|
63
|
+
"authorize_ingress": [
|
64
|
+
{
|
65
|
+
"protocols": [
|
66
|
+
"all"
|
67
|
+
],
|
68
|
+
"start": 0,
|
69
|
+
"end": 65535,
|
70
|
+
"groups": [
|
71
|
+
"<%= config[:environment_name] %>-ose-master",
|
72
|
+
"<%= config[:environment_name] %>-ose-node",
|
73
|
+
"<%= config[:environment_name] %>-ose-lb",
|
74
|
+
"<%= config[:environment_name] %>-ose-nfs"
|
75
|
+
]
|
76
|
+
},
|
77
|
+
{
|
78
|
+
"protocols": [
|
79
|
+
"icmp"
|
80
|
+
],
|
81
|
+
"start": -1,
|
82
|
+
"end": -1,
|
83
|
+
"groups": [
|
84
|
+
"<%= config[:environment_name] %>-ose-master",
|
85
|
+
"<%= config[:environment_name] %>-ose-node",
|
86
|
+
"<%= config[:environment_name] %>-ose-lb",
|
87
|
+
"<%= config[:environment_name] %>-ose-nfs"
|
88
|
+
]
|
89
|
+
}
|
90
|
+
]
|
91
|
+
},
|
92
|
+
"<%= config[:environment_name] %>-ose-lb": {
|
93
|
+
"authorize_ingress": [
|
94
|
+
{
|
95
|
+
"protocols": [
|
96
|
+
"tcp"
|
97
|
+
],
|
98
|
+
"start": 80,
|
99
|
+
"end": 80,
|
100
|
+
"sources": [
|
101
|
+
"0.0.0.0/0"
|
102
|
+
]
|
103
|
+
}
|
104
|
+
]
|
105
|
+
},
|
106
|
+
"<%= config[:environment_name] %>-ose-nfs": {
|
107
|
+
"authorize_ingress": [
|
108
|
+
{
|
109
|
+
"protocols": [
|
110
|
+
"all"
|
111
|
+
],
|
112
|
+
"start": 0,
|
113
|
+
"end": 65535,
|
114
|
+
"groups": [
|
115
|
+
"<%= config[:environment_name] %>-ose-master",
|
116
|
+
"<%= config[:environment_name] %>-ose-node",
|
117
|
+
"<%= config[:environment_name] %>-ose-nfs"
|
118
|
+
]
|
119
|
+
},
|
120
|
+
{
|
121
|
+
"protocols": [
|
122
|
+
"icmp"
|
123
|
+
],
|
124
|
+
"start": -1,
|
125
|
+
"end": -1,
|
126
|
+
"groups": [
|
127
|
+
"<%= config[:environment_name] %>-ose-master",
|
128
|
+
"<%= config[:environment_name] %>-ose-node",
|
129
|
+
"<%= config[:environment_name] %>-ose-lb"
|
130
|
+
]
|
131
|
+
}
|
132
|
+
]
|
133
|
+
}
|
134
|
+
},
|
135
|
+
"load_balancers": {
|
136
|
+
"ose-lb": {
|
137
|
+
"security_groups": ["<%= config[:environment_name] %>-ose-lb"],
|
138
|
+
"subnets": ["1a", "1b", "1c"],
|
139
|
+
"scheme": "internet-facing",
|
140
|
+
"listeners": [
|
141
|
+
{
|
142
|
+
"port": 80,
|
143
|
+
"protocol": "http",
|
144
|
+
"instance_port": 80,
|
145
|
+
"instance_protocol": "http"
|
146
|
+
}
|
147
|
+
]
|
148
|
+
}
|
149
|
+
},
|
150
|
+
"instances": {
|
151
|
+
"master1": {
|
152
|
+
"aws": {
|
153
|
+
"security_groups": [
|
154
|
+
"ops-admin",
|
155
|
+
"<%= config[:environment_name] %>-ose-master"
|
156
|
+
]
|
157
|
+
<%- unless config[:provider_config][:cidr] == "none" -%>
|
158
|
+
,"private_ip_address": "",
|
159
|
+
"subnet": "1a"
|
160
|
+
<%- end -%>
|
161
|
+
},
|
162
|
+
"run_list": [
|
163
|
+
"role[ose_master_server]"
|
164
|
+
]
|
165
|
+
},
|
166
|
+
"node1": {
|
167
|
+
"aws": {
|
168
|
+
"security_groups": [
|
169
|
+
"ops-admin",
|
170
|
+
"<%= config[:environment_name] %>-ose-node"
|
171
|
+
]
|
172
|
+
<%- unless config[:provider_config][:cidr] == "none" -%>
|
173
|
+
,"private_ip_address": "",
|
174
|
+
"subnet": "1a"
|
175
|
+
<%- end -%>
|
176
|
+
},
|
177
|
+
"run_list": [
|
178
|
+
"role[ose_node_server]"
|
179
|
+
],
|
180
|
+
"load_balancers": ["ose-lb"]
|
181
|
+
},
|
182
|
+
"node2": {
|
183
|
+
"aws": {
|
184
|
+
"security_groups": [
|
185
|
+
"ops-admin",
|
186
|
+
"<%= config[:environment_name] %>-ose-node"
|
187
|
+
]
|
188
|
+
<%- unless config[:provider_config][:cidr] == "none" -%>
|
189
|
+
,"private_ip_address": "",
|
190
|
+
"subnet": "1b"
|
191
|
+
<%- end -%>
|
192
|
+
},
|
193
|
+
"run_list": [
|
194
|
+
"role[ose_node_server]"
|
195
|
+
],
|
196
|
+
"load_balancers": ["ose-lb"]
|
197
|
+
},
|
198
|
+
"node3": {
|
199
|
+
"aws": {
|
200
|
+
"security_groups": [
|
201
|
+
"ops-admin",
|
202
|
+
"<%= config[:environment_name] %>-ose-node"
|
203
|
+
]
|
204
|
+
<%- unless config[:provider_config][:cidr] == "none" -%>
|
205
|
+
,"private_ip_address": "",
|
206
|
+
"subnet": "1c"
|
207
|
+
<%- end -%>
|
208
|
+
},
|
209
|
+
"run_list": [
|
210
|
+
"role[ose_node_server]"
|
211
|
+
],
|
212
|
+
"load_balancers": ["ose-lb"]
|
213
|
+
},
|
214
|
+
"nfs1": {
|
215
|
+
"aws": {
|
216
|
+
"security_groups": [
|
217
|
+
"ops-admin",
|
218
|
+
"<%= config[:environment_name] %>-ose-nfs"
|
219
|
+
]
|
220
|
+
<%- unless config[:provider_config][:cidr] == "none" -%>
|
221
|
+
,"private_ip_address": "",
|
222
|
+
"subnet": "1a"
|
223
|
+
<%- end -%>
|
224
|
+
},
|
225
|
+
"run_list": [
|
226
|
+
"role[ose_storage_server]"
|
227
|
+
]
|
228
|
+
}
|
229
|
+
}
|
230
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
{
|
2
|
+
"domain": "<%= config[:domain] %>",
|
3
|
+
"instances": {
|
4
|
+
"master1": {
|
5
|
+
"run_list": [
|
6
|
+
"role[ose_master_server]"
|
7
|
+
]
|
8
|
+
},
|
9
|
+
"node1": {
|
10
|
+
"run_list": [
|
11
|
+
"role[ose_node_server]"
|
12
|
+
]
|
13
|
+
},
|
14
|
+
"node2": {
|
15
|
+
"run_list": [
|
16
|
+
"role[ose_node_server]"
|
17
|
+
]
|
18
|
+
},
|
19
|
+
"node3": {
|
20
|
+
"run_list": [
|
21
|
+
"role[ose_node_server]"
|
22
|
+
]
|
23
|
+
},
|
24
|
+
"nfs1": {
|
25
|
+
"run_list": [
|
26
|
+
"role[ose_storage_server]"
|
27
|
+
]
|
28
|
+
}
|
29
|
+
}
|
30
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fhcap-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Nairn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -476,6 +476,7 @@ files:
|
|
476
476
|
- lib/cookbooks/provision/recipes/openstack_cluster_destroy.rb
|
477
477
|
- lib/cookbooks/provision/recipes/ose_install.rb
|
478
478
|
- lib/cookbooks/provision/recipes/ose_post_install.rb
|
479
|
+
- lib/cookbooks/provision/recipes/ose_reset_cluster.rb
|
479
480
|
- lib/cookbooks/provision/recipes/post_create_instances.rb
|
480
481
|
- lib/cookbooks/provision/recipes/rabbitmq_reset_cluster.rb
|
481
482
|
- lib/cookbooks/provision/recipes/restart_services.rb
|
@@ -601,6 +602,7 @@ files:
|
|
601
602
|
- templates/chef/environment_empty.json.erb
|
602
603
|
- templates/chef/environment_farm.json.erb
|
603
604
|
- templates/chef/environment_mbaas.json.erb
|
605
|
+
- templates/chef/environment_ose-multi-node.json.erb
|
604
606
|
- templates/chef/environment_ose-single.json.erb
|
605
607
|
- templates/chef/environment_single.json.erb
|
606
608
|
- templates/cluster/aws/common.json.erb
|
@@ -611,6 +613,7 @@ files:
|
|
611
613
|
- templates/cluster/aws/farm-single.json.erb
|
612
614
|
- templates/cluster/aws/mbaas-3node.json.erb
|
613
615
|
- templates/cluster/aws/nginx-test.json.erb
|
616
|
+
- templates/cluster/aws/ose-multi-node.json.erb
|
614
617
|
- templates/cluster/aws/ose-single.json.erb
|
615
618
|
- templates/cluster/aws/single-blank.json.erb
|
616
619
|
- templates/cluster/aws/single.json.erb
|
@@ -630,9 +633,11 @@ files:
|
|
630
633
|
- templates/cluster/openstack/farm-single.json.erb
|
631
634
|
- templates/cluster/openstack/mbaas-3node.json.erb
|
632
635
|
- templates/cluster/openstack/nginx-test.json.erb
|
636
|
+
- templates/cluster/openstack/ose-multi-node.json.erb
|
633
637
|
- templates/cluster/openstack/ose-single.json.erb
|
634
638
|
- templates/cluster/openstack/single-blank.json.erb
|
635
639
|
- templates/cluster/openstack/single.json.erb
|
640
|
+
- templates/cluster/ose-multi-node.json.erb
|
636
641
|
- templates/cluster/ose-single.json.erb
|
637
642
|
- templates/cluster/single-blank.json.erb
|
638
643
|
- templates/cluster/single.json.erb
|