TOUVE 发表于 2018-8-3 08:39:09

Puppet之代码实例

  注:所有安装都是通过apt来安装而非源码。版本为3.0.1
  puppet安装好的配置目录为/etc/puppet
  实例一(Hello word)
  目录结构说明:
  


[*].
[*]├── auth.conf #
[*]├── fileserver.conf #文件服务器配置文件
[*]├── manifests #主文件所在目录
[*]│   └── site.pp #主文件(入口文件,必须有这个文件)
[*]├── modules #各个模块所在目录
[*]├── puppet.conf #主配置文件
[*]└── templates
  

  site.pp配置:
  


[*]node default {
[*]    file { “/tmp/test”:
[*]      content=>”hello”,
[*]      mode => 0644;
[*]    }
[*]}
  

  同时在agent上输入:sudopuppet agent--test, 查看agent的/tmp文件夹,生成了一个新文件test,里面的内容是hello,该文件的权限是-rw-r--r--。这样,便证明puppet安装成功。
  实例二(只更新apt源):
  


[*]. #目录结构
[*]├── auth.conf
[*]├── fileserver.conf
[*]├── manifests
[*]│   ├── nodes.pp
[*]│   └── site.pp
[*]├── modules
[*]│   └── apt
[*]│       ├── files
[*]│       │   └── sources.list
[*]│       └── manifests
[*]├── puppet.conf
[*]└── templates
  

  各文件内容:
  


[*]#--site.pp
[*]import "nodes.pp"
[*]
[*]#--node.pp
[*]node 'agent1.com'{
[*]    file { "/etc/apt/sources.list":
[*]      ensure => file,
[*]      source => "puppet:///modules/apt/sources.list",
[*]    }
[*]}
[*]
[*]#--modules/apt/files/sources.list
[*]deb http://xxxx/ubuntu lucid main restricted universe multiverse
[*]deb http://xxxx/ubuntu lucid-security main restricted universe multiverse
[*]deb http://xxxx/ubuntu lucid-updates main restricted universe multiverse
[*]deb http://xxxx/ubuntu lucid-proposed main restricted universe multiverse
[*]deb http://xxxx/ubuntu lucid-backports main restricted universe multiverse
  

  配置完成后在agent上输入:sudopuppet agent--test然后查看/etc/apt/sources.list是否是modules/apt/files/sources.list的内容。
  注意:
  


[*]file { "/etc/apt/sources.list":
[*]    source => "puppet:///modules/apt/sources.list",
[*]}
  

  source 参数是这样约定的: puppet:/// 之后的第一部分假定是一个 挂装点(mount point) 名称,其余部份被视为一个文件路径,如下所示:
  


[*]puppet:///<mount point>/<path>
  

  通常 <mount point> 的值是一个模块名称,如上例所示。在这个例子中, Puppet 将在如下的位置查找文件:
  


[*]modules/apt/file/sources.list
  

  实例三(完整使用模块更新apt源):
  


[*].
[*]├── auth.conf
[*]├── fileserver.conf
[*]├── manifests
[*]│   ├── modules.pp
[*]│   ├── nodes.pp
[*]│   └── site.pp #可设置全局变量,参数缺省值 (当各个模块没有设置这些参数时,它们的缺省值)以及其它pp文件的调用
[*]├── modules
[*]│   └── apt          #apt 模块
[*]│       ├── files    #该模块对应的文件资源,可能是要发送给slave的配置文件等
[*]│       │   └── sources.list
[*]│       └── manifests#模块的manifest文件
[*]│         └── init.pp #模块入口文件
[*]├── puppet.conf
[*]└── templates
  

  文件内容:
  


[*]#--site.pp
[*]import &quot;nodes.pp&quot;
[*]import &quot;modules.pp&quot;
[*]
[*]#--node.pp
[*]node 'agent1.com'{
[*]    include apt
[*]}
[*]
[*]#--modules.pp
[*]import &quot;apt&quot;
[*]
[*]#--modules/apt/manifests/init.pp
[*]class apt {
[*]      file { &quot;/etc/apt/sources.list&quot;:
[*]          ensure => file,
[*]          source => &quot;puppet:///modules/apt/sources.list&quot;,
[*]   }
[*]}
[*]
  

  配置完成后在agent上输入:sudopuppet agent--test然后查看/etc/apt/sources.list是否是modules/apt/files/sources.list的内容。
页: [1]
查看完整版本: Puppet之代码实例