COOK-4086, add omnios support
Signed-off-by: Sean OMeara <someara@opscode.com>
This commit is contained in:
		
							parent
							
								
									14fc7d7919
								
							
						
					
					
						commit
						14612d63fd
					
				
							
								
								
									
										23
									
								
								.kitchen.yml
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								.kitchen.yml
									
									
									
									
									
								
							| @ -5,49 +5,38 @@ driver_config: | ||||
| 
 | ||||
| platforms: | ||||
| - name: ubuntu-12.04 | ||||
|   driver_config: | ||||
|     box: opscode-ubuntu-12.04 | ||||
|     box_url: https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box | ||||
|   run_list: | ||||
|   - recipe[apt] | ||||
| 
 | ||||
| - name: ubuntu-10.04 | ||||
|   driver_config: | ||||
|     box: opscode-ubuntu-10.04 | ||||
|     box_url: https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-10.04_provisionerless.box | ||||
|   run_list: | ||||
|   - recipe[apt] | ||||
| 
 | ||||
| - name: centos-6.4 | ||||
|   driver_config: | ||||
|     box: opscode-centos-6.4 | ||||
|     box_url: https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_centos-6.4_provisionerless.box | ||||
| 
 | ||||
| - name: centos-5.9 | ||||
|   driver_config: | ||||
|     box: opscode-centos-5.9 | ||||
|     box_url: https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_centos-5.9_provisionerless.box | ||||
| - name: omnios-r151006c | ||||
|   driver: | ||||
|     box: omnios-r151006c | ||||
|     box_url: http://omnios.omniti.com/media/OmniOS_Text_r151006c.iso | ||||
|   run_list: | ||||
|   - recipe[fake::omnios] | ||||
| 
 | ||||
| suites: | ||||
| - name: default | ||||
|   run_list: | ||||
|   - recipe[postfix] | ||||
|   attributes: {} | ||||
| 
 | ||||
| - name: aliases | ||||
|   run_list: | ||||
|   - recipe[postfix::aliases] | ||||
|   attributes: {} | ||||
| 
 | ||||
| - name: client | ||||
|   run_list: | ||||
|   - recipe[postfix::client] | ||||
|   attributes: {} | ||||
| 
 | ||||
| - name: server | ||||
|   run_list: | ||||
|   - recipe[postfix::server] | ||||
|   attributes: {} | ||||
| 
 | ||||
| - name: sasl_auth | ||||
|   run_list: | ||||
|  | ||||
| @ -3,6 +3,7 @@ site :opscode | ||||
| metadata | ||||
| 
 | ||||
| group :integration do | ||||
|   cookbook "apt" | ||||
|   cookbook "yum" | ||||
|   cookbook 'apt' | ||||
|   cookbook 'yum' | ||||
|   cookbook 'fake', :path => 'test/fixtures/cookbooks/fake' | ||||
| end | ||||
|  | ||||
| @ -29,6 +29,10 @@ case node['platform'] | ||||
| when 'smartos' | ||||
|   default['postfix']['conf_dir'] = '/opt/local/etc/postfix' | ||||
|   default['postfix']['aliases_db'] = '/opt/local/etc/postfix/aliases' | ||||
| when 'omnios' | ||||
|   default['postfix']['conf_dir'] = '/opt/omni/etc/postfix' | ||||
|   default['postfix']['aliases_db'] = 'opt/omni/etc/postfix/aliases' | ||||
|   default['postfix']['uid'] = 11 | ||||
| else | ||||
|   default['postfix']['conf_dir'] = '/etc/postfix' | ||||
|   default['postfix']['aliases_db'] = '/etc/aliases' | ||||
| @ -59,7 +63,7 @@ when 'smartos' | ||||
| when 'rhel' | ||||
|   cafile = '/etc/pki/tls/cert.pem' | ||||
| else | ||||
|   cafile = '/etc/postfix/cacert.pem' | ||||
|   cafile = "#{node['postfix']['conf_dir']}/cacert.pem" | ||||
| end | ||||
| 
 | ||||
| if node['postfix']['use_procmail'] | ||||
|  | ||||
| @ -19,8 +19,8 @@ require File.expand_path('../support/helpers', __FILE__) | ||||
| describe 'postfix::aliases' do | ||||
|   include Helpers::Postfix | ||||
| 
 | ||||
|   it 'manages /etc/aliases' do | ||||
|     file('/etc/aliases').must_match(/^# This file is generated by Chef for/) | ||||
|   it 'manages aliases' do | ||||
|     file("#{node['postfix']['conf_dir']}/aliases").must_match(/^# This file is generated by Chef for/) | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  | ||||
| @ -32,7 +32,7 @@ describe 'postfix::default' do | ||||
|   end | ||||
| 
 | ||||
|   it 'configures postfix main.cf' do | ||||
|     file('/etc/postfix/main.cf').must_match(/^# Generated by Chef for /) | ||||
|     file("#{node['postfix']['conf_dir']}/main.cf").must_match(/^# Generated by Chef for /) | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  | ||||
| @ -18,8 +18,8 @@ require File.expand_path('../support/helpers', __FILE__) | ||||
| describe 'postfix::sasl_auth' do | ||||
|   include Helpers::Postfix | ||||
| 
 | ||||
|   it 'manages /etc/postfix/sasl_passwd' do | ||||
|     file('/etc/postfix/sasl_passwd').must_match(/^# This file is generated by Chef for/) | ||||
|   it "manages postfix sasl_passwd" do | ||||
|     file("#{node['potfix']['conf_dir']}/sasl_passwd").must_match(/^# This file is generated by Chef for/) | ||||
|   end | ||||
| 
 | ||||
|   it 'configures postfix to use /etc/postfix/sasl_passwd' do | ||||
|  | ||||
| @ -18,6 +18,7 @@ include_recipe 'postfix' | ||||
| 
 | ||||
| execute 'update-postfix-aliases' do | ||||
|   command 'newaliases' | ||||
|   environment :PATH => "#{ENV['PATH']}:/opt/omni/bin:/opt/omni/sbin" if platform_family?('omnios') | ||||
|   action :nothing | ||||
| end | ||||
| 
 | ||||
|  | ||||
| @ -36,6 +36,40 @@ when 'rhel', 'fedora' | ||||
|     notifies :start, 'service[postfix]' | ||||
|     not_if '/usr/bin/test /etc/alternatives/mta -ef /usr/sbin/sendmail.postfix' | ||||
|   end | ||||
| when 'omnios' | ||||
|   manifest_path = ::File.join(Chef::Config[:file_cache_path], "manifest-postfix.xml") | ||||
| 
 | ||||
|   # we need to manage the postfix group and user | ||||
|   # and then subscribe to the package install because it creates a | ||||
|   # postdrop group and adds postfix user to it. | ||||
|   group 'postfix' do | ||||
|     append true | ||||
|   end | ||||
| 
 | ||||
|   user 'postfix' do | ||||
|     uid node['postfix']['uid'] | ||||
|     gid 'postfix' | ||||
|     home '/var/spool/postfix' | ||||
|     subscribes :manage, 'package[postfix]' | ||||
|     notifies :run, 'execute[/opt/omni/sbin/postfix set-permissions]', :immediately | ||||
|   end | ||||
| 
 | ||||
|   # we don't guard this because if the user creation was successful (or happened out of band), then this won't get executed when the action is :nothing. | ||||
|   execute '/opt/omni/sbin/postfix set-permissions' | ||||
| 
 | ||||
|   template manifest_path  do | ||||
|     source 'manifest-postfix.xml.erb' | ||||
|     owner 'root' | ||||
|     group 'root' | ||||
|     mode 00644 | ||||
|     notifies :run, "execute[load postfix manifest]", :immediately | ||||
|   end | ||||
| 
 | ||||
|   execute "load postfix manifest" do | ||||
|     action :nothing | ||||
|     command "svccfg import #{manifest_path}" | ||||
|     notifies :restart, "service[postfix]" | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| if !node['postfix']['sender_canonical_map_entries'].empty? | ||||
|  | ||||
| @ -48,11 +48,17 @@ execute 'postmap-sasl_passwd' do | ||||
| end | ||||
| 
 | ||||
| template node['postfix']['sasl_password_file'] do | ||||
|   command "postmap #{node['postfix']['conf_dir']}/sasl_passwd" | ||||
|   environment :PATH => "#{ENV['PATH']}:/opt/omni/bin:/opt/omni/sbin" if platform_family?('omnios') | ||||
|   action :nothing | ||||
| end | ||||
| 
 | ||||
| template "#{node['postfix']['conf_dir']}/sasl_passwd" do | ||||
|   source 'sasl_passwd.erb' | ||||
|   owner 'root' | ||||
|   group 'root' | ||||
|   mode 0400 | ||||
|   notifies :run, 'execute[postmap-sasl_passwd]', :immediately | ||||
|   notifies :restart, 'service[postfix]' | ||||
|   variables(settings: node['postfix']['sasl']) | ||||
|   variables(:settings => node['postfix']['sasl']) | ||||
| end | ||||
|  | ||||
							
								
								
									
										84
									
								
								templates/default/manifest-postfix.xml.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								templates/default/manifest-postfix.xml.erb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,84 @@ | ||||
| <?xml version="1.0"?> | ||||
| <!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1"> | ||||
| <!-- | ||||
| # | ||||
| # CDDL HEADER START | ||||
| # | ||||
| # The contents of this file are subject to the terms of the | ||||
| # Common Development and Distribution License (the "License"). | ||||
| # You may not use this file except in compliance with the License. | ||||
| # | ||||
| # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE | ||||
| # or http://www.opensolaris.org/os/licensing. | ||||
| # See the License for the specific language governing permissions | ||||
| # and limitations under the License. | ||||
| # | ||||
| # When distributing Covered Code, include this CDDL HEADER in each | ||||
| # file and include the License file at usr/src/OPENSOLARIS.LICENSE. | ||||
| # If applicable, add the following below this CDDL HEADER, with the | ||||
| # fields enclosed by brackets "[]" replaced with your own identifying | ||||
| # information: Portions Copyright [yyyy] [name of copyright owner] | ||||
| # | ||||
| # CDDL HEADER END | ||||
| # | ||||
| --> | ||||
| 
 | ||||
| <service_bundle type="manifest" name="SFEpostfix:postfix"> | ||||
|     <service name="network/smtp/postfix" type="service" version="1"> | ||||
|         <create_default_instance enabled="false" /> | ||||
|         <single_instance /> | ||||
|         <dependency name="network" grouping="require_all" restart_on="error" type="service"> | ||||
|             <service_fmri value="svc:/milestone/network:default" /> | ||||
|         </dependency> | ||||
| 
 | ||||
|         <dependency name="filesystem-local" grouping="require_all" restart_on="error" type="service"> | ||||
|             <service_fmri value="svc:/system/filesystem/local" /> | ||||
|         </dependency> | ||||
| 
 | ||||
|         <dependency name="name-services" grouping="require_all" restart_on="refresh" type="service"> | ||||
|             <service_fmri value="svc:/milestone/name-services" /> | ||||
|         </dependency> | ||||
| 
 | ||||
|         <dependency name="system-log" grouping="optional_all" restart_on="error" type="service"> | ||||
|             <service_fmri value="svc:/system/system-log" /> | ||||
|         </dependency> | ||||
| 
 | ||||
|         <!-- | ||||
|         If autofs is enabled, wait for it to get users" home | ||||
|         directories. | ||||
|         --> | ||||
|         <dependency name="autofs" grouping="optional_all" restart_on="error" type="service"> | ||||
|                 <service_fmri value="svc:/system/filesystem/autofs" /> | ||||
|         </dependency> | ||||
| 
 | ||||
|         <dependent name="postfix_multi-user" grouping="optional_all" restart_on="none"> | ||||
|             <service_fmri value="svc:/milestone/multi-user" /> | ||||
|         </dependent> | ||||
| 
 | ||||
|         <exec_method type="method" name="start" | ||||
|             exec="/opt/omni/sbin/postfix start" | ||||
|             timeout_seconds="180" /> | ||||
| 
 | ||||
|         <exec_method type="method" name="stop" | ||||
|             exec="/opt/omni/sbin/postfix stop" | ||||
|             timeout_seconds="60" /> | ||||
| 
 | ||||
|         <exec_method type="method" name="restart" | ||||
|             exec="/opt/omni/sbin/postfix reload" | ||||
|             timeout_seconds="60" /> | ||||
| 
 | ||||
|         <stability value="Unstable" /> | ||||
| 
 | ||||
|         <template> | ||||
|             <common_name> | ||||
|                 <loctext xml:lang="C"> | ||||
|                 Postfix Mailserver | ||||
|                 </loctext> | ||||
|             </common_name> | ||||
| 
 | ||||
|             <documentation> | ||||
|                 <manpage title="postfix" section="1" manpath="/usr/local/man" /> | ||||
|             </documentation> | ||||
|         </template> | ||||
|     </service> | ||||
| </service_bundle> | ||||
							
								
								
									
										3
									
								
								test/fixtures/cookbooks/fake/metadata.rb
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/fixtures/cookbooks/fake/metadata.rb
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| name "fake" | ||||
| version "0.0.1" | ||||
| description "Not a real cookbook, used for testing only." | ||||
							
								
								
									
										5
									
								
								test/fixtures/cookbooks/fake/recipes/omnios.rb
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/fixtures/cookbooks/fake/recipes/omnios.rb
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| execute "pkg set-publisher -g http://pkg.omniti.com/omniti-ms/ ms.omniti.com" do | ||||
|   not_if "pkg publisher ms.omniti.com" | ||||
| end | ||||
| 
 | ||||
| execute "pkg refresh --full" | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user