puppet單機模型

megachen發表於2018-09-10

puppet配置

命令

  • facter -p: 顯示所有的變數
  • puppet apply [-v] [–noop]
  • puppet module
  • puppet describe [-l] [list]

常用資源

  • file
  • user
  • group
  • exec
  • package
  • service
  • notify

puppet的資源

puppet中的正規表示式的匹配

  • $operatingsystem =~ /(?i-mx:(macox|majaro|debain|gentoo))
  • 上述表達的說明
    • $operatingsystem是puppet的內建變數
    • =~ 是字串的模式匹配
    • 其中/(?i-mx:
    • 此表示式表示作業系統的名稱是否匹配maosx, majaro, debain, gentoo其中的一種
  • /…/是必須的, 裡面的(?i-mx:可以不要, 那麼就採用預設的

puppet中的語句

  • if 語句
if CONDITION {
    # statement like notice("Hello, World!")
} elsif CONDITION {

} else {

}
  • case 語句

case {
    case1, case2: {

    }
    case3: {

    }
    case 4, case5, case6: {

    }
}
  • selector語句

$rootgroup = $osfamily ? {
        `Solaris`          => `wheel`,
        /(Darwin|FreeBSD)/ => `wheel`,
        default            => `root`,
}

原型為:
variable = $var ? {
    var1 => value1,
    var2 => value2
}

自定義模組

  • 建立一個module_name目錄, 在該目錄中包含manifests, lib, tests, spec, files, templates目錄, 其中在manifests中放的檔案是.pp檔案, 且和python一樣有類似的要求, 需要有一個init.pp檔案, 並且在該檔案中需要定義一個class, 他的class name需要和module_name一致

  • 下面為一個簡單的示例

nginx/
|-- files # 放置普通的檔案
|-- lib 
|-- manifests # 放置.pp檔案
|   `-- init.pp
|-- spec
|-- templates # 放置嵌入ruby指令碼的plain text, 就是裡面有 <%= %>等標誌的檔案
|   `-- nginx.conf
`-- tests


相關文章