使用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
相关产品推荐
相关产品推荐

