【问题标题】:Puppet - how can I add host entry dynamically reading from linux $hostnamePuppet - 如何添加从 linux $hostname 动态读取的主机条目
【发布时间】:2014-05-03 00:09:22
【问题描述】:

我正在使用 puppet 来预置 AWS 云。我是这个的新手。 我的要求是在亚马逊 ec2 实例的 /etc/hosts 文件中添加条目。但是在写 puppet 的时候,我不知道实际的主机名。

如何在 .pp 文件中使用 $HOSTNAME 变量?

类似的东西 -

host { '$HOSTNAME':
  ip => 'echo $HOSTNAME | tr "-" "." | sed 's/ip.//'',
  host_aliases => 'mywebsite',
}

【问题讨论】:

    标签: amazon-ec2 puppet provisioning


    【解决方案1】:

    类似这样的:

    host { $fqdn : 
      ip => $ipaddress,
      host_aliases => 'mywebsite',
    }
    

    $fqdn 提供完全限定的域名,$ipaddress 提供机器的 IP 地址。如果您的系统中安装了facter,则这些变量可用。 facter 可在 puppetlab 存储库中找到。您可以像在系统中安装 puppet 一样安装它。

    与评论一样,您也可以使用$hostname 来获取短主机名来代替$fqdn

    【讨论】:

    • fqdn 很好,但我会将 $hostname 添加到 host_aliases 以获得短名称。可以通过指定一个数组来放入多个别名。
    • Puppet 在没有事实的情况下无法运行,因此可以安全地假定它已经安装。
    • 如果你需要 fqdn 和主机名,你可以这样做host_aliases => $::hostname
    【解决方案2】:

    因为我希望在启动脚本的启动执行之前更新主机文件,所以我这样做了,它对我有用。

    在 /etc/init.d/ 中添加了这个

    setup_hostname() {
      IPADDR=`echo $HOSTNAME | tr "-" "." | sed 's/ip.//'`
      echo "${IPADDR} ${HOSTNAME}" >> /etc/hosts
    }
    

    从一开始就调用 setup_hostname

    case "$1" in
      start)
      clean
      setup_hostname
      start
    ;;
    

    【讨论】:

      猜你喜欢
      • 2012-01-05
      • 2011-04-09
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      相关资源
      最近更新 更多