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