学习playbook 2 管理变量和事实

本文详细介绍了如何在Ansible Playbook中管理变量和事实,包括主机变量、组变量的优先级,如何使用目录填充变量,利用已注册变量捕获命令输出,以及如何加密敏感数据和创建自定义事实。重点讲解了如何定义和应用这些变量在安装和管理服务(如apache和防火墙)的实践中。
摘要由CSDN通过智能技术生成

3.管理变量和事实

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

1.主机变量:应用于特定主机

2.组变量:应用于一个主机组或一组主机组中的所有主机

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

dbservers 主机组的 user 组变量:

定义 server1.example.com 的 ansible_user 主机变量:

[webservers]

server1.example.com ansible_user=westos

定义 dbservers 主机组的 user 组变量:

[dbserver]

dbserver1.example.com

dbserver2.example.com

[dbservers:vars]

user=westos

定义嵌套组 user 变量:

[servers1]

node1.example.com

node2.example.com
[servers2]

node3.example.com

node4.example.com

[servers:children]

servers1

servers2

[servers:vars]

user=student

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

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

创建 group_vars/servers 的 YAML 文件,设置变量为值:

user: westos

同样需要在 host_vars 目录中创建名称与主机匹配的文件来存放主机变量 所以一个项目目录中包含: ansible.cfg、group_vars、host_vars、inventory、playbook.yml

使用已注册变量捕获命令输出

vim palybook.yml

# ansible-playbook --syntax-check playbook.yml 
# ansible-playbook playbook.yml 

 

管理变量的练习

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

web_pkg     要安装的 web 服务器软件包

firewall_pkg  要安装的防火墙软件包

web_service  要管理的 web 服务

firewall_service   要管理的防火墙服务

python_pkg #uri   模块所需软件包

rule   要打开的服务

# mkdir date-variables
# vim ansiable.cfg
# vim inventory
# vim playbook.yml

# ansible-playbook --syntax-check playbook.yml   检测语法
# ansible-playbook playbook.yml  运行

# firefox servera
在servera  主机中
# systemctl status httpd
# systemctl status firewalld.service 

管理机密

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

介绍 ansible vault

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

加密解密工具:ansible-vault 命令

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

创建加密文件

# ansible-vault encrypt playbook.yml    加密
# 

# ansible-vault view playbook.yml  查看加密文件
# ansible-vault edit playbook.yml  编辑 原理:将文件解密为一个临时文件,并编辑;保存时,复制内容并删除临时文件 'edit 命令始终重写文件,因此只有在更改文件时使用

# ansible-vault decrypt playbook.yml  解密
ansible-vault decrypt westos.yml --output=redhat.yml  解密同时改名


 

# ansible-vault rekey palybook.yml  更改密码
# ansible-vault rekey --new-vault-password-file=file palybook.yml  

# ansible-playbook -C --vault-id @prompt playbook.yml  运行加密的playook
# ansible-playbook -C --vault-password-file=password playbook.yml   使用交互式提供密码

管理事实

描述 ansible 事实   

查询ip和域名

# vim ip.yml
# ansible-playbook ip.yml 

创建自定义事实

'自定义事实的使用方式和默认事实相同'

# ansible localhost -m setup

json格式 

常用的有四个:

hostvars #包含受管主机的变量,可以用于获取另一台受管主机的变量的值

group_names #列出当前受管主机所属的所有组

groups #列出清单中的所有组和主机

inventory_hostname #包含清单中配置的当前受管主机的主机名称

# vim westos.fact
# vim fact.yml

# ansible-playbook --syntax-check fact.yml  

查看

编写主playbook

vim  playbook.yml

\

# ansible servera.lab.example.com -m command -a 'systemctl status httpd'  查看测试机的apache服务

 

# ansible-playbook --syntax-check playbook.yml
# ansible-playbook  playbook.yml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值