当前位置: 首页 > news >正文

【Linux】Ansible集中化运维工具(详解)安装、常用模块、playbook脚本

文章目录

  • 一、Ansible安装及远程控制
    • 1、关闭防火墙和SELinux
    • 2、安装ansible
    • 3、配置SSH无密码登录
      • 1、在管理机上生成一对密钥
      • 2、将公钥下发到远程主机
      • 3、保管密钥
    • 4、主机目录
  • 二、常用模块
    • 1、setup模块
    • 2、copy模块
    • 3、file模块
    • 4、shell模块
    • 5、script模块
    • 6、ping模块
    • 7、group模块
    • 8、yum模块
    • 9、service模块
  • 三、playbook脚本
    • 1、指定节点和用户
    • 2、任务列表
    • 3、handlers
    • 4、基本语法
      • 1、变量
      • 2、条件语句
      • 3、循环
      • 4、include
  • 四、谢谢观看!

一、Ansible安装及远程控制

前提:要有两台主机(我这里是两台虚拟机)
如下:
在这里插入图片描述

ansible只需在管理机上安装即可。
被管理机要设置静态IP 设置方法可参考此篇博客
被管理机也被称为节点。
下文中,将被管理机centos_7_1简称为被控主机1

1、关闭防火墙和SELinux

systemctl status firewalld   #查看防火墙状态

在这里插入图片描述
防火墙状态参数为active即为开启。

sudo systemctl stop firewalld  #临时关闭防火墙

参数改为inactive即关闭状态。
在这里插入图片描述
关闭SELinux
查看:

getenforce

在这里插入图片描述
关闭:

sudo setenforce 0

在这里插入图片描述

2、安装ansible

1、安装Ansible软件包的EPEL源

yum install epel-release

在这里插入图片描述
2、安装ansible

yum -y install ansible

在这里插入图片描述
3、查看ansible版本

ansible --version

在这里插入图片描述

3、配置SSH无密码登录

需要使用到两个命令:ssh-keygen(生成一对密钥)、ssh-copy-id(把本地主机的公钥复制到目标主机上)。

1、在管理机上生成一对密钥

ssh-keygen -t rsa

遇到询问,一路回车
在这里插入图片描述
执行完毕后会在/root/.ssh下生成一对密钥,其中id_rsa为私钥,id_rsa.pub为公钥。
在这里插入图片描述

2、将公钥下发到远程主机

ssh-copy-id root@192.168.58.132 #该地址为被控主机1的ip地址

在这里插入图片描述

3、保管密钥

ssh-add .ssh/id_rsa
ssh 192.168.58.132 #被控机ip

在这里插入图片描述
此时就处于被控主机1的家目录下。
回到管理机,只需输入ssh命令

ssh 管理机ip

在这里插入图片描述

4、主机目录

主机目录又称主机清单,保存了ansible所管理的远程主机信息及一些连接参数,也可用来对远程主机进行分类。

主机目录的配置文件默认是/etc/ansible/hosts
查看该文件:

vi /etc/ansible/hosts

可看到以下内容:
在这里插入图片描述
将该文件清空,输入一下内容:

[webservers]
192.168.58.132  #被控主机1的ip地址

测试被控主机1是否能被ping通

ansible webservers -m ping

在这里插入图片描述

二、常用模块

查看ansible中已加载的模块

ansible-doc -l

通过ansible命令可以调用这些模块

ansible [节点] -m [模块] -a [参数]

1、setup模块

用于获取节点的详细信息。
例,使用setup模块查看webservers组的节点信息。

ansible webservers -m setup

2、copy模块

可实现从管理机向节点复制静态文件,并设置合理的文件权限。
常用参数:

dest      #文件复制的目的地
src       #复制的源文件
backup    #是否备份原始文件
validate  #复制前是否检验需要复制目的地的路径

例:
将/root/demo/demol.txt复制到所以节点的/root目录下(若没有该文件可换成其它文件):

cd /root/demo
ansible all -m copy -a 'dest=/root src=/root/demo/demol.txt

3、file模块

可用来定义文件或目录属性、权限,创建、删除文件或目录。
常用参数:

mode   #文件的读/写权限
path   #文件路径
src    #文件链接路径
stat   #默认值:file  #选项:file  #创建文件  link  #创建链接sbsent#删除文件

4、shell模块

可以执行远程主机的shell脚本文件,也支持管道。
例:
检查mysql进程是否存在:

ansible all -m shell -a 'ps -ef|grep mysql'

在这里插入图片描述
由图可知,节点192.168.58.132下有mysql进程。

5、script模块

用于将管理机上的shell脚本发送到节点上执行。
例,
写一个脚本:

vi hello.sh//脚本内容为:
#!/bin/bash
echo "hello ansible"

不会写shell脚本可参考这两篇博客:
Shell概念、命令、操作(重定向、管道、变量)
Shell脚本编写基本语法
将该脚本发送到webservers组的节点上执行:

ansible webservers -m script -a '/root/hello.sh'

在这里插入图片描述

6、ping模块

检查连通性。

ansible webservers -m ping

7、group模块

可以在节点上创建组。
常用参数

gid   #用户组的GID
name  #用户组的名字
state    #默认值;present   #选项:present #新增#     absent  #删除

例:
在webservers组的节点上创建一个组名为test、GID为2017的组:

ansible webservers -m group -a 'gid=2017 name=test'

在这里插入图片描述

8、yum模块

从指定服务器自动下载安装RPM包,并且可自动处理依赖性关系。
常用参数:

name       #包名
state   选项:present   #安装latest    #更新absent    #卸载

例:
在被控主机1上安装命令tree:

ansible 192.168.58.132 -m yum -a "name=tree state=present"

在这里插入图片描述

9、service模块

管理节点上的服务,可开启、关闭、重启服务等。

参数		选项		含义
enabled     yes/no      是否开机自启动
name         --         服务名称state      started      启动stopped      关闭restarted    重启reloaded     重新下载

例:
开启被控节点192.168.58.132端的firewalld服务:

ansible 192.168.58.132 -m service -a "name=firewalld state=started"

可在对应节点使用systemctl status firewalld命令来查看firewalld状态。

三、playbook脚本

在学习ansible模块的时候,都是使用命令在节点上执行任务,命令使用比较复杂,且每执行一次均要重复输入,为避免重复输入命令,ansible提供了playbook脚本。一个能被ansible执行的YAML文件叫做playbook。

1、指定节点和用户

每个playbook都需要指定针对那些节点进行运维,并且以哪个用户来执行任务。
指定节点:hosts
指定用户:users

-hosts: webservers      #指定webservers组中的所有节点users: root            #指定用户为root

注:hosts的值可以是主机或组,也可以是关键字all,全部节点。

2、任务列表

即要执行的任务的队列,关键字为tasks。任务列表中的每个任务都通过调用ansible模块完成。按定义的先后顺序执行。
例:

tasks:- name: running nginx               #启动nginx服务service: name=nginx state=running  #调用service模块

name标签是对任务的描述,也可以不加,但一般是会使用name标签。

3、handlers

对ansible模块进行调用,用于处理一些动态事件。
handlers中的模块调用与任务列表中的任务不同,任务默认按定义顺序执行,而handlers只有被触发时才会执行。

4、基本语法

1、变量

在playbook文件中,是通过字段vars来定义变量的。
例:

- hosts: all       #指定节点为所有节点vars:http_port: 80   #定义http_port变量,值为80

2、条件语句

由字段when声明。
例:
当操作系统为Red Hat时执行重启命令:

task:- name: reboot Red Hat hostcommand: /usr/sbin/rebootwhen: ansible_os_family=="Red Hat"

执行顺序:先判断when条件。如果成立,返回True,则执行上一条语句command:;
如果不成立,返回False,不会触发上一条语句

3、循环

常见的循环由字段with_items声明。
例:
在指定节点上同时安装多个软件;

task:- name: install LAMPyum: name={{item}} state=presentwith_items:- nginx- mysql-server- php

代码功能:安装nginx、mysql-server、php 3个软件。with_items会自动循环执行上面的语句:name={{item}} state=present,会用软件名替换item,循环次数为元素个数。

4、include

当多个playbook需要重复使用任务列表时,可以将任务内容抽离出来写入独立文件中,要调用时只需用include将文件包含进来。
例:有单独的任务列表文件tasks/nignx.yml,文件内容为:

---
- name: install nginxyum: name=nginx state=present   #安装nginx

此后,如果有playbook要执行该操作,只需写入以下代码:

tasks:- include: tasks/nginx.yml     #将该文件包含进来

用例演示:
通过编写一个playbook实现Apache的安装与启动。
1、创建目录:

mkdir /root/ansible

在该目录下添加apache.yml文件,此文件就是一个playbook

cd /root/ansible
touch apache.yml

编写playbook内容为:

---
- hosts: 192.168.58.132users: rootvars:http_port: 80max_clients: 200tasks:- name: ensure apache is latestyum: pkg=httpd state=latest- name: write the apache config filetemplate: src=/srv/httpd.j2 dest=/etc/httpd.confnotify:- restart apache- name: ensure apache is runningservice: name=httpd state=startedhandlers:- name: restart apacheservice: name=httpd state=restarted

使用以下命令调用:

ansible-playbook /root/ansible/apache.yml

四、谢谢观看!

参考书籍:《Linux系统管理与自动化运维》黑马程序员/编著

相关文章:

【Linux】Ansible集中化运维工具(详解)安装、常用模块、playbook脚本

文章目录 一、Ansible安装及远程控制1、关闭防火墙和SELinux2、安装ansible3、配置SSH无密码登录1、在管理机上生成一对密钥2、将公钥下发到远程主机3、保管密钥 4、主机目录 二、常用模块1、setup模块2、copy模块3、file模块4、shell模块5、script模块6、ping模块7、group模块…...

惠州石湾DELL T130服务器黄灯不开机案例

惠州石湾一个朋友反馈一台DELL PowerEdge T130 塔式服务器故障为 通电后无法开机,前面同时亮3个故障灯。闪电灯,电压灯,高温灯 1:这种情况建议大家更换一个同型号的电源进行故障排除。 2:朋友把该服务器硬件最小化测…...

⭐SmartControl: Enhancing ControlNet for Handling Rough Visual Conditions

目录 0 Abstract 1 Motivation 2 Related Work 2.1 Text-to-Image Diffusion Model 2.2 Controllable Text-to-Image Generation 2.3 ControlNet 2.4 Control Scale Exploration 3 Method 3.1 Framework 3.2 Control Scale Predictor 3.3 Unaligned Data Constructi…...

wordpress站外调用指定ID分类下的推荐内容

在WordPress中,如果你想从站外调用指定ID分类下的推荐内容,你可以使用WordPress REST API来实现。以下是一个基本的步骤指南: 1. 启用REST API 确保你的WordPress站点已经启用了REST API。大多数现代WordPress版本默认启用此功能。 2. 获取…...

Ente: 我们的 Monorepo 经验

原文:manav - 2024.10.29 九个月前,我们切换到了 monorepo。在此,我将介绍我们迄今为止的切换经验。 这并不是一份规范性的建议,而是一个经验的分享,目的是希望能够帮助其他团队做出明智的决策。 与大多数岔路不同&…...

Kafka java 配置

前言: 大家好,大家在springboot项目中,经常采用 KafkaListener 做为消费者。这个是spring为我们封装的。 但是某些情况 注解的方式并不能满足需求。这个时候就需要手动版本了。 介绍: 我们已经集成spring-Kafka 就不需要再…...

网络安全现状:复杂的威胁形势导致压力水平飙升

《2024 年网络安全状况》报告深入分析了当前网络安全挑战和趋势。 该报告重点介绍了几个关键的关注领域,包括人员短缺、技能差距、不断演变的威胁和预算限制,同时还指出了取得进展的领域,例如对威胁响应能力的信心增强以及对网络风险评估的认…...

【机器学习】强化学习(1)——强化学习原理浅析(区分强化学习、监督学习和启发式算法)

文章目录 强化学习介绍强化学习和监督学习比较监督学习强化学习 强化学习的数学和过程表达动作空间序列决策策略(policy)价值函数(value function)模型(model) 强化学习和启发式算法比较强化学习步骤代码走…...

【SoC设计指南 基于Arm Cortex-M】学习笔记1——AMBA

AMBA简介 先进微控制器总线架构(Advanced Microcontroller Bus Architecture,AMBA)是用在arm处理器上的片上总线协议规范集。 AMBA总线协议规范集包含AHB、APB、AXI等。 AHB:先进高性能总线(Advanced High-performance Bus) APB&…...

flutter鸿蒙模拟器 Win环境调试报错问题记录(暂未解决)

前情提要: 1、flutter项目已经正确生成了ohos项目 2、flutter和鸿蒙的环境变量配置正确 3、ohos项目执行flutter build hap成功 4、没有真机,使用win环境创建的x86模拟器 问题状态 使用模拟器运行ohos,控制台提示“安装HAP 报 code:9568347错…...

详解Rust标准库:HashSet

## 查看本地官方文档安装rust后运行 rustup doc查看The Standard Library即可获取标准库内容 std::collections::hash_set::HashSet定义 HashSet是一种集合数据结构,它只存储唯一的元素。它主要用于检查元素是否存在于集合中,或者对元素进行去重操作&…...

记录学习react的一些内容

由于是在公司实际项目中学习&#xff0c;所以不是很完整 需要一点一点的学 1.React.useState 类似于vue中的ref 可以修改状态 但是是异步的 感觉不好用 const [wishData, setWishData] React.useState<any>(null); 只能使用setxxx来修改 2.useEffect(()>{},[]) 类…...

json绘制热力图

首先需要一段热力信息的json&#xff0c;我放在头部了。 然后就是需要de-geo库了。 实现代码如下&#xff1a; import * as d3geo from d3-geoimport trafficJSON from ../assets/json/traffic.jsonlet geoFun;// 地理投影函数// let info {max: Number.MIN_SAFE_INTEGER,mi…...

linux 下查看程序启动的目录

以azkaban为例 第一步、ps -ef | grep azkaban 查询出进程号 第二步、cd /proc/ 第三步 、cd 进程号 第四部 ll 查看详情 查看jar 位置 查看jar 启动命令...

书生浦语第四期基础岛L1G2000-玩转书生「多模态对话」与「AI搜索」产品

文章目录 一、MindSearch二、书生浦语三、书生万象四、进阶任务 一、MindSearch MindSearch 是一个开源的 AI 搜索引擎。它会对你提出的问题进行分析并拆解为数个子问题&#xff0c;在互联网上搜索、总结得到各个子问题的答案&#xff0c;最后通过模型总结得到最终答案。书生浦…...

保护Kubernetes免受威胁:容器安全的有效实践

安全并非“放之四海而皆准”的解决方案&#xff0c;相反地&#xff0c;它更多的是一个范围&#xff0c;受其应用的特定上下文的影响。安全领域的专业人士很少宣称什么产品是完全安全的&#xff0c;但总有方法可以实现更强的安全性。在本文中&#xff0c;我们将介绍各种方法来支…...

【客观理性深入讨论国产中间件及数据库-科创基础软件】

随着国产化的进程&#xff0c;越来越多的国企央企开始要求软件产品匹配过程化的要求&#xff0c; 最近有一家银行保险的科技公司对行为验证码产品就要求匹配国产中间件&#xff0c; 于是开始了解国产中间件都有哪些厂家 一&#xff1a;国产中间件主要产品及厂商 1 东方通&…...

MFC中Excel的导入以及使用步骤

参考地址 在需要对EXCEL表进行操作的类中添加以下头文件&#xff1a;若出现大量错误将其放入stdafx.h中 #include "resource.h" // 主符号 #include "CWorkbook.h" //单个工作簿 #include "CRange.h" //区域类&#xff0c;对Excel大…...

AWS S3在客户端应用不能使用aws-sdk场景下的文件上传与下载

简介 通常情况下&#xff0c;应用程序上传文件到AWS S3&#xff0c;会使用aws-sdk&#xff0c;但是有些情况下&#xff0c;客户端应用会有安装限制&#xff0c;比如不能安装aws-sdk&#xff0c;此时我们就需要通过其他方式实现文件上传与下载。 这里我们提供一个服务端&#…...

深入解析 Transformers 框架(四):Qwen2.5/GPT 分词流程与 BPE 分词算法技术细节详解

前面我们已经通过三篇文章&#xff0c;详细介绍了 Qwen2.5 大语言模型在 Transformers 框架中的技术细节&#xff0c;包括包和对象加载、模型初始化和分词器技术细节&#xff1a; 深入解析 Transformers 框架&#xff08;一&#xff09;&#xff1a;包和对象加载中的设计巧思与…...

【Python-AI篇】K近邻算法(KNN)

0. 前置----机器学习流程 获取数据集数据基本处理特征工程机器学习模型评估在线服务 1. KNN算法概念 如果一个样本在特征空间中的K个最相似&#xff08;即特征空间中最邻近&#xff09;的样本中大多数属于某一个类别&#xff0c;则该样本也属于这一个类别 1.1 KNN算法流程总…...

aws xray如何实现应用log和trace的关联关系

参考资料 https://community.aws/tutorials/solving-problems-you-cant-see-using-aws-x-ray-and-cloudwatch-for-user-level-observability-in-your-serverless-microservices-applicationshttps://stackoverflow.com/questions/76000811/search-cloudwatch-logs-for-aws-xra…...

centos服务器登录失败次数设定

实现的效果 一台centos服务&#xff0c;如果被别人暴力或者登录次数超过多少次&#xff0c;就拒绝或者在规定时间内拒绝ip登录。这里使用的是fail2ban 安装fail2ban sudo yum install epel-release -y # 先安装 EPEL 源 sudo yum install fail2ban -y配置fail2ban # 复制默…...

实时高效,全面测评快递100API的物流查询功能

一、引言 你是否曾经在网购后焦急地等待包裹&#xff0c;频繁地手动刷新订单页面以获取最新的物流信息&#xff1f;或者作为一名开发者&#xff0c;正在为如何在自己的应用程序中高效地实现物流查询功能而发愁&#xff1f;其实&#xff0c;有一个非常好用的解决方案——快递10…...

第14张 GROUP BY 分组

一、分组功能介绍 使用group by关键字通过某个字段进行分组&#xff0c;对分完组的数据分别 “SELECT 聚合函数”查询结果。 1.1 语法 SELECT column, group_function(column) FROM table [WHERE condition] [GROUP BY group_by_expression] [ORDER BY column]; 明确&#…...

笔记整理—linux驱动开发部分(10)input子系统与相关框架

关于输入类设备的系统有touch、按键、鼠标等&#xff0c;在系统中&#xff0c;命令行也是输入类系统。但是GUI的引入&#xff0c;不同输入类设备数量不断提升&#xff0c;带来麻烦&#xff0c;所以出现了struct input_event。 struct input_event {struct timeval time;//内核…...

[算法初阶]埃氏筛法与欧拉筛

素数的定义&#xff1a; 首先我们明白&#xff1a;素数的定义是只能整除1和本身&#xff08;1不是素数&#xff09;。 我们判断一个数n是不是素数时&#xff0c;可以采用试除法&#xff0c;即从i2开始&#xff0c;一直让n去%i&#xff0c;直到i*i<n c语言: #include<…...

【THM】linux取证 DisGruntled

目录 0x00 房间介绍 0x01 连接并简单排查 0x02 让我们看看做没做坏事 0x03 炸弹已埋下。但何时何地&#xff1f; 0x04 收尾 0x05 结论 0x00 房间介绍 嘿&#xff0c;孩子&#xff01;太好了&#xff0c;你来了&#xff01; 不知道您是否看过这则新闻&#xff0c;我…...

SpringBoot整合Freemarker(四)

escape, noescape 语法 <#escape identifier as expression>...<#noescape>...</#noescape>... </#escape> 用例 主要使用在相似的字符串变量输出&#xff0c;比如某一个模块的所有字符串输出都必须是html安全的&#xff0c;这个时候就可以使用&am…...

centos docker 安装 rabbitmq

安装docker 1.更新现有的软件包 首先&#xff0c;确保您的系统是最新的&#xff0c;可以通过运行以下命令来实现&#xff1a; sudo yum update -y 2.移除旧版本的Docker 如果您之前安装过Docker&#xff0c;可能需要先卸载旧版本。使用以下命令来卸载旧版本的Docker&#…...

鞍山网站建设鞍山/网站推广优化排名教程

进程 是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程&#xff0c;是操作系统进行资源分配和调度的一个独立单位&#xff0c;是应用程序运行的载体。进程是一种抽象的概念&#xff0c;从来没有统一的标准定义。进程一般由程序&#xff0c;数据集合和进程控制…...

做网站的不足 心得/优化设计电子课本

导航在这里&#xff1a;白泽四足机器人导航贴 1.给esp8266模块烧录透传程序 这个程序烧录进esp8266模块之后&#xff0c;它就可以接收手机指令了。 //修改自&#xff1a;https://blog.csdn.net/wangke0809/article/details/70146378?ops_request_misc%257B%2522request%255F…...

做网站哪家公司便宜/站长工具免费

$("#selectid").get(0).options.add(new Option(json数据)) 转载于:https://www.cnblogs.com/DylanZ/p/11416057.html...

亚马逊做网站发礼物换评价/奶茶网络营销策划方案

前言 今天研究了一下公司pc端封装的axios&#xff0c;主要配合element以及js-cookie&#xff0c;自己跟着搞了一遍&#xff0c;在这里记录一下。 代码 import axios from axios; import { Loading } from element-ui; import Cookies from js-cokie;//基于axios基本配置创建实例…...

宁波东钱湖建设局网站/界首网站优化公司

一、问题有个打印log的函数&#xff0c;想知道该函数执行的时候&#xff0c;之前执行了哪些函数?二、分析在应用程序打印函数栈需要通过函数backtrace()&#xff0c;该函数对应头文件如下&#xff1a;#include 1、三个与打印调用栈相关的函数打印函数栈需要使用到以下3个函数i…...

五华网站开发/长春视频剪辑培训机构

C const对象&#xff08;常对象&#xff09; 在 C 中&#xff0c;const 也可以用来修饰对象&#xff0c;称为常对象。一旦将对象定义为常对象之后&#xff0c;就只能调用类的 const 成员&#xff08;包括 const 成员变量和 const 成员函数&#xff09;了。 定义常对象的语法和…...