在外部定義變量值
變量名:只能用字母 數(shù)字 下劃線組成狐肢,且只能以字母開頭
playbook中設(shè)置變量名: {{ 變量名 }}
---
- 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:'變量名=值'
當(dāng)playbook中有多個(gè)變量需要賦值
---
- 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=值',多個(gè)變量用空格分隔
在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中定義變量
普通變量:主機(jī)組中主機(jī)單獨(dú)定義,優(yōu)先級高于公共變量
公共(組)變量:針對主機(jī)組中所有主機(jī)定義統(tǒng)一變量
定義普通變量
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 #調(diào)用專屬變量
定義公共(組)變量
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端口發(fā)生改變度秘,在這里定義新端口
使用 專屬變量 和 普通變量
- hosts: 192.168.205.128
remote_user: root
tasks:
- name: rename
hostname: name={{name}}{{pord}}{{domainname}} #調(diào)用專屬變量
得到的name:www1.com.cn
/etc/anshible/hosts文件中定義的變量狈醉,依然可以通過命令行進(jìn)行修改,命令行優(yōu)先級最高
ansible-playbook -e 'name=aaa domainname=kkkk' playbook.yml
hosts文件中定義過變量牲芋,也要命令行優(yōu)先撩笆,因?yàn)槊钚袃?yōu)先配置文件
調(diào)用事先寫在文件中的變量捺球,使用變量文件
vars_files:
創(chuàng)建一個(gè)存放變量的文件
cat vars.yml #格式: 變量名:值
var1: httpd
var2: nginx
var3: mysql
var4: docker
playbook中調(diào)用此文件中的變量
---
- hosts: all
remote_user: root
vars_files: #調(diào)用變量文件
- 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 ,變量值和變量文件對應(yīng)
....省略