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进阶变量相关推荐

  1. Ansible进阶学习之Playbooks(剧本)的理解使用

    前言 上一篇文章为大家对"Ansible"简单入了个门,介绍了自动化运维发展,Ansible的基本原理以及基本模块的使用.本篇文章,我们将趁热打铁,学习Ansible的核心--pl ...

  2. ansible的变量和机密

    1. ansible的变量 ​ 在ansible中使用变量,能让我们的工作变得更加灵活,在ansible中,变量的使用方式有很多种我们下面一一介绍. 1.1 变量的命名 ​ 变量名应该由字母.数字.下 ...

  3. Ansible Playbook 变量与 register 详解

    ansible 定义变量方式与[多层]变量引用,以及 register 详解 主机规划 主机名称 操作系统版本 内网IP 外网IP(模拟) 安装软件 ansi-manager CentOS7.5 17 ...

  4. Ansible 剧本变量 -01

    Ansible 剧本变量 一.变量的介绍 1.概述 变量提供了便捷的方式来管理Ansible playbook的每一个项目中的动态值,比如nginx-1.6.3这个软件包的版本,在其它地方或许会反复使 ...

  5. Ansible 使用变量

    使用变量 虽然自动化的存在是为了更容易使事情可重复,但并非所有系统都完全相同.有些可能需要与其他配置略有不同的配置.在某些情况下,观察到的一个系统的行为或状态可能会影响您配置其他系统的方式.例如,您可 ...

  6. ansible 特殊变量

    ansible 特殊变量 https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html pos ...

  7. devops工具-Ansible进阶playbookroles

    一.playbook介绍 playbook 是 Ansible 管理配置.部署应用的核心所在,一个playbook由有多"play组成",而一个play实际就是一个task,每个t ...

  8. Ansible 进阶 | 动态 Inventory

    在之前的文章中,我们提到 Ansible 是通过 inventory 文件来管理资产的,但是一般情况下,一个配置管理系统往往会将资产存储在一个软件系统里,这种情况下该如何处理呢? 其实,Ansible ...

  9. Ansible 进阶 (1) inventory

    前言 Ansible 配置 主要包括: 主机清单文件"inventory",extra module放置路径"library" ,远程主机的临时文件位置&quo ...

最新文章

  1. struts2中使用标签操作静态方法等
  2. 转:11个实用但你可能不知道的Python程序库
  3. 安装deepin linux
  4. MySQL事务的介绍+事务的特性+事务的开启
  5. sql不替换uid的更新数据语句
  6. TUN/TAP设备浅析(二) -- TUN/TAP的编程
  7. 【WePY小程序框架实战四】-使用asyncawait异步请求数据
  8. 赋值运算符、逻辑运算符、表达式
  9. [WTL] 使用CImageList
  10. 坚果pro2刷MIUI10
  11. unity 字符串 小技巧
  12. ArcGIS:如何进行栅格数据的拼接和裁剪、坡度坡向的提取、地形透视图的建立、等高线的提取、剖面图的创建?
  13. 陈艾盐:春燕百集访谈节目第二十一集
  14. Java应用CPU占用过高问题排查
  15. Linux添加SSH Key到Github账户
  16. Kali及Windows安装和使用OpenVPN
  17. 将两个实数矩阵合并为一个复数矩阵
  18. SDNUOJ 1168.FBI树
  19. 快速进化 | 新一代科学计算软件 MWORKS.Syslab 2022b 更新发布
  20. 【Python】networkx创建图(1)

热门文章

  1. Bentley 软件公司宣布创始人 Keith Bentley 即将退休,晋升 Julien Moutte 为首席技术官
  2. Chrome访问不了百度?
  3. C++环境下读取excel表格,亲测可用
  4. 百度搜索优化:去除广告和热搜
  5. 如何认识客户满意度调查
  6. 如何快速的翻译并阅读外文文献
  7. 为什么ftp服务器不显示文件夹,FTP服务器进入不显示文件夹
  8. [NOI2008]志愿者招募 [Zjoi2013]防守战线 一种网络流套路
  9. 2021年安全员-C证(陕西省)找解析及安全员-C证(陕西省)考试总结
  10. 50页超漂亮的PPT 3D图表