Ansible:在 shell 命令中使用 sudo 时未导出环境变量

问题描述 投票:0回答:1

我在导出环境变量作为以下 Ansible 任务的一部分时遇到问题 -

- name: Run custom shell script
  shell: "sudo bash custom_script.sh"
  register: output
  environment:
    ENV_VAR1: "secret-key"

在执行过程中,进程无法找到

ENV_VAR1

另一种方法是在 shell 命令中显式导出变量,例如 -

- name: Run custom shell script
  shell: "sudo su -c 'export ENV_VAR1=\"secret-key\"; bash custom_script.sh'"
  register: output

但是,我对这种方法不太满意,并且想利用 Ansible 提供的

environment
功能。

注意:请注意,我也将无法使用

become: true
,并且必须通过
sudo
运行shell命令。

如有任何帮助,我们将不胜感激。预先感谢。

shell ansible environment-variables ansible-2.x ansible-template
1个回答
0
投票

要告诉

sudo
保留环境,您可以使用
--preserve-env
保留所有变量或
--preserve-env=ENV_VAR1
只保留所需的变量。

附注关于权限升级,还有更多,而不仅仅是

become: true
,因此您可能会找到一种使用它的方法。此外,您使用
shell
而不是
command
,这也可能会影响脚本的行为。 这个答案有更多详细信息以及文档链接。

© www.soinside.com 2019 - 2024. All rights reserved.