Puppet 将节点从 master 分配给环境?

Phi*_*ide 2 puppet puppetmaster

我正在学习使用 Puppet,并已成功设置并连接了具有 2 个节点的主服务器。

production我已经为正在运行的默认环境创建了文件。我的环境文件夹中还有第二组配置beta

我想通过主服务器将 2 个节点中的 1 个分配给测试组。我该怎么做呢?

傀儡版本4

Dom*_*eal 5

环境可以通过代理的puppet.conf配置文件、代理的--environment命令行选项或主机使用外部节点分类器 (ENC)设置,按优先级递增的顺序。

  1. 运行puppet agent -t --environment beta以在非默认环境中运行代理。

  2. 在设置environment = beta下设置默认环境。[agent]/etc/puppetlabs/puppet/puppet.conf

或者配置 ENC 以定义主站上的环境:

  1. 创建一个脚本,例如/etc/puppetlabs/puppet/node.sh使用您喜欢的任何语言,例如

    #!/bin/bash
    if [ "$1" = beta.example.com ]; then
      echo "environment: beta"
    else
      echo "environment: production"
    fi
    
    Run Code Online (Sandbox Code Playgroud)
  2. 确保脚本可执行 ( chmod +x /etc/puppetlabs/puppet/node.sh)

  3. master /etc/puppetlabs/puppet/puppet.conf[master],设置:

    node_terminus = exec
    external_nodes = /etc/puppetlabs/puppet/node.sh
    
    Run Code Online (Sandbox Code Playgroud)

当代理运行时,它将从运行节点脚本的主服务器检索节点信息。该脚本返回一个带有环境名称的 YAML 文档(本例中为一行)。如果给出了环境名称,则代理将被迫使用该环境。

该脚本可以按照您认为合适的方式实现 - 它可以执行某种查询(例如针对数据库),针对主机名(第一个参数$1)执行一些逻辑,或者只是进行硬编码。