Ansible运行时变量可通过ANSIBLE_前缀环境变量配置,自动生效且优先级高于playbook变量但低于-e参数,适用于CI/CD等场景,如ANSIBLE_SSH_USER、ANSIBLE_TIMEOUT等。
ansible 运行时的变量可以通过环境变量方式配置,核心是使用以 ansible_ 为前缀的大写环境变量名。这类变量会自动被 ansible 解析并生效,无需修改 playbook 或清单文件,适合 ci/cd、临时调试或统一管控场景。
支持的常用 ANSIBLE_ 环境变量
以下变量在运行 ansible 或 ansible-playbook 命令时立即生效:
- ANSIBLE_HOST_KEY_CHECKING=false:跳过 SSH 主机密钥检查(避免交互式确认)
- ANSIBLE_SSH_USER=deploy:指定默认 SSH 登录用户
- ANSIBLE_SSH_PORT=2222:覆盖默认 SSH 端口
- ANSIBLE_SUDO_USER=root:设置 sudo 执行用户
- ANSIBLE_TIMEOUT=30:调整连接超时秒数
- ANSIBLE_CONFIG=/path/to/ansible.cfg:指定自定义配置文件路径
- ANSIBLE_PYTHON_INTERPRETER=/usr/bin/python3:指定远程主机 Python 解释器路径
设置方式(Shell 中生效)
在执行 Ansible 命令前,用 export 设置即可:
export ANSIBLE_SSH_USER=admin export ANSIBLE_SSH_PORT=2222 export ANSIBLE_HOST_KEY_CHECKING=false ansible-playbook site.yml
也可以单行临时设置(仅本次命令有效):
ANSIBLE_SSH_USER=ops ANSIBLE_TIMEOUT=60 ansible-playbook deploy.yml
与 playbook 变量的关系
环境变量属于全局级别变量,优先级高于 vars、vars_files 和 inventory 变量,但低于命令行 -e 参数。它不能直接在 Playbook 中用 {{ ansible_ssh_user }} 引用(那是 facts 或连接参数),但会影响底层连接行为。
注意:ANSIBLE_* 环境变量控制的是 Ansible 的运行时行为,不是业务逻辑变量。如需传入业务参数(如 app_version),仍应使用 -e "app_version=1.2.3" 或 vars_files。
验证是否生效
运行以下命令查看当前生效的配置:
ansible-config dump | grep -i "ssh\|user\|timeout"
或启用详细模式观察连接过程:
ANSIBLE_SSH_USER=test ansible all -m ping -vvv


















