【问题标题】:Knife ssh not loading environment variables刀 ssh 不加载环境变量
【发布时间】:2014-10-21 05:10:24
【问题描述】:

在我的节点node_name 上,我在/etc/profile 中设置了$JAVA_HOME 和其他环境变量。我知道(发现)knife ssh 不是登录 shell,因此不会加载环境变量。有没有办法加载环境变量而不必source呢? 现在我不得不这样做

knife ssh 'name:nod_name' 'source /etc/profile; echo $JAVA_HOME'

我在knife ssh 期间链接了一些命令,包括一些环境变量,加载/etc/profile 只会延长时间。有没有办法在刀 ssh 期间加载 /etc/profile?

【问题讨论】:

  • 这是远程节点的 shell 配置的问题。如果您不带刀通过 SSH 连接到远程节点,您将面临同样的问题。
  • 那么你究竟如何修复那个节点的shell配置呢?

标签: environment-variables chef-infra knife


【解决方案1】:

这与knife ssh 无关,它只是SSH 对直接通过连接执行的命令的工作方式。您也可以运行类似bash -l -c "something" 的命令。一般来说,您不能指望任何特定的方式在非交互式会话中设置 env vars 为可移植的,因此请谨慎行事。

【讨论】:

    【解决方案2】:

    并不是真正回答 OP 的问题,而是在寻找类似问题的解决方案。以为我会分享我的情况和解决方案,以帮助某人。我的问题是尝试使用 root 的 .bashrc 中的 awscli 凭据在我们的本地服务器上远程运行 Chef。 -i 开关是我为了在 .bashrc 中加载 root 的环境变量而缺少的。

    没用:

    knife ssh "name:$NODE" "sudo /etc/init.d/appserver stop; sleep 10;sudo chef-client -r role_appserver" -A -x user -P password

    工作:

    knife ssh "name:$NODE" "sudo /etc/init.d/appserver stop; sleep 10;sudo -i chef-client -r role_appserver" -A -x user -P password

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-20
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 2019-10-31
      相关资源
      最近更新 更多