You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sudo执行Shell命令时Ansible环境变量无法导出的问题求助

问题解决:Ansible environment变量在sudo执行脚本时无法传递

问题原因

sudo默认会重置执行环境,清除大部分原有环境变量,包括Ansible通过environment字段注入的ENV_VAR1,导致脚本无法读取到该变量。

解决方案

使用sudo的-E(或--preserve-env)参数,让sudo保留当前环境变量,结合Ansible的environment配置即可解决问题:

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

补充说明

如果目标主机的sudoers配置严格限制了环境变量保留(比如设置了env_delete),可以在sudo命令中显式传递指定变量作为补充:

- name: Run custom shell script with explicit env var
  shell: "sudo ENV_VAR1='{{ ENV_VAR1 }}' bash custom_script.sh"
  register: output
  environment:
    ENV_VAR1: "secret-key"

内容的提问来源于stack exchange,提问作者Kalit Inani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 11:27:33