管理事实(RH294)

news2024/12/22 18:27:48

事实简介

Ansible事实是指Ansible在受管主机上自动检测到的变量

事实中含有与主机相关的信息,可以像play中的常规变量,条件,循环等其他语句那样使用

受管主机收集的事实有以下部分

  1. 主机名称

  1. 内核版本

  1. 网络接口

  1. IP地址

  1. 操作系统版本

  1. 环境变量

  1. CPU数量

  1. 可用内存

  1. 可用磁盘空间

这些事实可以方便检索受管主机的状态并且根据状态确定要执行的操作

例如

根据含有受管主机当前内核版本的事实运行条件任务以此来重启服务器

根据通过事实报告的可用内存来自定义MySQL配置文件

收集事实

一般来说,每个play在执行第一个任务之前就会自动运行setup模块来收集事实

我们可以使用一些模块来查看和显示收集到的事实

debug模块

使用debug模块来显示ansible_facts变量值

  - name: Fact dump
    hosts: all
    tasks:
        - name: print all facts
          debug:
            var: ansible_facts

创建该任务之后使用ansible-playbook运行

Ansible事实作为变量注入

Ansible事实的几个例子

事实

变量

短主机名

ansible_facts['hostname']

完全限定的域名

ansible_facts['fqdn']

主要IPv4地址

ansible_facts['default_ipv4']['address']

所有网络接口的名称列表

ansible_facts['interfaces']

/dev/vda1磁盘分区的大小

ansible_facts['devices']['vda']['partitions']['vda1']['size']

DNS服务器列表

ansible_facts['dns']['nameservers']

当前运行的内核的版本

ansible_facts['kernel']

简单的使用一下

---
    - hosts: all
      tasks:
      - name: print various ansible facts
        debug:
            msg: >
                the default IPV4 address of {{ ansible.facts.fqdn }}
                is {{ ansible_facts.default_ipv4.address }}

在playbook中使用事实时,Ansible将事实的变量名动态替换为对应的值

关闭事实的自动收集

在playbook模块的开头 将gather_facts 关键字设置为no

---
- name: This play gathers no facts automatically
  hosts: large_farm
  gather_fact: no

创建自定义事实

管理员可以创建自定义事实并且存储到受管主机上,将这些自定义的事实整合到setup模块在受管主机上运行时收集的标准事实列表中。

静态文件

自定义事实在静态文件中定义,格式可以为INI文件或采用JSON

默认情况下setup模块从受管主机的/etc/ansible/facts.d目录下的文件和脚本中加载自定义事实

各个文件或者脚本名称必须是以 .fact结尾才能被识别使用

采用INI格式编写静态自定义事实文件

[package]
web_package = httpd
db-package = mariadb-server

[users]
user1 = joe
user2 = jane

采用JSON格式

{
    "package": {
        "web_package": "httpd"
        "db_package": "mariadb-server"
    }
    "users": {
        "user1": "joe"
        "user2": "jane"
    }
}

取得其中值的方法也很简单

假设有上述的文件

其ansible_facts.ansible_local['custom']['users']['user1']就是joe

动态文件

动态自定义事实脚本必须输出JSON格式的事实,且必须是可执行文件

管理事实实验

1.执行命令setup 收集所有的事实

ansible webserver -m setup

2.创建事实文件 定义要在servera上安装的软件包和要启动的服务

vimcustom.fact

[general]
package =httpd
service =httpd
state =started
enabled =true

3.创建playbook 生成远程目录并将上述的事实文件保存到该目录

vim setup_facts.yml

---
  - name: install remote facts
    hosts: webserver
    vars:
        remote_dir: /etc/ansible/facts.d
        facts_files: custom.fact
    tasks:
      - name: create the remote directory
        file:
            state: directory
            recurse: yes
            path: "{{ remote_dir }}"
        - name: install the new facts
        copy:
            src: "{{ facts_file }}"
            dest: "{{ remote_dir }}"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nacos安装配置教程

Nacos安装配置教程_其他_大数据知识库 Nacos注册中心 Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。 官方入门手册 Nacos 快速开始这个快速开始手册是帮忙您快速在您的电脑上,下载…

Python:使用Selenium和requests爬取文章

01需求描述 在微信公众号上面,其实有很多很不错的文章,但是微信官方给我提供的方式只有几种:点赞、收藏、在看。 或者有时候,有人通过转发到自己的朋友圈的方式,做文章的留存。 因此,爬取与存储微信公众…

PHPCMSv9.6.0前端任意文件上传漏洞分析

一、路径 漏洞分析:/index.php?mmember&cindex&aregister&siteid1 前台注册页面处 路径: /phpcms/modules/member/index.php注册处抓包: POST /phpcms/install_package/index.php?mmember&cindex&aregister&site…

JVM是如何解决跨代引用问题的?

本文已收录至Github,推荐阅读 👉 Java随想录 不知道自己的无知,乃是双倍的无知。——柏拉图 文章目录跨代引用问题记忆集卡表写屏障写屏障的伪共享问题跨代引用问题 跨代引用是指新生代中存在对老年代对象的引用,或者老年代中存在…

TensorFlow笔记之卷积神经网络

文章目录前言一、卷积神经网络CNN二、Tensorflow1.x1.加载数据集2.数据处理3.定义模型4.训练模型5.结果可视化二、Tensorflow2.x1.加载数据集2.数据处理3.定义模型4.训练模型5.结果可视化总结前言 记录在tf1.x与tf2.x中使用卷积神经网络完成CIFAR-10数据集识别多分类任务&…

【ThreeJs 初学习】实现简单的场景渲染

简单的场景渲染 从今天开始进军 3D相关的技术。第一是因为项目需要,第二是因为年中的KPI目标。刚开始分享的内容会相对基础,望各位谅解。 根据官网的文档整理出一份API文档, 地址是:ThreeJs 官网文档,其目的还是为了方便查阅 1. …

移动应用测试流程

以下是这段时间测试手机app的流程总结。 从需求阶段开始介入。参加软件功能设计,在软件编码之前,在仍有可能大的设计变更的时候,积极参加软件的计划阶段,这会帮助我们了解正被考虑的折衷和权衡从而了解客户需要的产品的雏形。在此…

Docker部署oracle -11g

Docker部署oracle -11g 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g启动容器 docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g执行 docker ps 命令确认容器启动成功 进行配置 &#xf…

蓝桥杯 分巧克力

题目描述 儿童节那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 NN 块巧克力,其中第 ii 块是 H_i \times WiHi​Wi 的方格组成的长方形。为了公平起见, 小明需要从这 NN 块巧克力中切出 K 块巧克力分给小朋友们。切…

读书笔记:神经网络的学习 train_neuralnet.py ← 斋藤康毅

提醒:本例涉及到三个 Python 文件,即 two_layer_net.py,train_neuralnet.py,mnist.py 等。 显然,要进行神经网络的学习,必须先构建神经网络。 因此,本文先构建了一个2层神经网络。代码详见 two_…

玩转代码|解决Chrome浏览器内置谷歌翻译功能无法使用问题!

最近这几天在使用Chrome浏览器的内置谷歌翻译功能时,总是一直停留在不翻译的状态,一开始我还以为是网络波动过几天就好了,过了好几天依旧是这样。去看了新闻才知道谷歌翻译已经退出了中国市场。根据TechCrunch的消息称,谷歌发言人…

我本芬芳

我本芬芳推荐语: 读完前几章,一边为惠才遇人不淑感到遗憾,又不觉想起自己的童年种种,书中简单的三言两语,却又不断地在触动我。我不由得想到上世纪六七十年代的女子们,也就是我的奶奶外婆们,将自…

我的周刊(第076期)

我的信息周刊,记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。🎯 项目python-wechaty[1]Wechaty 是一个开源聊天机器人框架…

力扣刷题|226.翻转二叉树、101. 对称二叉树

文章目录LeetCode 226.翻转二叉树题目链接🔗思路递归法迭代法LeetCode 101. 对称二叉树题目链接🔗思路递归法迭代法相关题目LeetCode 226.翻转二叉树 题目链接🔗 LeetCode 226.翻转二叉树 思路 这道题目使用前序遍历和后序遍历都可以&…

PVID和VID相关小知识

欢迎来到东用知识小课堂!1.PVID和VID的区别PVID和VID经常出现于二、三层交换机里,很多时候由于PVID和VID的设置不合理,造成VLAN划分变得混乱。一般你去超市买东西有个扫描设备扫描一下商品上的标签,然后价格就会出现。商品上的标签…

分布式锁与数据库悲观、乐观锁

分布式锁 什么是分布式锁 要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。 1.线程锁 主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为…

Redis主从复制与读写分离

1、为什么要主从复制、读写分离Redis在作为缓存的时候,随着项目访问量的增加,对Redis服务器的操作也越加频繁,虽然Redis读写速度都很快,但是一定程度上也会造成一定的延时,甚至出现宕机的可能性,这时候就出…

如何使用知行之桥搭建SFTPServer

知行之桥EDI系统同时支持SFTP Server和SFTP Client功能,既可以作为SFTP Server供多个Client连接,也可以作为Client连接多个Server。无论是作为SFTP Server还是SFTP Client,都只需要简单的配置即可实现。 SFTP Server的特性包括一下几点&…

【React全家桶】react路由

react路由5.1. 路由的简介5.2 路由的基本使用5.3 路由组件与一般组件5.4 NavLink及其封装5.5 Switch5.6 路由的模糊匹配与严格匹配5.7 Redirect重定向5.8 向路由组件传递参数5.9 编程式路由导航5.10withRouter的使用5.12 BrowserRouter与HashRouter的区别5.1. 路由的简介 单页W…

代码随想录--二叉树章节总结 Part III

代码随想录–二叉树章节总结Part III 1.Leetcode106 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 解题思路…