foreman_chef 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fff5918bb11a35f73136413c50bde46eed3fb15b
4
- data.tar.gz: 8fff9ce30b6efea5cc8ea8f207e4d61acbd2061e
3
+ metadata.gz: a92676c4caa608850b55c0663e13df92cc848793
4
+ data.tar.gz: a98cd1ada786665546e6ff3113e82238fb55773d
5
5
  SHA512:
6
- metadata.gz: 745b97522e5e159d972321004b07886e843bd3770b5ea918308a1e9a5a8fe93f770d53f8bb16a8802ddec05adabced7f4e0d0327968c37a94fabccd71f3daf55
7
- data.tar.gz: 40d63f5da6112601a2861a9ccb395c2180d1bd8a79d7c952f1a03620301c4efb54e504653f4476fceff3a7dd1905e6a6b6290fd3a78ce88865b6c7458c2c5891
6
+ metadata.gz: 97bb1712a25daa936b3833c44ab3b747dd9ea7e1c73b381234bc11d79c523e0dda6024a54ea91d5b0740ecf037de0e67f8d66e48273dee4ee07f50c61e60a785
7
+ data.tar.gz: fec31d07933b0cf391fff92662b07ef2ab272c0d2d4f83735e2b2e9f87d47ff400f99797621fa67ebb7150aa0edc4c12b8f5164ed90e7b9db5c32f7790f7238a
@@ -17,3 +17,7 @@ module ForemanChef
17
17
  end
18
18
  end
19
19
  end
20
+
21
+ class ::Host::Managed::Jail < Safemode::Jail
22
+ allow :chef_proxy
23
+ end
@@ -0,0 +1,13 @@
1
+ module ForemanChef
2
+ module Concerns
3
+ module Renderer
4
+ extend ActiveSupport::Concern
5
+
6
+ def chef_bootstrap(host)
7
+ snippet = host.params['chef_bootstrap_template'].present? ? host.params['chef_bootstrap_template'] : 'chef-client omnibus bootstrap'
8
+ raise SecurityError, 'snippet contains not white-listed characters' unless snippet =~ /\A[a-zA-Z0-9 _-]+\Z/
9
+ "snippet '#{snippet}'"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,41 @@
1
+ echo "Creating validation.pem"
2
+ mkdir /etc/chef
3
+ touch /etc/chef/validation.pem
4
+ chmod 600 /etc/chef/validation.pem
5
+
6
+ ## You need to paste here foreman's private key
7
+ cat << 'EOF' > /etc/chef/validation.pem
8
+ <%= @host.params['chef_validation_private_key'] %>
9
+ EOF
10
+
11
+ echo "Configuring chef client.rb"
12
+ cat << 'EOF' > /etc/chef/client.rb
13
+ log_level :info
14
+ log_location STDOUT
15
+ chef_server_url "<%= @host.params['chef_server_url'] %>"
16
+ validation_client_name "chef-validator"
17
+ file_backup_path "/var/lib/chef"
18
+ file_cache_path "/var/cache/chef"
19
+ pid_file "/var/run/chef/client.pid"
20
+
21
+ require 'chef_handler_foreman'
22
+ foreman_server_options :url => "<%= @host.params['chef_handler_foreman_url'] %>"
23
+ foreman_facts_upload true
24
+ foreman_reports_upload true
25
+ EOF
26
+
27
+ # You may set here the default run list for all your nodes
28
+ cat << 'EOF' > /tmp/base.json
29
+ {
30
+ "run_list": ["role[default]"]
31
+ }
32
+ EOF
33
+
34
+ #first run of chef-client
35
+ echo "First run of chef-client"
36
+ /usr/local/bin/chef-client -j /tmp/base.json || /usr/bin/chef-client -j /tmp/base.json
37
+
38
+ echo "Finished, cleaning"
39
+ rm -f /tmp/base.json
40
+ # you can comment this line to keep validaton.pem (e.g. for debugging purposes)
41
+ rm -f /etc/chef/validation.pem
@@ -0,0 +1,4 @@
1
+ echo "Installing chef and chef_handler_foreman"
2
+ gem install chef chef_handler_foreman
3
+
4
+ <%= snippet 'chef-client bootstrap' %>
@@ -0,0 +1,10 @@
1
+ # install.sh will install latest chef client version
2
+ curl -L https://www.chef.io/chef/install.sh | bash
3
+
4
+ # if you want specific version you can use something like this instead of install.sh
5
+ # yum install https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.10.0-1.el6.x86_64.rpm
6
+
7
+ # install foreman integration chef handler
8
+ /opt/chef/embedded/bin/gem install chef_handler_foreman
9
+
10
+ <%= snippet 'chef-client bootstrap' %>
data/db/seeds.rb CHANGED
@@ -1 +1,31 @@
1
1
  Feature.find_or_create_by_name('Chef')
2
+
3
+ # Configuration template snippets
4
+ defaults = {:vendor => "ForemanChef", :default => true, :locked => true}
5
+
6
+ templates = [
7
+ {:name => "chef-client bootstrap", :source => "snippets/_chef_client_bootstrap.erb", :snippet => true},
8
+ {:name => "chef-client omnibus bootstrap", :source => "snippets/_chef_client_omnibus_bootstrap.erb", :snippet => true},
9
+ {:name => "chef-client gem bootstrap", :source => "snippets/_chef_client_gem_bootstrap.erb", :snippet => true},
10
+ ]
11
+
12
+ templates.each do |template|
13
+ template[:template] = File.read(File.join(ForemanChef::Engine.root, "app/views/foreman/unattended", template.delete(:source)))
14
+ ConfigTemplate.find_or_create_by_name(template).update_attributes(defaults.merge(template))
15
+ end
16
+
17
+ # Global parameters used in configuration snippets
18
+ parameters = [
19
+ { :name => 'chef_handler_foreman_url', :value => SmartProxy.chef_proxies.first.try(:url) || Setting.foreman_url },
20
+ { :name => 'chef_server_url', :value => "https://#{Socket.gethostbyname(Socket.gethostname).first}" },
21
+ { :name => 'chef_validation_private_key', :value => 'UNSPECIFIED, you must upload your validation key here' },
22
+ { :name => 'chef_bootstrap_template', :value => 'chef-client omnibus bootstrap' },
23
+ { :name => 'chef_server_certificate', :value => '' },
24
+ ]
25
+
26
+ parameters.each do |parameter|
27
+ existing = CommonParameter.find_by_name(parameter[:name])
28
+ unless existing
29
+ CommonParameter.create(:name => parameter[:name], :value => parameter[:value])
30
+ end
31
+ end
@@ -26,11 +26,13 @@ module ForemanChef
26
26
  initializer 'foreman_chef.register_plugin', :after => :finisher_hook do |app|
27
27
  Foreman::Plugin.register :foreman_chef do
28
28
  requires_foreman '>= 1.4'
29
+ allowed_template_helpers :chef_bootstrap
29
30
  end
30
31
  end
31
32
 
32
33
  initializer 'foreman_chef.chef_proxy_form' do |app|
33
34
  ActionView::Base.send :include, ChefProxyForm
35
+ ActionView::Base.send :include, ForemanChef::Concerns::Renderer
34
36
  end
35
37
 
36
38
  initializer 'foreman_chef.dynflow_world', :before => 'foreman_tasks.initialize_dynflow' do |app|
@@ -47,5 +49,9 @@ module ForemanChef
47
49
  ::FactImporter.register_fact_importer(:foreman_chef, ForemanChef::FactImporter)
48
50
  ::Host::Base.send :include, ForemanChef::Concerns::HostActionSubject
49
51
  end
52
+
53
+ config.after_initialize do
54
+ ::Foreman::Renderer.send :include, ForemanChef::Concerns::Renderer
55
+ end
50
56
  end
51
57
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanChef
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_chef
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marek Hulan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-27 00:00:00.000000000 Z
11
+ date: 2015-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -81,11 +81,15 @@ files:
81
81
  - app/models/foreman_chef/hostgroup_extensions.rb
82
82
  - app/models/foreman_chef/host_extensions.rb
83
83
  - app/models/foreman_chef/fact_importer.rb
84
+ - app/models/foreman_chef/concerns/renderer.rb
84
85
  - app/models/foreman_chef/concerns/host_action_subject.rb
85
86
  - app/models/setting/foreman_chef.rb
86
87
  - app/lib/actions/foreman_chef/client/destroy.rb
87
88
  - app/lib/actions/foreman_chef/host/destroy.rb
88
89
  - app/lib/proxy_api/foreman_chef/chef_proxy.rb
90
+ - app/views/foreman/unattended/snippets/_chef_client_gem_bootstrap.erb
91
+ - app/views/foreman/unattended/snippets/_chef_client_omnibus_bootstrap.erb
92
+ - app/views/foreman/unattended/snippets/_chef_client_bootstrap.erb
89
93
  - config/routes.rb
90
94
  - db/migrate/20140513144804_add_chef_proxy_id_to_hostgroup.rb
91
95
  - db/migrate/20140220145827_add_chef_proxy_id_to_host.rb