diff --git a/README.md b/README.md index fc8e28b..a675eb1 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ Requirements #### Platforms - Debian, Ubuntu - RHEL, CentOS, Oracle Linux +- SLES, OpenSUSE #### Cookbooks - aptitude @@ -45,7 +46,7 @@ Attributes ['zendserver']['nginx'] boolean Set in you are using Nginx instead of Apache true or false boolean - false + 'false' ['zendserver']['ordernumber'] diff --git a/metadata.rb b/metadata.rb index 052dc8d..df850f2 100644 --- a/metadata.rb +++ b/metadata.rb @@ -44,6 +44,15 @@ "zendserver::install" ] +attribute "zendserver/nginx", + :display_name => "Nginx true or not", + :description => "Set if you are using Nginx instead of Apache true or false boolean", + :required => "optional", + :default => 'false', + :recipes => [ + "zendserver::install" + ] + attribute "zendserver/adminpassword", :display_name => "Admin password", :description => "Zend Server GUI admin password", diff --git a/providers/repository.rb b/providers/repository.rb new file mode 100644 index 0000000..559711b --- /dev/null +++ b/providers/repository.rb @@ -0,0 +1,58 @@ +# +# Cookbook Name:: zend-server +# Provider:: repository +# +# Once there is build in zypper repository support in Chef we can relay of it. +# For now have to take care of it inside zendserver cookbook. +# + +action :add do + if new_resource.key && (new_resource.key =~ /http/) + execute "rpm_import_#{Digest::MD5.hexdigest(new_resource.key)}" do + command "rpm --import #{new_resource.key}" + end + else + Chef::Log.error "Can't import #{new_resource.key}" + end + + if ::File.exists? "/etc/zypp/repos.d/rp-#{new_resource.alias}.repo" + Chef::Log.info "Allready added #{new_resource.alias} repo config file" + else + Chef::Log.info "Adding #{new_resource.alias} repository config file" + + # -g option to force GPG key enabled. + execute "zypper_addrepo_#{new_resource.alias}" do + command "zypper addrepo -g -n '#{new_resource.title}' #{new_resource.uri} rp-#{new_resource.alias}" + end + + new_resource.updated_by_last_action(true) + end +end + +action :remove do + if ::File.exists? "/etc/zypp/repos.d/rp-#{new_resource.alias}.repo" + Chef::Log.info "Removing #{new_resource.alias} repository" + + execute "zypper_removerepo_#{new_resource.alias}" do + command "zypper removerepo rp-#{new_resource.alias}" + end + + new_resource.updated_by_last_action(true) + else + Chef::Log.error "Remove failed for #{new_resource.alias}" + end +end + +action :refresh do + if ::File.exists? "/etc/zypp/repos.d/rp-#{new_resource.alias}.repo" + Chef::Log.info "Refreshing #{new_resource.alias} repository" + + execute "zypper_refresh_#{new_resource.alias}" do + command "zypper refresh rp-#{new_resource.alias}" + end + + new_resource.updated_by_last_action(true) + else + Chef::Log.error "Refresh failed for #{new_resource.alias}" + end +end diff --git a/recipes/default.rb b/recipes/default.rb index 8282311..d4b6d4a 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -14,6 +14,7 @@ version = node[:zendserver][:version] phpversion = node[:zendserver][:phpversion] +cpuarch = node[:kernel][:machine] case node[:zendserver][:nginx] when true @@ -58,10 +59,17 @@ action :add end when "suse" - zypper_repository "zend-server" do - uri "http://repos.zend.com/zend-server/#{version}/sles/ZendServer-x86_64" - key "http://repos.zend.com/zend.key" - title "#{version}" + zendserver_repository "zend-server" do + uri "http://repos.zend.com/zend-server/#{version}/sles/ZendServer-#{cpuarch}" + key "http://repos.zend.com/zend.key" + title "zend-server-#{version}" + action :add + end + zendserver_repository "zend-server-noarch" do + uri "http://repos.zend.com/zend-server/#{version}/sles/ZendServer-noarch" + key "http://repos.zend.com/zend.key" + title "zend-server-noarch-#{version}" + action :add end end diff --git a/resources/repository.rb b/resources/repository.rb new file mode 100644 index 0000000..36e5717 --- /dev/null +++ b/resources/repository.rb @@ -0,0 +1,15 @@ +# +# Cookbook Name:: zend-server +# Resource:: repository +# + + +actions :add, :remove, :refresh + +attribute :alias, :kind_of => String, :name_attribute => true +attribute :uri, :kind_of => String +attribute :title, :kind_of => String +attribute :keyserver, :kind_of => String, :default => nil +attribute :key, :kind_of => String, :default => nil + +default_action :add