配置管理工具Puppet 安装和测试(二)-创新互联-成都快上网建站

配置管理工具Puppet 安装和测试(二)-创新互联

于2017.04.21 从新浪博客搬迁过来

济水街道网站建设公司成都创新互联,济水街道网站设计制作,有大型网站制作公司丰富经验。已为济水街道1000+提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的济水街道做网站的公司定做!

----------------------------------------------------------------

其实我们已经连接了一个client就是在启动客户端的时候),在第一次连接的时候会agent会发起一个证 验证的请求并使用一个私钥来加密连接,puppet使用SSL证书来验证master和client之间的连接,client向master发起证书请求,然后等待master签名并返回证书

为了完成连接,master需要对证书进行签名:

puppet cert --list          显示等待签名的证书

puppet cert --sign client34.puppet.com    对client34发起的证书进行签名

puppet cert --sign --all        对所有等待签名的证书进行签名

可能遇到的问题:

err: Could not retrieve catalog: Could not find default node or by name whit……..

虽然agent现在已经连接到了master,并且已经签名也验证了这个会话,但是对于agent来说master上并没有可用的配置,因此收到这条错误提示,为节点添加上可用配置就可以了;

1.  创建第一个配置

Puppet将包含配置数据的文件称为清单,puppet清单由许多组件组成:

资源:独立的配置项

文件:能发送到agent的真实文件

模版:能够填充文件的模版文件

节点:用于指定每一个agent的配置

类:资源的容器

定义:资源的组合容器

这些组件由一个包含变量、条件、数组和其他特性的配置语言保证起来的;

扩展site.pp文件

创建第一个agent配置的第一步是定义和扩展stie.pp文件

vim /etc/puppet/manifests/site.pp

import 'nodes.pp'

$puppetserver = 'master.puppet.com'

#import指令告诉puppet载入一个nodes.pp的文件,也可以载入多个文件,import 'nodes/*' 这样将会载入nodes目录下所有以.pp扩展名的文件

#$puppetserve 定义一个变量,在这里puppetserve被赋值指定puppet master,并且能够在puppet配置中使用;

Agent的配置

首先需要添加一个节点定义

vim /etc/puppet/manifests/nodes.pp

node 'client34.puppet.com' {

    include sudo

    package { 'vim': ensure => present }         #也可以为一个节点指定单独的资源

}

配置管理工具Puppet 安装和测试(二)

include 指令用于指定需要被应用到主机的配置集合,一个节点包含两种配置集合:

类:资源的容器          模块:一个高级,可移植的资源容易,包含类、定义及其他一些puppet配置

可以使用多个include指令或者用逗号隔开

include sudo

include sshd

include vim, syslog-ng

创建第一个模块

每一个模块都需要一个特定的目录结构和一个叫做init.pp的文件,这个目录结构能够帮助puppet自动载入模块,模块路径可以有puppet.conf中[main]段modulepath配置项设置,默认路径/etc/puppet/modules/和/var/lib/puppet/modules/

   这里我们创建一个sudo的模块

   创建模块结构

   mkdir -p /etc/puppet/modules/sudo/{ files,manifests, templates}

   touch /etc/puppet/modules/sudo/manifests/init.pp

  manifests用于存放init.pp文件和其他配置,init.pp文件是模块的核心,每个模块必须存在;files目录存放属于模块的一部分文件;     templates包含模块可能会用到的任何模版;

 创建sudo模块的init.pp文件

vim/etc/puppet/modules/sudo/manifests/init.pp

 class sudo {

    package { sudo:

        ensure => present,

    }

    if $operatingsystem == "Ubuntu" {

        package { "sudo-ldap":

            ensurce => present,

            require => Package["sudo"]

        }

    }

    file { "/etc/sudoers":

            owner => "root",

            group => "root",

            mode => 0440,

            source => "puppet://$puppetserver/modules/sudo/etc/sudoers",

            require => Package["sudo"],

        }

}

配置管理工具Puppet 安装和测试(二)

Sudo模块的init.pp文件包含了一个单独的类,也叫做sudo;类中包含了3个资源:两个软件包和一个文件资源;

第一个软件包资源使用ensure => present 来确保sudo包已经安装,第二个软件包资源使用if/else语法作为安装sudo-ldap包的条件判断;还有另外两种条件判断语句:case和选择器语法>

Puppet会检查每一个连接客户端的operatingsystem的值,如果$operatingsystem的fact值是Ubuntu,puppet就会安装sudo-ldap包。

Sudo类中最后一个资源是一个文件资源 File["/etc/sudoers"]用来管理/etc/sudoers文件,前3个属性指定这个文件的用户和组、权限;下一个属性source允许puppet从puppet文件服务器上获取一个文件并将其发生到客户端,这个属性的值就是puppet文件服务器和所需文件的路径;

Source的下一部分告诉puppet去那里寻找这个文件,等同于一个网络共享文件,这文件第一部分是modules,表明文件是存放在一个模块下的,接下来指定模块,这里是sudo,最后指定模块内的路径。

Require是一个元参数,元参数require在资源Package["sudo-ldap"]和Package["sudo"]之间创建了一个依赖关系,在这个例子中,给资源加上require元参数就是高速puppet  Package["sudo-ldap"]依赖于Package["sudo"],因此Package["sudo"]资源一定会首先被执行。

所有存放在模块中的文件都位于files目录下,这可以认为是模块文件的共享根,在这个例子中我们将要在files中创建etc目录和sudoers文件

mkdir -p /etc/puppet/modules/sudo/files/etc/

cp /etc/sudoers /etc/puppet/modules/sudo/files/etc/sudoers

注意在这里好像得给/etc/puppet/modules/sudo/files/etc/sudoers所有人可读权限

应用第一个配置

我们再次允许puppet  agent来观察这一点

因为我这虚拟机中已经存在/etc/sudoers 这个文件,先将其删除

Rm –rf /etc/soduers

puppet agent --server=master.puppet.com --no-daemonize --verbose –onetime

配置管理工具Puppet 安装和测试(二)

可以看到在/etc/又有了sudoers这个文件,这就说明我们agent从master应用成功了。

或者可以这样来测试应用,让在/tmp下创建一个文件

vim /etc/puppet/manifests/nodes.pp

node 'client34.puppet.com' {

    file { "/tmp/agent_test.txt":                       #这是文件路径

        content => "The Is Puppet Test!!",              #这是文件内容

        }

}

配置管理工具Puppet 安装和测试(二)

在客户端查看效果

 配置管理工具Puppet 安装和测试(二)

至此Puppet 就初步的安装和测试连接完成了,我也是第一次接触puppet,目前就安装和测试成功了,其他功能还待探索,如果有什么不正确或者更好的方法请指点!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:配置管理工具Puppet 安装和测试(二)-创新互联
浏览地址:http://kswjz.com/article/dssggj.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流