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: | platforms: | ||||||
| - name: ubuntu-12.04 | - 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: |   run_list: | ||||||
|   - recipe[apt] |   - recipe[apt] | ||||||
| 
 | 
 | ||||||
| - name: ubuntu-10.04 | - 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: |   run_list: | ||||||
|   - recipe[apt] |   - recipe[apt] | ||||||
| 
 | 
 | ||||||
| - name: centos-6.4 | - 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 | - name: centos-5.9 | ||||||
|   driver_config: | - name: omnios-r151006c | ||||||
|     box: opscode-centos-5.9 |   driver: | ||||||
|     box_url: https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_centos-5.9_provisionerless.box |     box: omnios-r151006c | ||||||
|  |     box_url: http://omnios.omniti.com/media/OmniOS_Text_r151006c.iso | ||||||
|  |   run_list: | ||||||
|  |   - recipe[fake::omnios] | ||||||
| 
 | 
 | ||||||
| suites: | suites: | ||||||
| - name: default | - name: default | ||||||
|   run_list: |   run_list: | ||||||
|   - recipe[postfix] |   - recipe[postfix] | ||||||
|   attributes: {} |  | ||||||
| 
 | 
 | ||||||
| - name: aliases | - name: aliases | ||||||
|   run_list: |   run_list: | ||||||
|   - recipe[postfix::aliases] |   - recipe[postfix::aliases] | ||||||
|   attributes: {} |  | ||||||
| 
 | 
 | ||||||
| - name: client | - name: client | ||||||
|   run_list: |   run_list: | ||||||
|   - recipe[postfix::client] |   - recipe[postfix::client] | ||||||
|   attributes: {} |  | ||||||
| 
 | 
 | ||||||
| - name: server | - name: server | ||||||
|   run_list: |   run_list: | ||||||
|   - recipe[postfix::server] |   - recipe[postfix::server] | ||||||
|   attributes: {} |  | ||||||
| 
 | 
 | ||||||
| - name: sasl_auth | - name: sasl_auth | ||||||
|   run_list: |   run_list: | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ site :opscode | |||||||
| metadata | metadata | ||||||
| 
 | 
 | ||||||
| group :integration do | group :integration do | ||||||
|   cookbook "apt" |   cookbook 'apt' | ||||||
|   cookbook "yum" |   cookbook 'yum' | ||||||
|  |   cookbook 'fake', :path => 'test/fixtures/cookbooks/fake' | ||||||
| end | end | ||||||
|  | |||||||
| @ -29,6 +29,10 @@ case node['platform'] | |||||||
| when 'smartos' | when 'smartos' | ||||||
|   default['postfix']['conf_dir'] = '/opt/local/etc/postfix' |   default['postfix']['conf_dir'] = '/opt/local/etc/postfix' | ||||||
|   default['postfix']['aliases_db'] = '/opt/local/etc/postfix/aliases' |   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 | else | ||||||
|   default['postfix']['conf_dir'] = '/etc/postfix' |   default['postfix']['conf_dir'] = '/etc/postfix' | ||||||
|   default['postfix']['aliases_db'] = '/etc/aliases' |   default['postfix']['aliases_db'] = '/etc/aliases' | ||||||
| @ -59,7 +63,7 @@ when 'smartos' | |||||||
| when 'rhel' | when 'rhel' | ||||||
|   cafile = '/etc/pki/tls/cert.pem' |   cafile = '/etc/pki/tls/cert.pem' | ||||||
| else | else | ||||||
|   cafile = '/etc/postfix/cacert.pem' |   cafile = "#{node['postfix']['conf_dir']}/cacert.pem" | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
| if node['postfix']['use_procmail'] | if node['postfix']['use_procmail'] | ||||||
|  | |||||||
| @ -19,8 +19,8 @@ require File.expand_path('../support/helpers', __FILE__) | |||||||
| describe 'postfix::aliases' do | describe 'postfix::aliases' do | ||||||
|   include Helpers::Postfix |   include Helpers::Postfix | ||||||
| 
 | 
 | ||||||
|   it 'manages /etc/aliases' do |   it 'manages aliases' do | ||||||
|     file('/etc/aliases').must_match(/^# This file is generated by Chef for/) |     file("#{node['postfix']['conf_dir']}/aliases").must_match(/^# This file is generated by Chef for/) | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
| end | end | ||||||
|  | |||||||
| @ -32,7 +32,7 @@ describe 'postfix::default' do | |||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   it 'configures postfix main.cf' do |   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 | ||||||
| 
 | 
 | ||||||
| end | end | ||||||
|  | |||||||
| @ -18,8 +18,8 @@ require File.expand_path('../support/helpers', __FILE__) | |||||||
| describe 'postfix::sasl_auth' do | describe 'postfix::sasl_auth' do | ||||||
|   include Helpers::Postfix |   include Helpers::Postfix | ||||||
| 
 | 
 | ||||||
|   it 'manages /etc/postfix/sasl_passwd' do |   it "manages postfix sasl_passwd" do | ||||||
|     file('/etc/postfix/sasl_passwd').must_match(/^# This file is generated by Chef for/) |     file("#{node['potfix']['conf_dir']}/sasl_passwd").must_match(/^# This file is generated by Chef for/) | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   it 'configures postfix to use /etc/postfix/sasl_passwd' do |   it 'configures postfix to use /etc/postfix/sasl_passwd' do | ||||||
|  | |||||||
| @ -18,6 +18,7 @@ include_recipe 'postfix' | |||||||
| 
 | 
 | ||||||
| execute 'update-postfix-aliases' do | execute 'update-postfix-aliases' do | ||||||
|   command 'newaliases' |   command 'newaliases' | ||||||
|  |   environment :PATH => "#{ENV['PATH']}:/opt/omni/bin:/opt/omni/sbin" if platform_family?('omnios') | ||||||
|   action :nothing |   action :nothing | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -36,6 +36,40 @@ when 'rhel', 'fedora' | |||||||
|     notifies :start, 'service[postfix]' |     notifies :start, 'service[postfix]' | ||||||
|     not_if '/usr/bin/test /etc/alternatives/mta -ef /usr/sbin/sendmail.postfix' |     not_if '/usr/bin/test /etc/alternatives/mta -ef /usr/sbin/sendmail.postfix' | ||||||
|   end |   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 | end | ||||||
| 
 | 
 | ||||||
| if !node['postfix']['sender_canonical_map_entries'].empty? | if !node['postfix']['sender_canonical_map_entries'].empty? | ||||||
|  | |||||||
| @ -48,11 +48,17 @@ execute 'postmap-sasl_passwd' do | |||||||
| end | end | ||||||
| 
 | 
 | ||||||
| template node['postfix']['sasl_password_file'] do | 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' |   source 'sasl_passwd.erb' | ||||||
|   owner 'root' |   owner 'root' | ||||||
|   group 'root' |   group 'root' | ||||||
|   mode 0400 |   mode 0400 | ||||||
|   notifies :run, 'execute[postmap-sasl_passwd]', :immediately |   notifies :run, 'execute[postmap-sasl_passwd]', :immediately | ||||||
|   notifies :restart, 'service[postfix]' |   notifies :restart, 'service[postfix]' | ||||||
|   variables(settings: node['postfix']['sasl']) |   variables(:settings => node['postfix']['sasl']) | ||||||
| end | 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