ansible自动化运维工具(3)

1. 管理变量

1.1 ansible 变量简介

1.1.1 变量内容

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

1.1.2 命名变量

变量名称必须以字母开头,并且只能含有字母、数字和下划线

错误正确
web serverweb_server
westos.fileremote_file
1st filefile1
1.1.3 定义变量

三个范围级别

全局范围从命令行或 ansible 配置设置的变量
play 范围在 play 和相关结构中设置的变量
主机范围由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量

如果多个级别上定义了相同名称的变量,优先采用级别最高的变量,窄范围优先于广范围’

1.2 playbook 中的变量

1.2.1 在 playbook 中定义变量

1.常见方式:
在 playbook 开头的 vars 块中:
在这里插入图片描述

2.在外部文件定义 playbook 变量
在这里插入图片描述

1.2.2 在 playbook 中使用变量

将变量名称放在花括号内即可
在这里插入图片描述

  • 注意:
    当变量用作开始一个值的第一元素时,必须使用引号

2. 主机变量和组变量

2.1 变量分类

直接应用于主机的清单变量分为两大类:

主机变量应用于特定主机
组变量应用于一个主机组或一组主机组中的所有主机

主机变量优先于组变量,但是 playbook 中定义的变量比这两者更高

2.2 定义主机变量和组变量

方法一(比较旧,不建议采用)
在这里插入图片描述
在这里插入图片描述

方法二:使用目录填充主机和组变量
定义主机和主机组变量的首选做法时与清单文件或目录相同的工作目录中,创建 group_vars 和 host_vars 两个目录,这两个目录分别包含用于定义组变量和主机变量的文件

  • 创建 group_vars/servers 的 YAML 文件,设置变量为值:
    user: student
  • 同样需要在 host_vars 目录中创建名称与主机匹配的文件来存放主机变量
  • 所以一个项目目录中包含:
    ansible.cfg、group_vars、host_vars、inventory、playbook.yml

1. 从命令行覆盖变量
清单变量可以被 playbook 中设置的变量覆盖
两者又可通过命令行参数覆盖

  • 使用数组作为变量
    在这里插入图片描述
    2. 使用已注册变量捕获命令输出
  • 管理员可以使用 register 语句捕获命令输出

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

3. 管理变量的练习

创建 playbook,来安装 apache 并开启,使可被访问,playbook 查询 web 服务器并确认它 已经设置好并在运行

web_pkg要安装的 web 服务器软件包
firewall_pkg要安装的防火墙软件包
web_service要管理的 web 服务
firewall_service要管理的防火墙服务
python_pkguri 模块所需软件包
rule要打开的服务

在这里插入图片描述
vim playbook.yml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检测
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 管理机密

4.1 目标

使用 ansible vault 加密敏感变量,并运行 vault 加密变量文件的 playbook

4.2 介绍 ansible vault

ansible 可能需要访问密码或者 api 密钥等敏感数据,以便配置主机

加密解密工具ansible-vault 命令
ansible vault 不实施自有的加密函数,而使用外部 python 工具集

4.3 创建加密文件

方法:
ansible-vault create filename

在这里插入图片描述

4.4 查看加密文件

方法:ansible-vault view filename
在这里插入图片描述

4.5 编辑现有的加密文件

原理:将文件解密为一个临时文件,并编辑;保存时,复制内容并删除临时文件
edit 命令始终重写文件,因此只有在更改文件时使用,查看尽量使用 view
在这里插入图片描述

4.6 加密现有的文件

方法:ansible-vault encrypt filename

filename 参数可以是多个
可以使用–output=filename 将加密文件保存为新的名称,使用此参数时输入文件只能是一个
在这里插入图片描述

4.7 解密现有的文件

在这里插入图片描述

4.8 更改加密文件密码

方法:ansible-vault rekey filename
可以一次更新多个文件密码
在这里插入图片描述

注:
使用 vault 密码文件时,最好使用–net-vault-password-file

在这里插入图片描述

5. playbook 和 ansible vault

在这里插入图片描述

  • 交互式提供密码
    在这里插入图片描述
  • 注意:2.4版本之前的ansible,使用–ask-vault-pass提供交互式密码’
    在这里插入图片描述

6. 管理事实

事实包括:主机名称、内核版本、网络借口、IP 地址等

描述 ansible 事实

6.1 查看主机信息

在这里插入图片描述
在这里插入图片描述

6.2 再将事实替换为动态的值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3 ansible 事实作为变量注入

使用 setup 模块显示所有事实信息

在这里插入图片描述

6.4 创建自定义事实

可以使用 INI 格式或者 JSON 格式

  • INI 格式
    在这里插入图片描述

  • JSON 格式
    在这里插入图片描述

自定义格式不能使用 ymal 格式,使用最为接近的 json 最好

自定义事实的使用方式和默认事实相同
在这里插入图片描述
在这里插入图片描述

6.5 使用魔法变量

常用的有四个:

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

用途:使用 debug 模块报告特定主机的 hostvars 的值
在这里插入图片描述

7. 管理事实

  • 检测ansible_local变量当前是不存在的(未设定变量之前)
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 受管主机上检查文件变量是否存在

在这里插入图片描述
在这里插入图片描述

  • 编写主playbook

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 受管主机上测试(在运行playbook时受管主机上不能有http服务)

在这里插入图片描述
在这里插入图片描述

8. 管理变量和事实

  • 练习:
    使用基本身份认证的 httpd

    在这里插入图片描述
    1.写 playbook
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.创建加密文件

在这里插入图片描述
在这里插入图片描述

3.创建 files 目录
在这里插入图片描述
在这里插入图片描述

4.交互式输入密码,进行语法检测
在这里插入图片描述

5.执行
在这里插入图片描述
测试:
在这里插入图片描述
在这里插入图片描述

  • 总结

1.变量能够让 playbook 复用

2.可以给清单中的主机和主机组定义变量

3.可以使用事实和外部文件定义变量,也可以在命令行中

4.register 关键字何以用于捕获命令输出

**5.ansible vault 6.ansible 事实是从受管主机自动检测到的变量

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值