ansible中变量与事实

文章目录

  • 管理变量
    • ansible 变量简介
    • 命名变量
    • 定义变量
    • 在play开头定义变量
    • 文件方式定义变量
    • 实例
    • 测试
  • 主机变量与组变量
    • 定义主机变量和组变量
    • 使用目录填充主机和组变量
  • 管理机密
    • 对文件加密
      • 解密
      • 更改密码
      • 查看
      • 编辑
    • 使用文件加密
    • 管理事实
    • 自定义事实
    • 魔法变量

管理变量

ansible 变量简介

变量可能包含下面这些值:

  • 要创建的用户、
  • 要安装的软件包、
  • 要重启的服务、
  • 要删除的文件、
  • 要从互联网检索的文档

命名变量

变量名称必须以字母开头,并且只能含有字母、数字和下划线
错误 正确
web server web_server
westos.file remote_file
1st file file1

定义变量

三个范围级别:
全局范围: 从命令行或 ansible 配置设置的变量
play 范围: 在 play 和相关结构中设置的变量
主机范围: 由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量
如果多个级别上定义了相同名称的变量,优先采用级别最高的变量,窄范围优先于广范围

在play开头定义变量

ansible中变量与事实_第1张图片

文件方式定义变量

ansible中变量与事实_第2张图片
ansible中变量与事实_第3张图片

实例

ansible中变量与事实_第4张图片

测试

ansible中变量与事实_第5张图片

主机变量与组变量

清单变量分为主机变量和组变量
主机变量:应用于特定主机
组变量: 应用于一个主机组或一组主机组中的所有主机

定义主机变量和组变量

方法1:
在inventory中定义(不推荐因为会把清单弄得很乱)
ansible中变量与事实_第6张图片

使用目录填充主机和组变量

定义主机和主机组变量的首选做法时与清单文件或目录相同的工作目录中,创建 group_vars 和 host_vars 两个目录,这两个目录分别包含用于定义组变量和主机变量的文件
ansible中变量与事实_第7张图片
ansible中变量与事实_第8张图片

管理机密

在编写 playbook时,可能会涉及到一些感的数据,比如密码,当这些感数据以明文的方式存储在 playbooks中时,可能是不能波接受的,那么我们该怎么办呢? ansible官方已经考成到了这种情况,当我们的 Playbook中含有不能明文展示的文本时,我们可以使用’ ansible-vault"命令,对敏感数据进行加密,我们可以对整个文件加密,也可以对某个字符串加密(也就是变量加密)

对文件加密

ansible-vault encrypt test.yml

ansible中变量与事实_第9张图片
此时需要ansible-playbook --ask-vault-pass playbook/test.yml来输入密码执行
ansible中变量与事实_第10张图片

解密

ansible中变量与事实_第11张图片

更改密码

ansible中变量与事实_第12张图片

查看

ansible中变量与事实_第13张图片

编辑

ansible中变量与事实_第14张图片

使用文件加密

在这里插入图片描述
ansible中变量与事实_第15张图片
这样,我们就不用在加密和解密时手动的输入密码了

管理事实

事实包括:主机名称、内核版本、网络借口、IP 地址等
查看主机信息:
ansible中变量与事实_第16张图片
ansible中变量与事实_第17张图片
显示其中一部分
ansible中变量与事实_第18张图片
ansible中变量与事实_第19张图片
关闭事实收集,提高运行速度
ansible中变量与事实_第20张图片
ansible中变量与事实_第21张图片

自定义事实

如果自定义事实文件保存在/etc/ansible/facts.d目录中,ansible可以找到该事实
文件的扩展名必须为.fact ,采用INI或JSON格式的纯文本文件
在INI事实文件中,首先是定义事实的顶级分类:[packages],后跟预定义事实的键值对
ansible中变量与事实_第22张图片
json格式
ansible中变量与事实_第23张图片
建议使用json格式
测试:
ansible中变量与事实_第24张图片
使用变量形式打印自定义事实
ansible中变量与事实_第25张图片
ansible中变量与事实_第26张图片

魔法变量

常用的有四个:

hostvars	#包含受管主机的变量,可以用于获取另一台受管主机的变量的值
group_names	#列出 当前受管主机 所属的所有组
groups	#列出清单中的 所有组和主机
inventory_hostname	#包含 清单中配置的 当前受管主机的主机名称

ansible中变量与事实_第27张图片

你可能感兴趣的:(ansible中变量与事实)