1.安装并配置ansible

第一步先安装ansible所需软件

#安装ansible所需软件 [devops@workstation ~]$ sudo dnf install ansible ansible-navigator rhel-system-roles -y

第二步登录镜像仓库,在镜像仓库下载镜像容器来运行ansible

由于ansible-navigator 知ansible是在容器运行的,在配置之前先登录上镜像仓库

[devops@workstation ansible]$ podman login utility.lab.example.com #镜像仓库

[devops@workstation ansible]$ vim ansible-navigator.yml        #设置ansible需要的镜像

---

ansible-navigator: ansible: config: path: ./ansible.cfg color: osc4: false execution-environment: image: utility.lab.example.com/ee-supported-rhel8:latest #这是一个镜像里的容器

#查看ansible是否可以运行正常 [devops@workstation ansible]$ ansible-navigator images #检查并从镜像库下载所需的镜像

第三步配置ansible配置文件

优先读取当前目录>家目录>系统

/home/devops/ansible/ > .ansible > /etc/ansible/ansible.cfg

###

[devops@workstation ansible]$ ansible-config init --disabled | less #查看ansible配置模板

[devops]workstation ansible]$ vim ansible.cfg

[defaults] #ansible基本信息

remote_user=devops #发起ssh的用户

inventory=/home/devops/ansible/inventory #指定工作清单

host_key_checking=False #不询问是否保存私钥,直接选择yes

#ask_pass=False #进行一次密码输入后后续就不用加-k参数

由于实验环境有问题,实验用户没有私钥

scp root@172.25.250.250:/root/.ssh/id_rsa ~/.ssh/id_rsa #把主机用户私钥拷贝给虚拟机

collections_path=/home/devops/ansible/mycollections #roles_path=roles:/home/devops/ansible/roles

[privilege_escalation] #ansible提权信息 

become=True        

become_ask_pass=False

become_method=sudo

become_user=root

编辑好配置ansible配置文件后还要生成清单才能运行

#生成工作清单

[devops@workstation ansible]$ vim inventory

[dev]

servera

[test]

serverb

[balancers]

serverb

[prod]        #p意思为prod组有两个成员serverc与serverd

serverc

serverd

[webservers:children]         #指定子组

prod

[devops@workstation ansible]$ ansible all --list-hosts #列出所有主机

#查看清单信息

[devops@workstation ansible]$ ansible-navigator inventory -m stdout --graph

。。。 省略 。。。

@all: |--@balancers:

| |--serverb

|--@dev:

| |--servera

|--@test:

| |--serverb

|--@ungrouped:

|--@webservers:

[devops@workstation ansible]$ ansible all -m shell -a "whoami" #自动化所有节点主机在shell运行命令,-k询问主机密码

2.创建yum仓库

在此之前建议编辑vim工作模式,便于去编写yml文件

ansible中有两种输出形式

ansible中ad-hoc形式

$ansible all -m shell -a "whoami"

ansible中playbook形式,也就是yml结尾的文件,等同于ansible中的脚本

$ansible-navigator run xxx.yml -m stdout #运行playbook并把显示到输出上

yml文件使用列表与字典表示,前面有-的表示是列表列表里包含字典,然后是子列表

一个playbook要包含描述,执行清单,动作

例子

---

- name:test play

host : all

tasks:

- name: rm file #动作名称

  ansible.builtin.shell: #模块

  rm -rf /mnt/file #模块参数


ansible-doc -l | grep shell

ansible-doc shell | less #查询用法

实验

#使用ansible-doc来搜索模板
$ ansible-doc -l | grep repo
$ ansible-doc ansible.builtin.yum_repository  | less

测试

运行完成后可以使用ad-hoc形式来测试

[devops@workstation ansible]$ ansible all -m shell -a "dnf clean all"

[devops@workstation ansible]$ ansible all -m shell -a "dnf makecache"

[devops@workstation ansible]$ ansible all -m shell -a "dnf repolist"

3.安装collections

前提要在ansible配置文件指定collection路径

先从资源连接获取资源

wget http://materials.example.com/tools/community-general-4.3.0.tar.gz

然后使用galaxy命令安装colllection

[devops@workstation ansible]$ ansible-galaxy collection install ansible-posix1.4.0.tar.gz --force

最后查看collections

[devops@workstation ansible]$ ansible-galaxy collection list

4.安装软件包

实验

测试

5.使用系统自带角色

什么是角色?

剧本是把所有东西放在一个文件里,角色是把各自的元素拆分开放在各自的目录里

$ansible-galaxy init apache #创建角色

$ansible-galaxy list #列出角色

以下是创建角色后的子目录,可将剧本所以东西都放在角色的子目录中,最后在剧本playbook直接使用roles引用即可

上图为如何使用创建的角色,下面将介绍如何使用系统角色

如何使用系统角色?实验要求使用selinux角色

$ rpm -qa | grep role #由于selinux是系统自带的角色,所以查看系统自带的角色模板 rhel-system-roles-1.23.0-2.21.el9.noarch

$ rpm -qd rhel-system-roles-1.23.0-2.21.el9.noarch | grep selinux-playbook #查看角色模板的说明信息查找例子模板

$ less /usr/share/doc/rhel-system-roles/selinux/exampleselinux-playbook.yml #查看模板来使用角色

~]$ ansible-galaxy list | grep selinux #在家目录下列出系统的角色,按照要求放入playbook中的roles引入

  • rhel-system-roles.selinux, (unknown version) #前面加redhat.并要把杠换成下 划线

  • linux-system-roles.selinux, (unknown version)

最后按照模板来编写playbook

运行后测试

$ ansible-navigator run -m stdout selinux.yml

]$ ansible servera -m shell -a 'cat /etc/sysconfig/selinux'

6.使用 Ansible Galaxy 安装角色

第一步先在ansible的roles目录创建yml文件来编写要下载的角色资源地址并且要在ansible配置文件中指定roles的路径目录

第二步在指定yaml文件并下载到roles目录中

$ ansible-galaxy role install -r roles/requirements.yaml -p ./roles/

-r 参数,用户能够通过一个 YAML 格式的文件(通常命名为 requirements.yaml),一次性批量安装多个角色。

-p 参数,指定角色的安装目录,要把角色安装在设置的配置文件指定的目录才能使用ansible-galaxy命令识别,注意ansible-galaxy要在ansible配置文件的目录使用才能识别的到,在家目录使用就是识别系统的ansible配置文件识别的就是系统的角色

运行安装后测试

7.创建和使用创建的角色

什么是事实变量?

ansible all -m setup | less #查看所有的事实变量,事实变量是主机中所有资源信息使用键值对的形式来表示的变量,引用事实变量子目录要用.隔开

ansible-playbook test.yml #运行playbook

什么是j2模板?

创建xxx.j2结尾的文件,能识别变量,里面使用{{}}引用键事实变量,然后再paybook中使用template参数,src表示j2文件的路径,dest表示生成的事实变量,输出的是事实变量的值

ansible-galaxy init apache #在roles目录下创建角色

ansible-galaxy --list-all #在ansible配置文件目录下列出创建的角色

[devops@workstation ansible]$ cd roles/apache/ [devops@workstation apache]$ ls defaults files handlers meta README.md tasks templates tests vars [devops@workstation apache]$ vim templates/index.html.j2 #编写j2文件

[devops@workstation ansible]$ cd roles/apache/tasks/ [devops@workstation tasks]$ vim main.yml #编写tasks执行的任务

实验要求:使用apache发布网页

tasks的任务:

要安装httpd,安装火墙

httpd服务要开机启动并立即运行,火墙要放行httpd

还要使用模板创建index.html文件

最后创建playbook文件并运行,使用curl来测试

8.从Ansible Galaxy 使用角色

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu server系统 安装宝塔

更新系统软件包sudo apt update && sudo apt upgrade -y提示,如果想博主这样是存绿色liunx系统,要先安装python3脚本才可以python3 --version有pyhton版本号就是安装了,没有的话就要安装安装 Pythonsudo apt update sudo apt install…

用C++实现五子棋游戏

#include <iostream> #include <vector> #include <string> #include <iomanip> // 用于控制输出格式 #include <limits> // 用于numeric_limitsusing namespace std;// 游戏常量定义 const int BOARD_SIZE 15; // 定义棋盘大小为15x15// 棋…

【LeetCode 热题 100】73. 矩阵置零——(解法一)空间复杂度 O(M + N)

Problem: 73. 矩阵置零 题目&#xff1a;给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 文章目录整体思路完整代码时空复杂度时间复杂度&#xff1a;O(M * N)空间复杂度&#xff1a;O(M N)整体思路…

【深度学习新浪潮】国内零样本抗体设计的科研进展如何?

什么是AI零样本抗体设计? AI零样本抗体设计(Zero-shot AI Antibody Design)是指不依赖任何已知抗体序列或结构数据,仅根据靶点抗原信息,通过人工智能直接生成具有高亲和力、高特异性的全新抗体序列的技术。其核心在于突破传统抗体研发的“数据依赖瓶颈”,实现真正的“从…

【论文阅读】A Diffusion model for POI recommendation

论文出处&#xff1a;ACM Transactions on Information Systems (TOIS) SCI一区 CCF-A期刊 论文地址&#xff1a;[2304.07041] A Diffusion model for POI recommendation 论文代码&#xff1a;Yifang-Qin/Diff-POI: The official PyTorch implementation of Diff-POI. 目…

Rust实现FasterR-CNN目标检测全流程

使用 Rust 和 FasterR-CNN 进行目标检测 FasterR-CNN 是目标检测领域广泛使用的深度学习模型。Rust 生态中可以通过 tch-rs(Torch 绑定)调用预训练的 PyTorch 模型实现。以下为完整实现步骤: 环境准备 安装 Rust 和必要的依赖: cargo add tch cargo add anyhow # 错误…

Github 2025-07-03Go开源项目日报Top10

根据Github Trendings的统计,今日(2025-07-03统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10JavaScript项目2Go编程语言:构建简单、可靠和高效的软件 创建周期:3474 天开发语言:Go协议类型:BSD 3-Clause “New” or “Revise…

XML Schema 安装使用教程

一、XML Schema 简介 XML Schema&#xff08;XSD&#xff0c;全称 XML Schema Definition&#xff09;是用于定义 XML 文档结构、数据类型和数据约束的标准方式。它比 DTD 更加强大&#xff0c;支持数据类型、默认值、命名空间等&#xff0c;是企业级 XML 应用推荐的验证方式。…

【字节跳动】数据挖掘面试题0008:计算西瓜视频内容好评率

文章大纲题目描述题目描述 西瓜视频近期开展了”2020百大人气创作者”优质内容扶持项目&#xff0c;鼓励用户产出优质的视频内容。 现需要统计2020年11月01日至2020年11月30日期间创作的视频中&#xff0c; “科技”大类下“数码测评"子类的视频好评率&#xff08;好评率好…

Linux 进程控制:全面深入剖析进程创建、终止、替换与等待

文章目录引言一、进程创建&#xff1a;fork()系统调用的奥秘1.1 fork()的基本原理1.2 代码示例与解读1.3 写时复制&#xff08;COW&#xff09;优化二、进程终止&#xff1a;exit()与_exit()的抉择2.1 exit()和_exit()的区别2.2 代码示例与分析三、进程替换&#xff1a;exec()函…

PJSIP 中的 TCP 传输配置指南

PJSIP 支持通过 TCP 传输 SIP 消息&#xff0c;相比 UDP 提供了更可靠的传输机制。以下是关于在 PJSIP 中使用 TCP 的详细指南。1. 创建 TCP 传输基本 TCP 传输配置cpjsua_transport_config tcp_cfg; pjsua_transport_config_default(&tcp_cfg); tcp_cfg.port 5060; // SI…

小菜狗的云计算之旅,今天学习MySQL数据库基础知识及操作

目录 一、概述 数据库概念 数据库的类型 关系型数据库模型 关系数据库相关概念 二、安装 1、mariadb安装 2、mysql安装 3、启动并开机自启 4、本地连接&#xff08;本地登录&#xff09; 三、mysql数据库配置与命令 yum安装后生成的目录 mysql服务器的启动脚本 数…

为什么是直接在**原型(prototype)上**添加函数

这是一个非常经典、核心的 JavaScript 面向对象编程问题&#xff1a;> 为什么是直接在**原型&#xff08;prototype&#xff09;上**添加函数&#xff0c;而不是在类/构造函数内部直接添加&#xff1f;你提到的代码中&#xff1a;javascript function TopSearchComponent() …

深入理解 classnames:React 动态类名管理的最佳实践

在现代前端开发中&#xff0c;我们经常需要根据组件的状态、属性或用户交互来动态切换 CSS 类名。虽然 JavaScript 提供了多种方式来处理字符串拼接&#xff0c;但随着应用复杂性的增加&#xff0c;传统的类名管理方式很快就会变得混乱不堪。这时&#xff0c;classnames 库就像…

C++系列(七):深度探索C++内存 --- 分区、堆栈、new/delete与高效编程实践

引言 程序运行的本质是对数据的处理&#xff0c;而内存则是程序执行的核心舞台。理解内存的物理与逻辑分区&#xff0c;是掌握程序底层行为、编写高效可靠代码的关键基石。内存并非混沌一片&#xff0c;而是被严格划分为代码区、全局区、栈区和堆区。每个区域拥有独特的生命周…

微信小程序71~80

1.总结小程序生命周期 小程序冷启动&#xff0c;钩子函数执行的顺序保留当前页面&#xff0c;进入下一个页面&#xff0c;钩子函数执行的顺序销毁当前页面&#xff0c;进入下一个页面&#xff0c;钩子函数执行的顺序小程序热启动&#xff0c;钩子函数执行的顺序 2.使用Componen…

[Pytest][Part 3]检测python package状态

目录 实现需求1&#xff1a; 检查python package状态——pkg_resource hook实现自动检测包状态 conftest.py hook钩子函数 Part1: https://blog.csdn.net/x1987200567/article/details/144915315?spm1001.2014.3001.5501 从这里开始逐个实现Part1中的需求 实现需求1&a…

自定义时间范围选择组件使用教程(基于 Vue 3 + Element Plus)

&#x1f553; 自定义时间范围选择组件使用教程&#xff08;基于 Vue 3 Element Plus&#xff09;✅ 一个灵活实用的时间范围选择器&#xff0c;支持开始时间、结束时间、快捷时间选项、本地双向绑定、插槽扩展等功能。–&#x1f4d8; 一、功能介绍 该组件基于 Element Plus …

YOLOv8 模型转换 ONNX 后 C# 调用异常:一个参数引发的跨平台适配难题

一、问题背景&#xff1a;从 Python 训练到 C# 部署的跨平台需求 作为一名 C# 开发者&#xff0c;我在完成 YOLOv8 模型训练&#xff08;使用 Ultralytics 官方框架&#xff0c;训练数据为自定义目标检测数据集&#xff0c;输入尺寸 640x640&#xff0c;训练轮次 100 轮&#…

Apache Cloudberry 亮相 2025 IvorySQL 生态大会暨 PostgreSQL 高峰论坛

6 月 27 日至 28 日&#xff0c;IvorySQL 2025 生态大会暨 PostgreSQL 高峰论坛在泉城济南顺利召开。本届大会由 IvorySQL 开源数据库社区主办、瀚高基础软件股份有限公司承办&#xff0c;吸引了来自国内外的数据库技术专家、开发者与开源爱好者齐聚一堂&#xff0c;聚焦数据库…