且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

puppet单机模型

更新时间:2022-08-12 16:13:04

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