自动化运维工具---Ansible

news2024/9/22 15:31:50

一 Puppet

Puppet是历史悠久的运维工具之一。它是一种基础架构即代码(laC)工具,使用户可以定义其基础

架构所需的状态,并使系统自动化以实现相同状态。

Puppet可监视用户的所有系统,并防止任何偏离已定义状态的情况。从简单的工作流程自动化到

基础架构配置和合规性,Puppet都能做到。

Puppet通过让客户端检査主站的更新清单来更新节点的配置,然后从主站服务器拉下新的配置。

由于这个特点,Puppet比这里提到的许多其他工具更倾向于系统管理员。

服务模式:C/S

语言:ruby    

协议:http

1.1 ansible简介

1 Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。

它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。

2 Ansible能批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多个操

作,使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操作。

3 Ansible是基于模块工作的,它只是提供了一种运行框架,它本身没有完成任务的能力,真正执行

操作的是Ansible的模块, 比如copy模块用于拷贝文件到远程主机上,service模块用于管理服务的

启动、停止、重启等。

4 Ansible其中一个比较鲜明的特性是Agentless,即无Agent的存在,它就像普通命令一样,并非C/S

软件,也只需在某个作为控制节点的主机上安装一次Ansible即可,通常它基于ssh连接来控制远程

主机,远程主机上不需要安装Ansible或其它额外的服务。

5 使用者在使用时,在服务器终端输入命令或者playbooks,会通过预定好的规则将playbook拆解

为play,再组织成ansible可以识别的任务,调用模块和插件,根据主机清单通过SSH将临时文件发

给远程的客户端执行并返回结果,执行结束后自动删除

6 Ansible的另一个比较鲜明的特性是它的绝大多数模块都具备幂等性(idempotence)。所谓幂等性,

指的是多次操作或多次执行对系统资源的影响是一致的。比如执行 systemctl stop xxx 命令来停止

服务,当发现要停止的目标服务已经处于停止状态, 它什么也不会做,所以多次停止的结果仍然

是停止,不会改变结果,它是幂等的,而 systemctl restart xxx 是非幂等的。 

Ansible的很多模块在执行时都会先判断目标节点是否要执行任务,所以,可以放心大胆地让

Ansible去执行任务,重复执行某个任务绝大多数时候不会产生任何副作用。

1.2 Ansible的四大组件

  • Inventory 主机清单(主机组)
  • Modules 模块
  • Plugins 插件
  • Playbooks 剧本(相当于脚本)

1.3 ansible 具有如下特点:

1 部署简单,只需在主控端部署Ansible环境, 被控端无需做任何操作

2 默认使用SSH协议设备进行管理;

3 主从集中化管理

4 配置简单、功能强大、扩张性强;

5 支持API及自定义模块,可以通过Pyhton轻松扩展

6 通过playbooks 来定制强大的配置、状态管理

7 对云计算平台、大数据都有很好的支持

二 ansible 环境安装部署

管理端192.168.11.6ansible
被管理端192.168.11.12
被管理端192.168.11.13

1 关闭防火墙 防护

 

2 管理端安装 ansible  

先安装 epel 源

3 ansible 目录结构

4 配置主机清单

cd /etc/ansible  

5 配置密钥对验证

ssh-keygen -t rsa #一路回车,

6 使用免密登录

sshpass -p '123' ssh-copy-id root@192.168.11.12

sshpass -p '123' ssh-copy-id root@192.168.11.13  

调整之后 就可以免密登录了

7 做映射加快访问速度 

 vim /etc/hosts

三 ansible 命令行模块

命令格式:ansible <组名> -m <模块> -a <参数列表>

ansible-doc -l

列出所有已安装的模块,按q退出

1 command 模块

//在远程主机执行命令,不支持管道,重定向等shell的特性。

ansible-doc -s command		#-s 列出指定模块的描述信息和操作动作

ansible 192.168.11.12 -m command -a 'date'
指定 ip 执行 date

ansible mcb02 -a 'date'
指定组执行 date

ansible all -m command -a 'date'				#all 代表所有 hosts 主机

ansible all -a 'ls /'							#如省略 -m 模块,则默认运行 command 模块

 

常用的参数: 
chdir:在远程主机上运行命令前提前进入目录

creates:判断指定文件是否存在,如果存在,不执行后面的操作

removes:判断指定文件是否存在,如果存在,执行后面的操作

ansible all -m command -a "chdir=/home  ls ./"

2 shell 模块 

//在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令(支持
管道符号等功能)

ansible-doc -s shell

ansible mcbweb01 -m shell -a "echo 123| passwd --stdin mcb05"

ansible mcbweb01 -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print $2}") | cut -d " " -f2'

以空格为分隔符,取第二列的内容,打印第二行

3 cron 模块

//在远程主机定义任务计划。其中有两种状态(state):present表示添加(可以省略),absent表示移除。
ansible-doc -s cron                #按 q 退出

常用的参数:

minute/hour/day/month/weekday:分/时/日/月/周
job:任务计划要执行的命令
name:任务计划的名称

ansible webservers -m cron -a 'minute="*/1" job="/bin/echo helloworld" name="test crontab"'

ansible webservers -a 'crontab -l'

ansible webservers -m cron -a 'name="test crontab" state=absent'			
#移除计划任务,假如该计划任务没有取名字,name=None即可

 4 user 模块

用户管理的模块
ansible-doc -s user

//常用的参数:
name:用户名,必选参数
state=present|absent:创建账号或者删除账号,present表示创建,absent表示删除
system=yes|no:是否为系统账号
uid:用户uid
group:用户基本组
shell:默认使用的shell
move_home=yse|no:如果设置的家目录已经存在,是否将已经存在的家目录进行移动
password:用户的密码,建议使用加密后的字符串
comment:用户的注释信息
remove=yes|no:当state=absent时,是否删除用户的家目录
ansible dbservers -m user -a 'name="test01"'				#创建用户test01
ansible dbservers -m command -a 'tail /etc/passwd'
ansible dbservers -m user -a 'name="test01" state=absent'	#删除用户test01

 

5 group 模块

//用户组管理的模块 ansible-doc -s group  
ansible dbservers -m group -a 'name=mysql gid=306 system=yes'	#创建mysql组
ansible dbservers -a 'tail /etc/group'
ansible dbservers -m user -a 'name=test01 uid=306 system=yes group=mysql'	#将test01用户添加到mysql组中
ansible dbservers -a 'tail /etc/passwd'
ansible dbservers -a 'id test01'  

 

6 copy 模块 

//用于复制指定主机文件到远程主机的
ansible-doc -s copy

//常用的参数:
dest:指出复制文件的目标及位置,使用绝对路径,如果是源目录,指目标也要是目录,如果目标文件已经存在会覆盖原有的内容
src:指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录
mode:指出复制时,目标文件的权限 
owner:指出复制时,目标文件的属主
group:指出复制时,目标文件的属组
content:指出复制到目标主机上的内容,不能与src一起使用
ansible dbservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak owner=root mode=640'
ansible dbservers -a 'ls -l /opt'
ansible dbservers -a 'cat /opt/fstab.bak'

ansible dbservers -m copy -a 'content="helloworld" dest=/opt/hello.txt'  #将helloworld写入/opt/hello.txt文件中
ansible dbservers -a 'cat /opt/hello.txt' 

 

 7 file 模块

//设置文件属性
ansible-doc -s file

ansible dbservers -m file -a 'owner=test01 group=mysql mode=644 path=/opt/fstab.bak'
	#修改文件的属主属组权限等

ansible dbservers -m file -a 'path=/opt/fstab.link src=/opt/fstab.bak state=link'    
#设置/opt/fstab.link为/opt/fstab.bak的链接文件

ansible dbservers -m file -a "path=/opt/abc.txt state=touch"			
#创建一个文件

ansible dbservers -m file -a "path=/opt/abc.txt state=absent"			
#删除一个文件

 

 8 hostname 模块

//用于管理远程主机上的主机名
ansible dbservers -m hostname -a "name=mysql01"

9 ping 模块 

//检测远程主机的连通性
ansible all -m ping

 10 yum 模块

//在远程主机上安装与卸载软件包
ansible-doc -s yum

ansible webservers -m yum -a 'name=httpd'					
#安装服务

ansible webservers -m yum -a 'name=httpd state=absent'		
#卸载服务

11 service/systemd 模块 

//用于管理远程主机上的管理服务的运行状态
ansible-doc -s service

//常用的参数:
name:被管理的服务名称
state=started|stopped|restarted:动作包含启动关闭或者重启
enabled=yes|no:表示是否设置该服务开机自启
runlevel:如果设定了enabled开机自启去,则要定义在哪些运行目标下自启动

ansible webservers -a 'systemctl status httpd'			#查看web服务器httpd运行状态
ansible webservers -m service -a 'enabled=true name=httpd state=started'			#启动httpd服务

12 script 模块 


//实现远程批量运行本地的 shell 脚本
ansible-doc -s script

vim test.sh
#!/bin/bash
echo "hello ansible from script" > /opt/script.txt

chmod +x test.sh
ansible webservers -m script -a 'test.sh'
ansible webservers -a 'cat /opt/script.txt'

 

检测一下: 

 13 setup 模块

//facts 组件是用来收集被管理节点信息的,使用 setup 模块可以获取这些信息
ansible-doc -s setup

ansible webservers -m setup				#获取mysql组主机的facts信息
ansible dbservers -m setup -a 'filter=*ipv4'    #使用filter可以筛选指定的facts信息

 

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

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

相关文章

数据仓库基础理论(学习笔记)

数据仓库基础理论 1.数据仓库概念 2.数据仓库为何而来 3.数据仓库主要特征 4.OLTP、OLAP系统 5.数据仓库与数据库的区别 6.数据仓库与数据集市的区别 7.数据仓库分层架构 7.1为什么要分层&#xff1f; 8.ETL、ELT

NFS共享存储服务配置实践

一、NFS 1.NFS定义 NFS&#xff08;Network File System&#xff09;网络文件服务&#xff1a;基于TCP/IP传输的网络文件系统协议&#xff0c;NFS服务的实现依赖于RPC&#xff08;Remote Process Call&#xff09;远端过程调用&#xff1a;通过使用NFS协议&#xff0c;客户机…

ICode国际青少年编程竞赛- Python-1级训练场-变量入门

ICode国际青少年编程竞赛- Python-1级训练场-变量入门 1、 a 4 Dev.turnRight() Dev.step(a)2、 a 4 Spaceship.step(a) Dev.step(a)3、 a 4 Dev.step(a) Dev.turnLeft() Dev.step(a)4、 a 5 Dev.step(a) Spaceship.step(a) Dev.step(a)5、 a 3 Dev.step(a) Dev.tur…

C语言写的LLM训练

特斯拉前 AI 总监、OpenAI 创始团队成员 Andrej Karpathy 用 C 代码完成了 GPT-2 大模型训练过程&#xff1a;karpathy/llm.c: LLM training in simple, raw C/CUDA (github.com) 下载源码 git clone --recursive https://github.com/karpathy/llm.c.git下载模型 从HF-Mirro…

Burp和Proxifier抓包微信小程序

1、Burp设置代理 2、浏览器下载证书 3、安装证书 4、Proxifier设置代理 5、Proxifier设置Proxification Rule 6、Burp查看抓包数据 打开一个小程序&#xff0c;可以看到WeChatAppEx的流量先经过Proxifier&#xff0c;再经过127.0.0.1:8080到Burp

基于现有语言大模型,定制“人人AI气象”公众号天气助手

最近&#xff0c;月之暗面的Kimi大模型非常受欢迎&#xff0c;尝试用了moonshot(128K)基座模型&#xff0c;通过调用各种公开渠道的API&#xff0c;简易实现了一个天气助手&#xff0c;可以回答天气相关的基础概念、原理、应用等方面的问题&#xff0c;同时也可调用多个插件获取…

音频可视化:原生音频API为前端带来的全新可能!

音频API是一组提供给网页开发者的接口&#xff0c;允许他们直接在浏览器中处理音频内容。这些API使得在不依赖任何外部插件的情况下操作和控制音频成为可能。 Web Audio API 可以进行音频的播放、处理、合成以及分析等操作。借助于这些工具&#xff0c;开发者可以实现自定义的音…

MoonBit 开源之夏重磅来袭!12000元奖金等你来拿!

宣讲视频 MoonBit 开源之夏宣讲视频 关于我们 开源之夏 「开源之夏 (OSPP)」是中科院软件所「开源软件供应链点亮计划」指导下的系列暑期活动&#xff0c;旨在鼓励在校学生积极参与开源软件的开发维护&#xff0c;培养和发掘更多优秀的开发者&#xff0c;促进优秀开源软件社区…

JavaScript中Math函数与舍入

立方根 console.log(Math.sqrt(25)); //数学方式25平方根 console.log(25 ** (1 / 2)); //25的0.5次方 console.log(8 ** (1 / 3)); //8的1/3次方计算最大最小值 console.log(Math.max(1, 5, 88, 22, 132)); //返回最大值 console.log(Math.max(1, 5, 88, 22, 132)); //…

【C语言】高质量选择题

目录 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 题目五&#xff1a; 题目六&#xff1a; 题目七&#xff1a; 题目八&#xff1a; 题目九&#xff1a; 题目十&#xff1a; 题目十一&#xff1a; 题目十二&#xff1a; 题目十…

快捷回复软件让你告别回复慢

可能自己是个客服的原因&#xff0c;一连几天大数据给我推了一个叫“客服宝聊天助手”的软件。用了几天真心觉得好用&#xff0c;能解决我回客户很慢的困扰。如果大家对快捷回复软件感兴趣&#xff0c;可以接着了解哦&#xff01; 一、减少复制粘贴 传统的客服工作中&#xff…

75.网络游戏逆向分析与漏洞攻防-角色与怪物信息的更新-伪造服务端更新属性消息欺骗客户端

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

【查找算法】之二分查找

一、算法介绍 二分查找&#xff0c;也称为折半查找&#xff0c;是一种在有序数组中查找特定元素的高效算法。对于包含 n 个元素的有序数组&#xff0c;二分查找的步骤如下&#xff1a; 确定搜索范围&#xff1a;首先&#xff0c;将要查找的元素与数组中间的元素进行比较。如果…

基于 Linux 自建怀旧游戏之 - 80 款 H5 精品小游戏合集

1&#xff09;简介 最近又找到了一款宝藏游戏资源分享给大家&#xff0c;包含 80 款 H5 精品小游戏&#xff0c;都是非常有趣味耐玩的游戏&#xff0c;比如 植物大战僵尸、捕鱼达人、贪吃蛇、俄罗斯方块、斗地主、坦克大战、双人五子棋、中国象棋 等等超级好玩的 H5 小游戏&…

Chrome浏览器命令行妙用:使你的网上冲浪更加无障碍

引言 在当今数字化时代&#xff0c;网络浏览器已成为我们日常生活中不可或缺的工具之一。对于许多人来说&#xff0c;Google Chrome浏览器是首选&#xff0c;不仅因为它的普及度&#xff0c;更因为它提供的丰富功能和高度的可定制性。在Chrome的众多特性中&#xff0c;命令行功…

景源畅信数字:抖音怎么挂橱窗商品?

抖音作为一款短视频分享平台&#xff0c;近年来逐渐融入了电商功能&#xff0c;其中“橱窗”就是商家或个人展示和销售商品的一个重要工具。如何在抖音上挂橱窗商品&#xff0c;成为了众多商家关注的焦点。 一、确保账号资质&#xff1a;在抖音上挂橱窗商品前&#xff0c;需要确…

iOS ------ JSONModel源码

一&#xff0c;JSONModel的基本使用 1&#xff0c;基本使用方法 - (instancetype)initWithDictionary:(NSDictionary *)dict error:(NSError **)err; - (instancetype)initWithData:(NSData *)data error:(NSError **)error; - (instancetype)initWithString:(NSString *)str…

yolov5-pytorch-Ultralytics训练+预测+报错处理记录

一、前言 玩一段时间大模型&#xff0c;也该回归一下图像识别。本项目用于记录使用基于Ultralytics的yolov5进行目标检测测试。为什么用Ultralytics呢&#xff1f;答案有3 1、其良好的生态&#xff0c;方便我们部署到其它语言和设备上。因此本次测试结论&#xff1a;大坑没有&…

华为手机连接电脑后电脑无反应、检测不到设备的解决方法

本文介绍华为手机与任意品牌电脑连接时&#xff0c;出现连接后电脑无反应、检测不到手机连接情况的解决方法。 最近&#xff0c;因为手机的存储空间愈发紧缺&#xff0c;所以希望在非华为电脑中&#xff0c;将华为手机内的照片、视频等大文件备份、整理一下。因此&#xff0c;需…

2024年化学材料、清洁能源与生物技术国际学术会议(ICCMCEB2024)

2024年化学材料、清洁能源与生物技术国际学术会议(ICCMCEB2024) 会议简介 2024国际化学材料、清洁能源和生物技术大会&#xff08;ICCMCEB2024&#xff09;将在长沙隆重举行。本次会议旨在汇聚来自世界各地的化学材料、清洁能源和生物技术领域的专家学者&#xff0c;共同探…