在外部定义变量值
变量名:只能用字母 数字 下划线组成,且只能以字母开头
playbook中设置变量名: {{ 变量名 }}
---
- hosts: all
remote_user: root
tasks:
- name: install package
yum: name={{ package }} state=latest
- name: up service
service: name={{ package }} state=started enable=yes
给变量赋值为nginx,并使用脚本 (此种赋值方式级别最高)
ansible-playbook -e 'packeage=nginx' playbook.yml
-e:'变量名=值'
当playbook中有多个变量需要赋值
---
- hosts: all
remote_user: root
tasks:
- name: install package
yum: name={{ package1 }} state=latest
- name: install package
yum: name={{ package2 }} state=latest
给变量赋值,并使用脚本
ansible-playbook -e 'packeage-1=nginx package-2=docker' playbook.yml
-e:'变量名-1=值 变量名-1=值',多个变量用空格分隔
在playbook中定义变量值
---
- hosts: all
remote_user: root
vars: #声明变量
- package1: nginx #定义变量
- package2: docker
tasks:
- name: install package
yum: name={{ package-1 }} state=latest #安装nginx
- name: install package
yum: name={{ package-2 }} state=latest #安装docker
在/etc/ansible/hosts中定义变量
普通变量:主机组中主机单独定义,优先级高于公共变量
公共(组)变量:针对主机组中所有主机定义统一变量
定义普通变量
vim /etc/ansible/hosts
[A]
192.168.205.128 pord=1 #pord=1是xxx.xxx.xxx.128的专属变量
192.168.205.130 pord=2
使用专属变量
- hosts: all
remote_user: root
tasks:
- name: rename
hostname: name=www{{pord}}.com.cn #调用专属变量
定义公共(组)变量
vim /etc/ansible/hosts
[A]
192.168.205.128 pord=1
192.168.205.130 pord=2
[A:vars] #注意此处的变化
name=www
domainname=.com.cn
ansible_ssh_port=65535 #被控端 ssh端口发生改变,在这里定义新端口
使用 专属变量 和 普通变量
- hosts: 192.168.205.128
remote_user: root
tasks:
- name: rename
hostname: name={{name}}{{pord}}{{domainname}} #调用专属变量
得到的name:www1.com.cn
/etc/anshible/hosts文件中定义的变量,依然可以通过命令行进行修改,命令行优先级最高
ansible-playbook -e 'name=aaa domainname=kkkk' playbook.yml
hosts文件中定义过变量,也要命令行优先,因为命令行优先配置文件
调用事先写在文件中的变量,使用变量文件
vars_files:
创建一个存放变量的文件
cat vars.yml #格式: 变量名:值
var1: httpd
var2: nginx
var3: mysql
var4: docker
playbook中调用此文件中的变量
---
- hosts: all
remote_user: root
vars_files: #调用变量文件
- vars.yml
tasks:
- name: install httpd package
yum: name={{var1}} state=latest #安装httpd
tasks:
- name: install nginx package
yum: name={{var2}} state=latest #安装nginx
tasks:
- name: install mysql package
yum: name={{var3}} state=latest #安装mysql ,变量值和变量文件对应
....省略