Ansible-playbook 传递变量参数

时间:2025-04-06 08:37:09

ansible-playbook yml脚本传递变量参数的几种方法

playbook 脚本内容

---
- hosts: "{{ hosts }}"  # 变量
  remote_user: 普通用户
  become: yes
  become_method: sudo

  tasks:
    - name: deliver authorized_keys
      authorized_key:
        user: "{{ user }}"  # 变量
        key: "{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
        state: present
        exclusive: yes

命令行传参4种方式

## 执行playbook脚本传参

# -e (优先级最高)
ansible-playbook -e "user=zwl hosts=dny" 

# --extra-vars (key=value)
ansible-playbook --extra-vars "user=zwl hosts=dny" 

# --extra-vars (json格式)
ansible-playbook --extra-vars "{'user':'zwl','hosts':'dny'}" 

# --extra-vars (使用@语法 json文件)
ansible-playbook --extra-vars "@" 
# 文件内容
{'user':'zwl','hosts':'dny'}

hosts文件传参

## /etc/ansible/hosts 文件
[test]
192.168.1.123 user=zwl hosts=dny

hosts文件里面写[groupname:vars]传参

## /etc/ansible/hosts 文件
[test]
192.168.1.123

[test:vars]
user=zwl hosts=dny

playbook文件中vars指定

---
- hosts: "{{ hosts }}"  # 变量
  remote_user: 普通用户
  become: yes
  become_method: sudo
  
  vars:
  - user=zwl
  - hosts=dny
  
  tasks:
    - name: deliver authorized_keys
      authorized_key:
        user: "{{ user }}"  # 变量
        key: "{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
        state: present
        exclusive: yes