Apache-2.2

用於設置 Web 伺服器的範例 puppet 清單

  • January 24, 2016

只是用 puppet 弄濕了我的腳(到目前為止只是閱讀),並希望有一些範例(現實生活)清單/食譜可以設置一個典型的 web 伺服器,比如 apache/mysql/php 等,以及基本的伺服器加固( Ubuntu)

使用 puppet 最好記住的是嘗試為所有清單創建模組,以便程式碼可以輕鬆地用於多個伺服器和環境。

還可以通過這種方式使用 SVN 或 GIT,您可以輕鬆跟踪更改並檢查給定應用程序所需的配置文件。正如 kashani 所說,Puppet ForgeExample42都可以作為很好的參考。

下面是我為 Web 伺服器創建的範例清單。如果需要,這將為您提供安裝/解除安裝 Web 伺服器的選項。您會注意到它使用事實來檢查作業系統和體系結構以安裝正確的 RPMS (Centos)。儘管您可以輕鬆地將其作為模板並使用正確的包名稱擴展到 Ubuntu。

class apache ($disable = "false", $apacheconf = "default") {
 if $disable == "false" {
   $installed = present
   $enable = true
   $ensure = "running"
 } else {
   $installed = absent
   $enable = false
   $ensure = "stopped"
 }
 case $operatingsystem {
   'CentOS', 'RedHat': {
     if $architecture == "x86_64" {
       package { 'httpd':
         name   => "httpd.x86_64",
         ensure => $installed,
       }
     } else {
       package { 'httpd':
         name   => "httpd.i386",
         ensure => $installed,
       }
     }
     service { 'httpd':
       ensure => $ensure,
       enable => $enable,
     }
     file { "http.conf":
       path   => "/etc/httpd/conf/httpd.conf",
       owner  => root,
       group  => root,
       mode   => 0644,
       source => $apacheconf ? {
         'default' => "puppet:///modules/apache/httpd.conf",
       }
     }
   }  
 }
}

要向基本清單添加附加功能,您只需從另一個清單中呼叫它。比如安裝SSL http伺服器。在下面的程式碼中,您會看到 –include apache– 用於呼叫上面的清單,然後還安裝其他選項。

class apache::ssl ($disable = "false") {
 include apache

 if $disable == "false" {
   $installed = present
   $enable = true
   $ensure = "running"
 } else {
   $installed = absent
   $enable = false
   $ensure = "stopped"
 }

 case $operatingsystem {
   'CentOS', 'RedHat': {
     case $architecture {
       'x86_64': {
         package { 'mod_ssl':
           name   => "mod_ssl.x86_64",
           ensure => $installed,
           require => Package['httpd'],
         }
      }
       'i386':{
         package { 'mod_ssl':
           name   => "mod_ssl.i386",
           ensure => $installed,
           require => Package['httpd'],
         }
       }
     }
   }
 }
}

引用自:https://serverfault.com/questions/234540