ansible-playbook -e 传递变量

ansible-playbook -e 用来传递额外变量(extra variables)到 playbook 中。

基本语法

bash 复制代码
ansible-playbook -e "变量名=值" playbook.yml  
# 或  
ansible-playbook --extra-vars "变量名=值" playbook.yml  

使用方式

1. 传递单个变量

bash 复制代码
ansible-playbook -e "env=production" deploy.yml  

2. 传递多个变量

bash 复制代码
# 方式一:多个 -e 选项  
ansible-playbook -e "env=production" -e "version=1.2.3" deploy.yml

# 方式二:空格分隔  
ansible-playbook -e "env=production version=1.2.3" deploy.yml

# 方式三:JSON 格式  
ansible-playbook -e '{"env":"production","version":"1.2.3"}' deploy.yml  

3. 从文件传递变量

bash 复制代码
# YAML 文件  
ansible-playbook -e "@vars.yml" deploy.yml

# JSON 文件  
ansible-playbook -e "@vars.json" deploy.yml  

4. 在 playbook 中使用变量

yaml 复制代码
- name: Deploy application  
  hosts: all  
  tasks:  
    - name: Deploy to {{ env }} environment  
      debug:  
        msg: "Deploying version {{ version }} to {{ env }}"  

变量优先级

-e 传递的变量具有最高优先级,会覆盖其他来源的同名变量:

  1. Extra vars (-e) ← 最高优先级
  2. Task vars
  3. Block vars
  4. Role vars
  5. Play vars
  6. Host vars
  7. Group vars
  8. Inventory vars ← 最低优先级

实际应用场景

bash 复制代码
# 部署不同环境  
ansible-playbook -e "env=staging" -e "branch=develop" deploy.yml

# 传递敏感信息  
ansible-playbook -e "db_password=secret123" setup.yml

# 动态配置  
ansible-playbook -e "nginx_port=8080" -e "workers=4" webserver.yml  
相关推荐
SelectDB12 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智6 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_6 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉6 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造