Ansible进阶变量
Ansible变量
1.Ansible变量最常见的是以下四种:
1.1.ansible变量可以用命令行(不推荐)
1.2.在剧本中vars定义一个变量
1.3.在配置文件中做变量(推荐多个剧本都可使用)
1.4.ansible内置一个变量facts
2.剧本引用变量是用两个花括号{{变量名}},一般用debug模块:
msg 打印的自定义消息
var 要调试的变量名。与msg选项互斥。
verbosity 一个控制调试运行时间的数字,如果设置为3,则仅在-vvv或更高版本时运行调试
例如:
#定义一个变量file变量内容/etc/hostname
- hosts:webvars:file: /etc/hostnametasks:- name: print vardebug:msg: 变量file内容是 {{file}}
3.在配置文件中做变量(推荐多个剧本都可使用)
例如:在ansible目录下建立一个vars-file.yml文件,其它剧本也可调用
vim vars-file.yml #名字随变
file: /etc/hostname #写入变量file
dir: /root #写入变量dir
#保存退出
编写使用变量yml
- hosts: web #主机清单分组可根据自己的实际情况来vars_files: ./vars-file.yml #调用变量文件,task:- name: print vardebug:msg: '{{dir}}变量file的内容是{{file}}'
常见问题:ansible什么时候加引号?
一般在变量开头的时候加引号。
4.根据主机清单自动识别变量
通过主机清单里面的分组进行变量共享
比如:我想让hosts主机清单组中的web组服务器 的port80 ,date组服务器 的port837口
在ansible目录文件夹下创建
mkdir -p group_vars
#先建立一个group_vars/ 文件夹
#group_vars/ 目录下得文件夹一定要和主机清单中的分组名必须一致
例如:
group_vars/lb/vars.yml #存放lb组的变量web/vars.yml #存放web组的变量data/vars.yml #存放data组的变量all/vars.yml #所有主机共用的变量#注意ansible调用变量一般是就近原则,很少两个一块写的,二选一
在web文件中的vars.yml写入:
port:80
在data文件中的vars.yml写入:
port:837
编写剧本:
- hosts: webtasks:- name: print vardebug:msg: '当前的服务的端口号是{{port}}'
- hosts: datatasks:- name: print vardebug:msg: '当前的服务的端口号是{{port}}'
5.定义变量小结:
命令行定义变量:不推荐,临时定义创建
剧本中定义变量:常用,vars好处:易于理解,缺点只限于当前剧本
变量文件:都存放在一个文件中,优点:vars_files方便管理与维护,缺点:无法针对某些主机进行定义
根据分组变量:在group_vars目录下存放,定义剧本中可根据组
6.ansible内置变量facts
facts收集主机信息:一般获取主机名,IP,cpu等
ansible -i hosts test1 -m setup #查看facts变量
#常用的facts变量
ansible_hostname #主机名
ansible_memtotal_mb #内存大小总计mb
ansible_processor_vcpus #cpu数量
ansible_default_ipv4 #默认网卡IP
ansible_date_time.data #时间
ansible_distribution #系统发行版本
ansible_processor_cores #CPU核心数
下级目录后面直接加点
例如:ansible_date_time.data #时间
ansible_date_time": {"date": "2022-08-29",},
例子:
#批量分发motd文件,文件内容根据不同机器变化
#01.创建motd模板文件
#02.分发文件到/etc/motd替换
vim motd.j2
#welcom to linux
#hostname: {{ansible_hostname}}
#eth0.ip: {{ansible_default_ipv4}}
#内存大小:{{ansible_memtotal_mb}}
#发行版本:{{ansible_distribution}}
#CPU数量: {{ansible_processor_vcpus}}
#CPU核心数:{{ansible_processor_cores}}
编写剧本
vi facts.yaml
- host: alltask:- name: fenfa /etc/motdtemplate:src: ./motd.j2dest: /etc/motdbackup: yes
注意如果用copy模块,机器是无法解析的,出现的是motd.j2编写的内容,所以用template模块,功能跟copy模块一样,但是能解析
7.关闭facts变量增加剧本执行速度
在剧本中增加:gather_facts: false
例子:
vi facts.yaml
- host: allgather_facts: falsetask:- name: fenfa /etc/motdtemplate:src: ./motd.j2dest: /etc/motdbackup: yes
Ansible进阶变量相关推荐
- Ansible进阶学习之Playbooks(剧本)的理解使用
前言 上一篇文章为大家对"Ansible"简单入了个门,介绍了自动化运维发展,Ansible的基本原理以及基本模块的使用.本篇文章,我们将趁热打铁,学习Ansible的核心--pl ...
- ansible的变量和机密
1. ansible的变量 在ansible中使用变量,能让我们的工作变得更加灵活,在ansible中,变量的使用方式有很多种我们下面一一介绍. 1.1 变量的命名 变量名应该由字母.数字.下 ...
- Ansible Playbook 变量与 register 详解
ansible 定义变量方式与[多层]变量引用,以及 register 详解 主机规划 主机名称 操作系统版本 内网IP 外网IP(模拟) 安装软件 ansi-manager CentOS7.5 17 ...
- Ansible 剧本变量 -01
Ansible 剧本变量 一.变量的介绍 1.概述 变量提供了便捷的方式来管理Ansible playbook的每一个项目中的动态值,比如nginx-1.6.3这个软件包的版本,在其它地方或许会反复使 ...
- Ansible 使用变量
使用变量 虽然自动化的存在是为了更容易使事情可重复,但并非所有系统都完全相同.有些可能需要与其他配置略有不同的配置.在某些情况下,观察到的一个系统的行为或状态可能会影响您配置其他系统的方式.例如,您可 ...
- ansible 特殊变量
ansible 特殊变量 https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html pos ...
- devops工具-Ansible进阶playbookroles
一.playbook介绍 playbook 是 Ansible 管理配置.部署应用的核心所在,一个playbook由有多"play组成",而一个play实际就是一个task,每个t ...
- Ansible 进阶 | 动态 Inventory
在之前的文章中,我们提到 Ansible 是通过 inventory 文件来管理资产的,但是一般情况下,一个配置管理系统往往会将资产存储在一个软件系统里,这种情况下该如何处理呢? 其实,Ansible ...
- Ansible 进阶 (1) inventory
前言 Ansible 配置 主要包括: 主机清单文件"inventory",extra module放置路径"library" ,远程主机的临时文件位置&quo ...
最新文章
- struts2中使用标签操作静态方法等
- 转:11个实用但你可能不知道的Python程序库
- 安装deepin linux
- MySQL事务的介绍+事务的特性+事务的开启
- sql不替换uid的更新数据语句
- TUN/TAP设备浅析(二) -- TUN/TAP的编程
- 【WePY小程序框架实战四】-使用asyncawait异步请求数据
- 赋值运算符、逻辑运算符、表达式
- [WTL] 使用CImageList
- 坚果pro2刷MIUI10
- unity 字符串 小技巧
- ArcGIS:如何进行栅格数据的拼接和裁剪、坡度坡向的提取、地形透视图的建立、等高线的提取、剖面图的创建?
- 陈艾盐:春燕百集访谈节目第二十一集
- Java应用CPU占用过高问题排查
- Linux添加SSH Key到Github账户
- Kali及Windows安装和使用OpenVPN
- 将两个实数矩阵合并为一个复数矩阵
- SDNUOJ 1168.FBI树
- 快速进化 | 新一代科学计算软件 MWORKS.Syslab 2022b 更新发布
- 【Python】networkx创建图(1)