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  
相关推荐
曾经拒绝刘亦菲1 小时前
Clamav在麒麟V10离线安装指南
运维
志栋智能1 小时前
超自动化巡检:应对复杂IT环境的必然选择
运维·网络·安全·web安全·自动化
li星野2 小时前
[特殊字符] Linux/嵌入式Linux面试模拟卷
linux·运维·面试
一直都在5723 小时前
深入理解 synchronized:到底锁的是谁?
运维·服务器
RisunJan3 小时前
Linux命令-mkbootdisk(可建立目前系统的启动盘)
linux·运维·服务器
Sst的头号粉丝3 小时前
Docker——compose
运维·docker·容器
朽棘不雕4 小时前
Linux工具(上)
linux·运维·服务器
daad7774 小时前
bitcoin HD钱包示例 真实使命7
运维·服务器
Zero-Talent5 小时前
TCP/IP协议
运维·服务器·网络
桌面运维家5 小时前
Windows/Linux云桌面:高校VDisk方案部署指南
linux·运维·windows