博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Puppet实战手册》——1.6 编写papply脚本
阅读量:6395 次
发布时间:2019-06-23

本文共 2123 字,大约阅读时间需要 7 分钟。

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

1.6 编写papply脚本

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

操作步骤

具体步骤如下。

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

ubuntu@cookbook:~/puppet$ mkdir modulesubuntu@cookbook:~/puppet$ mkdir modules/puppetubuntu@cookbook:~/puppet$ mkdir modules/puppet/manifestsubuntu@cookbook:~/puppet$ mkdir modules/puppet/files

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

#!/bin/shsudo 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/modulesNotice: /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$ papplyNotice: 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脚本。

转载地址:http://zkmha.baihongyu.com/

你可能感兴趣的文章
Ubuntu 12.04无法关机、重启解决办法
查看>>
[算法]C语言实现 骑士旅游(递归)
查看>>
perl内置变量
查看>>
iOS网络(1)
查看>>
Vim编辑器的使用
查看>>
cmd文件复制,删除
查看>>
Java学习日志(13-1-String类常见操作)
查看>>
多种I/O模型及其对socket效率的改进
查看>>
ORACLE set autotrace in SQL*Plus
查看>>
二叉排序树、平衡二叉树、红黑树、宽度平衡二叉树和树堆的绘制
查看>>
pd虚拟机给微软Windows10系统带来的惊喜
查看>>
swoole+inotify实现异步实时文件监控
查看>>
用jsp servlet 上传文件
查看>>
php二维数组添加元素
查看>>
bitmap的用法(浅谈)
查看>>
sgu 140
查看>>
买土豆的故事
查看>>
Android中声名Handler变量的内存泄露问题
查看>>
线性表的链式存储实现
查看>>
cocos2d-x 单选按钮菜单
查看>>