Browse Source

Create separate install and service classes

DarkMorford 6 năm trước cách đây
mục cha
commit
d1c2f55c3e

+ 1 - 1
.fixtures.yml

@@ -3,4 +3,4 @@
 ---
 fixtures:
   forge_modules:
-#     stdlib: "puppetlabs/stdlib"
+     stdlib: "puppetlabs/stdlib"

+ 1 - 0
data/os/Debian.yaml

@@ -1,2 +1,3 @@
 ---
 nginx::server_package: 'nginx'
+nginx::server_service: 'nginx'

+ 3 - 3
manifests/init.pp

@@ -6,8 +6,8 @@
 #   include nginx
 class nginx (
   String $server_package,
+  String $server_service,
 ) {
-  package { $server_package:
-    ensure => installed,
-  }
+  contain 'nginx::install'
+  contain 'nginx::service'
 }

+ 13 - 0
manifests/install.pp

@@ -0,0 +1,13 @@
+# A description of what this class does
+#
+# @summary A short summary of the purpose of this class
+#
+# @example
+#   include nginx::install
+class nginx::install {
+  assert_private()
+
+  package { $nginx::server_package:
+    ensure => installed,
+  }
+}

+ 15 - 0
manifests/service.pp

@@ -0,0 +1,15 @@
+# A description of what this class does
+#
+# @summary A short summary of the purpose of this class
+#
+# @example
+#   include nginx::service
+class nginx::service {
+  assert_private()
+
+  service { $nginx::server_service:
+    ensure     => running,
+    enable     => true,
+    hasrestart => true,
+  }
+}

+ 4 - 0
metadata.json

@@ -6,6 +6,10 @@
   "license": "Apache-2.0",
   "source": "",
   "dependencies": [
+    {
+      "name": "puppetlibs/stdlib",
+      "version_requirement": "5.2.x"
+    }
   ],
   "operatingsystem_support": [
     {

+ 17 - 0
spec/classes/install_spec.rb

@@ -0,0 +1,17 @@
+require 'spec_helper'
+
+describe 'nginx::install' do
+  on_supported_os.each do |os, os_facts|
+    context "on #{os}" do
+      let(:facts) { os_facts }
+      let(:pre_condition) { "class {'nginx':}" }
+
+      it { is_expected.to compile.with_all_deps }
+
+      case os_facts[:osfamily]
+      when 'Debian'
+        it { is_expected.to contain_package('nginx').with_ensure('installed') }
+      end
+    end
+  end
+end

+ 2 - 5
spec/classes/nginx_spec.rb

@@ -6,11 +6,8 @@ describe 'nginx' do
       let(:facts) { os_facts }
 
       it { is_expected.to compile.with_all_deps }
-
-      case facts[:osfamily]
-      when 'Debian'
-        it { is_expected.to contain_package('nginx') }
-      end
+      it { is_expected.to contain_class('nginx::install') }
+      it { is_expected.to contain_class('nginx::service') }
     end
   end
 end

+ 12 - 0
spec/classes/service_spec.rb

@@ -0,0 +1,12 @@
+require 'spec_helper'
+
+describe 'nginx::service' do
+  on_supported_os.each do |os, os_facts|
+    context "on #{os}" do
+      let(:facts) { os_facts }
+      let(:pre_condition) { "class {'nginx':}" }
+
+      it { is_expected.to compile.with_all_deps }
+    end
+  end
+end