使用特定于环境的Puppet脚本的最佳实践是什么?

时间:2015-04-22 07:31:53

标签: vagrant puppet

我需要在开发环境中删除一些文件(例如使用Vagrant时)但不在生产环境中。我想在开发时禁用firewalld,但不在生产中。我希望在开发时禁用selinux,但不要在生产时禁用。

这样做的最佳做法是什么?我想在开发环境(使用Vagrant)和生产中使用我的木偶脚本。

1 个答案:

答案 0 :(得分:4)

使用特定于环境的脚本不是一个好习惯。相反,您应该拥有基于环境行为不同的脚本。让我来告诉你怎么做;为此,您需要执行两个步骤:

  1. 定义环境
  2. 您必须定义环境 - 我建议基于目录的环境(因为最终会丢弃基于配置的环境支持)。如何设置环境是一个私密的主题,我建议你查看documentation

    1. 在代码中使用环境
    2. 假设您已经定义了dev,qa,uat,prod等环境。您可以使用<meta name="viewport" content="width=device-width, initial-scale=1.0"> 变量获取当前环境的名称。您的清单应该利用环境变量来决定应该启用/禁用防火墙的天气等。例如:

      (根据Felix的评论修改,谢谢@Felix)

      $environment

      如果include profile::webserver if $environment != 'dev' include profile::firewall 与&#34; dev&#34;不匹配,则在上面的代码中只有这样才能应用防火墙角色!