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  
相关推荐
Brown.alexis9 分钟前
docker安装redis7
运维·docker·容器
c***72741 小时前
Linux下PostgreSQL-12.0安装部署详细步骤
linux·运维·postgresql
v***Y891 小时前
linux 设置tomcat开机启动
linux·运维·tomcat
unclecss1 小时前
从 0 到 1 手写 Linux 调试器:ptrace 系统调用与断点原理
linux·运维·服务器·c语言·ptrace
青靴1 小时前
从单机到集群:Docker 数据卷在高可用日志平台中的实战指南
运维·docker·容器
月球挖掘机1 小时前
jumpserver报错:502 badgateway --删除回放视频
运维·jumpserver
last demo1 小时前
fail2ban实验
linux·运维·服务器·网络
源梦想2 小时前
火柴人龙拳网页格斗小游戏Linux部署演示
linux·运维·服务器
Bruce_Liuxiaowei2 小时前
Windows安全事件4625分析:检测登录失败与防范暴力破解
运维·windows·安全·网络安全
我科绝伦(Huanhuan Zhou)3 小时前
MySQL运维必备:24个核心监控参数(含查询语句+异常处理)
运维·数据库·mysql