侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

安装Puppet

2023-11-24 星期五 / 0 评论 / 0 点赞 / 38 阅读 / 7190 字

基础信息 测试用的两台机器: 192.168.0.1 master.domain.com192.168.0.2 agent1.domain.com 由于 puppet ag

基础信息

    测试用的两台机器:

192.168.0.1      master.domain.com192.168.0.2      agent1.domain.com

    由于 puppet agent 在向 master 申请证书的时候,会用到服务器的 hostname,而 centos 默认的 hostname 又都是 localhost.localdomain,势必会造成证书名冲突的错误,需要修改服务器的 hostname:

[master.domain.com]$ hostnamectl set-hostname master.domain.com[master.domain.com]$ systemctl reboot [agent1.domain.com]$ hostnamectl set-hostname agent1.domain.com[agent1.domain.com]$ systemctl reboot

 

安装 Puppet master

    centos 官方的 yum 源里面不包含 puppet 软件包,需要添加 epel 扩展,由于是测试环境测试,并没有配置 DNS 服务器,所以用修改服务器 hosts 文件的方式代替解析:

[master.domain.com]$ cat /etc/hosts192.168.0.1  master.domain.com192.168.0.2  agent1.domain.com   [master.domain.com]$ yum install epel-release [master.domain.com]$ yum install puppet-server # 添加防火墙 8140 端口,puppet 会监听这个端口[master.domain.com]$ firewall-cmd --add-port=8140/tcp

 

安装 Puppet agent    

[agent1.domain.com]$ cat /etc/hosts192.168.0.1  master.domain.com  [agent1.domain.com]$ yum install epel-release [agent1.domain.com]$ yum install puppet 

 

测试 Hello World

    Puppet 的配置在 /etc/puppet 下面(有些配置文件在安装时并没有创建,需要用到时再创建,并且 agent 和 master 端也不一样):

|-- auth.conf #ACL 权限控制文件|-- fileserver.conf #文件服务配置文件 |-- manifests #节点 存储 目录( Puppet 会首 先 加载 site.pp)     | `-- site.pp #定义 Puppet 变量 和 默认 配置 |-- modules #模块 配置 目录     | `-- nginx #以 Nginx 为例,初始安装没有,用户自定义添加        |-- manifests             | `-- init.pp #模块主配置文件, 定义类 class 相关信息。 读取模块后先读取它         | `-- templates             | `-- nginx.conf.erb #模板配置文件( erb 为主) |-- namespaceauth.conf #命名空间配置文件( 配置权限) |-- puppet.conf #Puppet 主配置文件 |`-- tagmail.conf #邮件 报告配置文件

    在 master 服务器上创建 site.pp:

[master.domain.com]$ cat /etc/puppet/manifests/site.ppnode default {    file { "/tmp/helloworld.txt" :        content => "Hello World!",    }}

    启动 master Server,用 --no-daemonize 的方式,便于查看日志:

[master.domain.com]$ puppet master --no-daemonize --debug......Notice: Starting Puppet master version 3.6.2   # 启动成功   # puppet master # 则会以 daemon 的方式启动

    配置客户端 /etc/puppet/puppet.conf,并启动 agent:

[agent1.domain.com]$ cat /etc/puppet/puppet.conf[agent]    ...    ...    server = master.domain.com #不指定 master 服务器,那么 puppet agent 会默认寻找名叫“puppet”的主机[agent1.domain.com]$ puppet agent --server master.domain.com --test #--server 可以不加,因为前面在配置文件中加过 server 了Info: Creating a new SSL key for agent1.domain.comInfo: Caching certificate for caInfo: csr_attributes file loading from /etc/puppet/csr_attributes.yamlInfo: Creating a new SSL certificate request for agent1.domain.comInfo: Certificate Request fingerprint (SHA256): 1D:08:61:3B:1F:43:8C:B5:81:83:0F:FF:CC:4A:4F:8E:BA:B4:5F:7C:94:77:15:72:A2:0C:C0:44:D9:1D:16:9EInfo: Caching certificate for caExiting; no certificate found and waitforcert is disabled

    agent 会向 master 申请 SSL 证书,由于证书目前还没有被 master 审核,所以不成功;

    master 审核证书:

[master.domain.com]$ puppet cert list --all"agent1" (SHA256) 1D:08:61:3B:1F:43:8C:B5:81:83:0F:FF:CC:4A:4F:8E:BA:B4+ "master" (SHA256) 47:A1:12:28:22:05:75:A5:E5:92:2B:F6:53:05:A8:D6:1F:9B#这时候会看到两个证书,master 在 puppet-server 启动时就申请审核了,agent1 证书前面没有 +,表示未被审核的状态[master.domain.com]$ puppet cert sign agent1 #也可以偷懒 sign all[master.domain.com]$ puppet cert list --all+ "agent1" (SHA256) 1D:08:61:3B:1F:43:8C:B5:81:83:0F:FF:CC:4A:4F:8E:BA:B4+ "master" (SHA256) 47:A1:12:28:22:05:75:A5:E5:92:2B:F6:53:05:A8:D6:1F:9B#这时候就代表审核通过了

    再次启动 agent:

[agent1.domain.com]$ puppet agent --testInfo: Retrieving pluginfactsInfo: Retrieving pluginInfo: Caching catalog for agent1.domain.comInfo: Applying configuration version '1479087051'Notice: /Stage[main]/Main/Node[default]/File[/tmp/helloworld.txt]/ensure: defined content as '{md5}ed076287532e86365e841e92bfc50d8c'Notice: Finished catalog run in 0.02 seconds

    这时候就自动创建了 /tmp/helloworld.txt 文件。

 

自动审核证书

    master 添加 autosign.conf 自动审核配置文件:

[master.domain.com]$ cat /etc/puppet/autosign.conf*.domain.com           #正则表达式匹配后缀为 domain.com 的主机[master.domain.com]$ cat /etc/puppet/puppet[master]    ...    ...    autosign = /etc/puppet/autosign.conf[master.domain.com]$ puppet cert clean --all[agent1.domain.com]$ rm -rf /var/lib/puppet

 

碰到的问题

    证书申请失败:由于主机名相同的证书已经注册等原因导致的证书申请失败,需要删除已经申请的证书,重新申请,一般证书步骤都能解决:

[agent1.domain.com]$ rm -rf /var/lib/puppet/*   # agent 端缓存文件[master.domain.com]$ puppet cert clean agent1.domain.com  # 删除未审核的证书

 

    Master 找不到证书:在 master 执行 puppet cert list --all 命令找不到任何证书,由于 puppet.conf 中配置的证书默认位置:

[main]    ...    ...    # Where SSL certificates are kept.    # The default value is '$confdir/ssl'.    ssldir = $vardir/ssl

    可以看到 ssldir 使用 $vardir 环境变量来确定的,不同的用户可能会导致这个变量发生变化,从而导致无法找到证书,可以通过绝对路径的方式避免。

 

PS:可以参考网上一些常用的 Puppet 配置实例

    

广告 广告

评论区