【问题标题】:Setting environment variables with puppet使用 puppet 设置环境变量
【发布时间】:2013-03-04 16:09:25
【问题描述】:

我正在尝试找出使用 puppet 设置一些环境变量的最佳方法。

我可以使用 exec 并执行 export VAR=blah。但是,这只会持续到当前会议。我还考虑过将它添加到 bashrc 等文件的末尾。但是,我认为没有可靠的方法来检查那里是否一切就绪;所以它最终会随着木偶的每一次运行而被添加。

【问题讨论】:

  • “设置变量”不是“编辑 rc 文件”的另一种说法吗?所以你真的想在一个文件中部署内容?
  • 还可以通过使用 KEY=VALUE 变量列表创建 /etc/environment 文件来定义系统范围的环境变量。

标签: ruby deployment environment-variables environment puppet


【解决方案1】:

如果你将它添加到你的 bashrc 中,你可以通过执行检查它是否在 ENV 哈希中

ENV[VAR]

哪个会返回 => "blah"

【讨论】:

  • 谢谢,如果 puppet 不在 ENV 哈希中,我将如何告诉它只运行命令?
  • 访问环境变量VAR应该是ENV['VAR']
  • unless ENV[VAR]; puts "This is your code"; end;
【解决方案2】:

我会看看this related question

/etc/profile.d 中的*.sh 脚本在用户登录时读取(正如帖子所说,同时/etc/profile 是来源)

因此,位于/etc/profile.d 中的任何脚本中的变量export-ed 将可供您的用户使用。

然后您可以使用file 资源来确保此操作是idempotent。例如:

file { "/etc/profile.d/my_test.sh":
  content => 'export MYVAR="123"'
}

【讨论】:

    【解决方案3】:

    或者替代方法来获得一个幂等的结果:

    示例

    if [[ ! grep PINTO_HOME /root/.bashrc | wc -l > 0 ]] ; then
            echo "export PINTO_HOME=/opt/local/pinto" >> /root/.bashrc ;
    fi
    

    此选项允许在存在 pinto 应用程序可以保证它的安全性,而不必编写用户的 .bash_profile 不管盒子上可能有什么应用程序。

    【讨论】:

      【解决方案4】:

      如果您查看 Github's Boxen,他们会从 ~/.profile 获取脚本 (/opt/boxen/env.sh)。这个脚本运行了很多东西,包括:

      for f in $BOXEN_HOME/env.d/*.sh ; do
        if [ -f $f ] ; then
          source $f
        fi
      done
      

      这些脚本依次为其各自的模块设置环境变量。

      【讨论】:

        【解决方案5】:

        如果您希望变量影响所有用户 /etc/profile.d 是要走的路。

        但是,如果您希望它们用于特定用户,则 .bashrc 之类的内容更有意义。

        为了回应“我认为没有可靠的方法来检查它是否已经准备就绪;所以它最终会随着 puppet 的每次运行而被添加”,现在有一个来自 @ 的 file_line 资源可用987654321@:

        "确保给定的行包含在文件中。实现匹配整行,包括开头和结尾的空格。如果给定文件中不包含该行,则 Puppet 将该行附加到文件的末尾文件以确保所需的状态。可以声明多个资源以管理同一文件中的多行。"

        例子:

        file_line { 'sudo_rule':
          path => '/etc/sudoers',
          line => '%sudo ALL=(ALL) ALL',
        }
        
        file_line { 'sudo_rule_nopw':
          path => '/etc/sudoers',
          line => '%sudonopw ALL=(ALL) NOPASSWD: ALL',
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-05
          • 2015-10-21
          • 2018-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多