【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的一些内容
由于是在公司实际项目中学习,所以不是很完整 需要一点一点的学 1.React.useState 类似于vue中的ref 可以修改状态 但是是异步的 感觉不好用 const [wishData, setWishData] React.useState<any>(null); 只能使用setxxx来修改 2.useEffect(()>{},[]) 类…...
json绘制热力图
首先需要一段热力信息的json,我放在头部了。 然后就是需要de-geo库了。 实现代码如下: 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 搜索引擎。它会对你提出的问题进行分析并拆解为数个子问题,在互联网上搜索、总结得到各个子问题的答案,最后通过模型总结得到最终答案。书生浦…...
保护Kubernetes免受威胁:容器安全的有效实践
安全并非“放之四海而皆准”的解决方案,相反地,它更多的是一个范围,受其应用的特定上下文的影响。安全领域的专业人士很少宣称什么产品是完全安全的,但总有方法可以实现更强的安全性。在本文中,我们将介绍各种方法来支…...
【客观理性深入讨论国产中间件及数据库-科创基础软件】
随着国产化的进程,越来越多的国企央企开始要求软件产品匹配过程化的要求, 最近有一家银行保险的科技公司对行为验证码产品就要求匹配国产中间件, 于是开始了解国产中间件都有哪些厂家 一:国产中间件主要产品及厂商 1 东方通&…...
MFC中Excel的导入以及使用步骤
参考地址 在需要对EXCEL表进行操作的类中添加以下头文件:若出现大量错误将其放入stdafx.h中 #include "resource.h" // 主符号 #include "CWorkbook.h" //单个工作簿 #include "CRange.h" //区域类,对Excel大…...
AWS S3在客户端应用不能使用aws-sdk场景下的文件上传与下载
简介 通常情况下,应用程序上传文件到AWS S3,会使用aws-sdk,但是有些情况下,客户端应用会有安装限制,比如不能安装aws-sdk,此时我们就需要通过其他方式实现文件上传与下载。 这里我们提供一个服务端&#…...
深入解析 Transformers 框架(四):Qwen2.5/GPT 分词流程与 BPE 分词算法技术细节详解
前面我们已经通过三篇文章,详细介绍了 Qwen2.5 大语言模型在 Transformers 框架中的技术细节,包括包和对象加载、模型初始化和分词器技术细节: 深入解析 Transformers 框架(一):包和对象加载中的设计巧思与…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器:  线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。  每个线程都有一个程序计数…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
