ansible变量

复制代码
一.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

相关推荐
未济5 天前
linux 配置环境变量
linux
傲世仙尊5 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫5 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
_艾伦 耶格尔.5 天前
进程间通信
linux
AI职业加油站5 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
Liuqy-055 天前
Linux IO编程——静态库、动态库
linux
此冬歌咏5 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
彧azz5 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
-梅5 天前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog5 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发