自动化运维工具ansible(三)--- 管理变量和事实

本文详细介绍了Ansible中如何管理变量,包括在playbook中定义和使用变量,变量的分类如主机变量和组变量,以及如何通过外部文件和注册变量来管理。此外,还讲解了Ansible的魔法变量和如何管理事实,如查看主机信息、创建自定义事实以增强playbook的灵活性和复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 管理变量

将playbook中的某些值使用变量代替,从而简化playbook的编写

总结:

  • 1.变量能够让playbook复用
  • 2.可以给清单中的主机和主机组定义变量
  • 3.可以使用事实和外部文件定义变量,也可以在命令行中
  • 4.register关键字何以用于捕获命令输出
  • 5.ansiblevault
  • 6.ansible事实是从受管主机自动检测到的变量

1.1 ansible变量简介

  • 变量可能包含下面这些值: 要创建的用户、要安装的软件包、 要重启的服务、 要删除的文件、 要从互联网检索的文档 。

  • 命名变量: 变量名称必须以字母开头,并且只能含有字母、数字和下划线
    示例: web_server 、 remote_file 、 file1

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

1.2 在playbook中定义变量

1.2.1 在playbook开头的vars块中定义变量

较常见
在这里插入图片描述

1.2.2 在外部文件定义playbook变量

在这里插入图片描述

1.3 在playbook中使用变量

---
- name: testvar
  hosts: all
  vars:
     user: leo

  tasks:
     - name: Create user {
   
   {
   
    user }}
       user:
          name: "{
   
   { user }}"

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:
1.将变量名称放在花括号内即可
2.当变量用作开始一个值的第一元素时,必须使用引号

1.4 变量的分类

直接应用于主机的清单变量分为两大类:
1.主机变量:应用于特定主机
2.组变量:应用于一个主机组或一组主机组中的所有主机

主机变量优先于组变量,但是playbook中定义的变量比这两者更高。(范围越小优先级越高

1.4.1 定义主机变量和组变量

  • Way1:比较旧,不建议采用

定义主机的变量:
在这里插入图片描述

定义主机组的变量:
在这里插入图片描述

定义嵌套组user变量:
在这里插入图片描述

这种做法使得清单文件难以处理,在同一文件中混合提供主机和变量信息,语法也过时,不建议使用。

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

定义主机和主机组变量的首选做法是:在与清单文件或目录相同的工作目录中

  1. 创建group_vars:包含组变量 和 host_vars:包含主机变量 两个目录
  2. 创建groups_vars/servers的yaml文件,设置变量值未key:value
  3. 在host_vars目录中创建名称与主机匹配的文件来存放主机变量

所以一个项目目录中包含: ansible.cfg、group_vars、host_vars、hosts、playbook.yml

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

  • Way3:使用数组作为变量
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

管理员可以使用register语句捕获命令输出

--- 
- name: Install a package
  hosts: server2

  tasks:
     - name: Install
       yum:
          name: httpd
          state: installed
       register: installed_result

     - debug:
          var: installed_result

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值