《Puppet实战手册》——1.6 编写papply脚本

本节书摘来自异步社区《Puppet实战手册》一书中的第1章,第1.6节,作者:【英】John Arundel著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.6 编写papply脚本

人们希望可以尽量简单和简单地将Puppet配置应用到主机上,因此,通常会写一个脚本,它包含puppet apply命令和所需要的参数。要部署这个脚本到需要它的地方,除了Puppet,还有什么更好的工具吗?

操作步骤
具体步骤如下。

1. 在Puppet仓库目录中创建puppet模块必需的目录。

ubuntu@cookbook:~/puppet$ mkdir modules
ubuntu@cookbook:~/puppet$ mkdir modules/puppet
ubuntu@cookbook:~/puppet$ mkdir modules/puppet/manifests
ubuntu@cookbook:~/puppet$ mkdir modules/puppet/files

2. 参照下面的内容,创建modules/puppet/files/papply.sh文件,sudo puppet apply命令应该全部写在同一行中(修改/home/ubuntu/puppet目录为Puppet仓库所在的目录),内容如下:

#!/bin/sh
sudo puppet apply /home/ubuntu/puppet/manifests/site.pp
 --modulepath=/home/ubuntu/puppet/modules/ $*

3. 创建modules/puppet/manifests/init.pp文件,内容如下:

class puppet {
 file { '/usr/local/bin/papply':
   source => 'puppet:///modules/puppet/papply.sh',
   mode  => '0755',
 }
}

4. 修改manifests/node.pp文件,内容如下:

node 'cookbook' {
  include puppet
}

5. 应用这些修改。

ubuntu@cookbook:~/puppet$ sudo puppet apply manifests/site.pp 
  --modulepath=/home/ubuntu/puppet/modules
Notice: /Stage[main]/Puppet/File[/usr/local/bin/papply]
  /ensure: defined content as '{md5} 
   171896840d39664c00909eb8cf47a53c'
Notice: Finished catalog run in 0.07 seconds

6. 测试脚本是否工作正常。

ubuntu@cookbook:~/puppet$ papply
Notice: Finished catalog run in 0.07 seconds

现在,当需要运行Puppet时,只需要简单运行papply即可。将来需要应用Puppet变更时,也只需要运行papply而不是运行完整的puppet apply命令。

工作原理
可以看到,在一台机器上运行Puppet和应用指定的清单文件,只需要运行puppet apply命令。

puppet apply manifests/site.pp
使用模块(如刚刚创建的puppet模块)时,还需要告诉Puppet去哪里搜索模块,使用modulepath参数指定模块搜索目录。

puppet apply manifests/site.pp -- 
  modulepath=/home/ubuntu/puppet/modules

为了使用root权限运行Puppet,必须在命令前使用sudo。

sudo puppet apply manifests/site.pp --
  modulepath=/home/ubuntu/puppet/modules

最后,通过添加$*参数,任何传递给papply的额外参数都会传递给Puppet。

sudo puppet apply manifests/site.pp --
  modulepath=/home/ubuntu/puppet/modules $*

由于需要输入太多字符,可以把它们写进一个脚本以简化操作。同时,添加一个Puppet file资源,用来部署papply脚本到/usr/local/bin目录并使其执行。

file { '/usr/local/bin/papply':
  source => 'puppet:///modules/puppet/papply.sh',
  mode  => '0755',
}

最后,需要在cookbook节点声明中包括include puppet:

node 'cookbook' {
  include puppet
}

读者可以在Puppet管理其他任何节点中使用同样的方法来部署papply脚本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值