一.ansible变量
一.ansible变量
1.Ansible中的facts变量
2.Ansible中的自定义变量
1.Ansible中的facts变量
(1)Facts变量是什么:
facts变量可以理解为Ansible中的预定义变量(自带变量{{ ansible_hostname }}等)
用于采集的被控节点的设备信息
主要包含IP地址、操作系统、以太网设备、mac 地址、时间/日期相关数据,硬件信息等
(2)查看Facts变量
使用setup模块,用于获取所有facts信息
ansible web1 -m setup | less
(3)剧本中使用facts变量
剧本中调用变量格式:{{ 变量名 }}
剧本中可以使用debug模块打印变量信息
剧本中默认有Gathering Facts的任务,收集到Facts信息后可以使用该模块打印
2.Ansible中的自定义变量(优先级从低到高)
Ansible支持十几种变量定义方式
Ansible变量定义的位置,下列变量优先级从低到高
roles defaults目录下的变量
-inventory文件中定义,主机的变量
-inventory文件,组的变量
inventory文件主机的变量
-play剧本中组的变量
play剧本中主机的变量
-facts事实变量
vars定义的变量
vars_prompt定义的变量
vars_files导入的变量
注册变量
roles中单独定义的及导入的变量
block中定义的变量
任务中定义的变量
命令行指定的变量
-常用变量:(优先级低到高)
(1)inventory清单文件中单主机的变量(读取到该主机的时候读取变量)
(2)inventory清单文件主机组的变量(读取到该组的时候读取)
(3)play剧本中定义的变量
(4)".yml"变量文件定义的变量(其它剧本也可使用)vars_files: fvars.yml
(5)facts事实变量
(1)inventory清单文件中定义单主机的变量(读取到该主机的时候读取变量)
[dbs]
db1 username="liubei" #定义属于db1主机的变量
---
- name: create user with host vars
hosts: db1
tasks:
- name: test host vars
user:
name: "{{ username }}" 前面没东西必须加双引号
state: present
(2)inventory清单文件组的变量(读取到该组的时候读取)
[webservers:vars] #定义属于组的变量,:vars是固定格式
username="guanyu"
(3)play剧本中组的变量
---
- name: create user with play vars
hosts: webservers
vars: #剧本中定义变量
username: "zhangfei" #定义变量
password: "123456" #定义变量,数字作为密码必须用引号,表示字符串
tasks:
- name: test play vars
user:
name: "{{ username }}"
password: "{{ password|password_hash('sha512')}}"
state: present
(4)".yml"变量文件定义变量(其它剧本也可使用)
[root@pubserver ansible]# vim fvars.yml
---
username: "lvbu"
password: "654321"
---
- name: create user with vars files
hosts: webservers
vars_files: fvars.yml #调用定义变量的文件
tasks:
- name: test vars file
user:
name: "{{ username }}"
password: "{{ password | password_hash('sha512')}}"
(5)facts事实变量
[root@pubserver ansible]# vim var5.yml
---
- name: copy file with facts
hosts: webservers
tasks:
- name: use facts
copy:
content: "hostname: {{ ansible_hostname }}"
dest: /tmp/facts.txt
一.ansible变量
1.Ansible中的facts变量
2.Ansible中的自定义变量
1.Ansible中的facts变量
(1)Facts变量是什么:
facts变量可以理解为Ansible中的预定义变量(自带变量{{ ansible_hostname }}等)
用于采集的被控节点的设备信息
主要包含IP地址、操作系统、以太网设备、mac 地址、时间/日期相关数据,硬件信息等
(2)查看Facts变量
使用setup模块,用于获取所有facts信息
ansible web1 -m setup | less
(3)剧本中使用facts变量
剧本中调用变量格式:{{ 变量名 }}
剧本中可以使用debug模块打印变量信息
剧本中默认有Gathering Facts的任务,收集到Facts信息后可以使用该模块打印
2.Ansible中的自定义变量(优先级从低到高)
Ansible支持十几种变量定义方式
Ansible变量定义的位置,下列变量优先级从低到高
roles defaults目录下的变量
-inventory文件中定义,主机的变量
-inventory文件,组的变量
inventory文件主机的变量
-play剧本中组的变量
play剧本中主机的变量
-facts事实变量
vars定义的变量
vars_prompt定义的变量
vars_files导入的变量
注册变量
roles中单独定义的及导入的变量
block中定义的变量
任务中定义的变量
命令行指定的变量
-常用变量:(优先级低到高)
(1)inventory清单文件中单主机的变量(读取到该主机的时候读取变量)
(2)inventory清单文件主机组的变量(读取到该组的时候读取)
(3)play剧本中定义的变量
(4)".yml"变量文件定义的变量(其它剧本也可使用)vars_files: fvars.yml
(5)facts事实变量
(1)inventory清单文件中定义单主机的变量(读取到该主机的时候读取变量)
[dbs]
db1 username="liubei" #定义属于db1主机的变量
- name: create user with host vars
hosts: db1
tasks:
- name: test host vars
user:
name: "{{ username }}" 前面没东西必须加双引号
state: present
(2)inventory清单文件组的变量(读取到该组的时候读取)
[webservers:vars] #定义属于组的变量,:vars是固定格式
username="guanyu"
(3)play剧本中组的变量
- name: create user with play vars
hosts: webservers
vars: #剧本中定义变量
username: "zhangfei" #定义变量
password: "123456" #定义变量,数字作为密码必须用引号,表示字符串
tasks:
- name: test play vars
user:
name: "{{ username }}"
password: "{{ password|password_hash('sha512')}}"
state: present
(4)".yml"变量文件定义变量(其它剧本也可使用)
[root@pubserver ansible]# vim fvars.yml
username: "lvbu"
password: "654321"
- name: create user with vars files
hosts: webservers
vars_files: fvars.yml #调用定义变量的文件
tasks:
- name: test vars file
user:
name: "{{ username }}"
password: "{{ password | password_hash('sha512')}}"
(5)facts事实变量
[root@pubserver ansible]# vim var5.yml
- name: copy file with facts
hosts: webservers
tasks:
- name: use facts
copy:
content: "hostname: {{ ansible_hostname }}"
dest: /tmp/facts.txt