自动化工具

news2024/9/23 17:18:01

一、介绍一些自动化的工具

puppet和chef用的是Ruby语言http协议,淘汰

saltstack   Python语言   c/s   ssh协议,5%

ansible  无cilent  ssh协议  用Python开发    95%

二、ansible简介

2.1 ansible自动化运维工具特点

         Ansible 与 Saltstack 均是基于 Python 语言开发,Ansible 只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为 Ansible 是基于 SSH 远程管理,而Linux服务器大都离不开SSH,所以Ansible不需要为配置工作添加额外的支持。
        Ansible 安装使用非常简单,而且基于上千个插件和模块实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。很多读者在使用 Ansible 工具时,认为 Ansible比 Saltstatck 执行效率慢,其实不是软件本身慢,是由于 SSH 服务慢,可以优化 SSH 连接速度及使用 Ansible 加速模块,满足企业上万台服务器的维护和管理。

2.2 ansible运维工具原理

        Ansible分为控制端和被控端,主要是基于SSH协议去管理客户端,被控端是无需安装Agent插件的,Ansible会读取控制端hosts文件,根据文件中定义IP列表信息,调取本地的各个模块对被控端机器实现批量、并发的配置管理和维护,如果任务比较复杂可以写成PlayBook剧本进行分发管理;

Ansible 自动运维管理工具优点:

        轻量级,更新时,只需要在操作机上进行一次更新即可;
        采用 SSH 协议;
        不需要去客户端安装 agent;
        批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
        使用 python 编写的,维护更简单;
        支持 sudo 普通用户命令;
        去中心化管理。

2.3 Ansible核心程序

①HostInventory:记录由Ansible管理的主机信息,端口,ip,密码等

②playbooks:'剧本'YAML格式文件,多任务定义在一个文件中,定义主机需要调用那些模块完成功能

③core modeules:核心模块主要操作通过调用核心模块来完成管理任务

④customodules:自定义模块,完成核心模块无法完成的模块,支持多种语言编写

⑤connectiontugins:连接插件,ansible和主机通信使用(ssh协议)

2.4 Ansible工作原理及流程

①加载自己的配置文件,默认/etc/ansible/ansible.cfg

②查找对应的主机的配置文件,找到要执行的主机或组/etc/ansible/hosts文件

③加载自己对应的模块文件,如command、yum、ping、

④通过ansible将模块命令生成对应的临时py文件(类似python脚本),并将该文件传输至被管理端

⑤传输到在被控制端的对应用户的家目录下.ansible/tmp/xxx/xxx.py

⑥被控制端给传输过来的py文件加执行权限

⑦执行并返回结果,执行完成后删除py文件并sleep 0退出

三、安装部署ansible

管理端192.168.2.12ansible
被管理端192.168.2.16
被管理端192.168.2.17

systemctl stop firewalld
setenforce 0

管理端:192.168.2.12

yum install -y epel-release            //先安装 epel 源
yum install -y ansible

//ansible 目录结构
tree/etc/ansible/
├── ansible.cfg            #ansible的配置文件,一般无需修改
├── hosts                #ansible的主机清单,用于存储需要管理的远程主机的相关信息
└── roles/                #公共角色目录
 

#配置文件位置:/etc/ansible/ansible

#hosts文件位置:/etc/ansible/hosts

vim /etc/ansible/hosts

#编辑hosts文件添加被管理的机器,内容如下

#生成密钥对
ssh-keygen -t rsa
 
ssh-copy-id root@192.168.2.16
ssh-copy-id root@192.168.2.17

#每次查询都需要输入密钥
#可以使用ssh-agent代理
ssh-agent bash
ssh-add
123
 
ansible 192.168.2.16 -m command -a 'date'

四、ansible命令模块

4.1 command模块

命令格式:ansible [主机] [-m 模块] [-a args]
 
#列出所有已安装的模块,按q退出
ansible-doc -l            

command 模块是用于在远程主机上执行命令的模块之一。它可以在远程主机上执行任何命令,并返回命令的标准输出和标准错误输出。

 #所有主机执行data命令,其中all可以换成IP或者分类名称,例:192.168.223.11 / webserver
ansible all -m command -a 'date'   

ansible 192.168.10.14 -m command -a 'date'        #指定 ip 执行 date
ansible webservers -m command -a 'date'            #指定组执行 date
ansible webservers -m command -a 'date'            #指定组执行 date
ansible dbservers -m command -a 'date'       
ansible all -m command -a 'date'                #all 代表所有 hosts 主机
ansible all -a 'ls /'                            #如省略 -m 模块,则默认运行 command 模块
 
#不加-m模块,则默认使用command模块
ansible all -a 'date'
ansible all -a 'ls /'

//常用的参数:
chdir:在远程主机上运行命令前提前进入目录
creates:判断指定文件是否存在,如果存在,不执行后面的操作
removes:判断指定文件是否存在,如果存在,执行后面的操作

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

ansible 192.168.2.17 -m command -a 'ls /etc'

4.2 cron计划任务模块

//在远程主机定义任务计划。其中有两种状态(state):present表示添加(可以省略),absent表示移除。

#查看cron模块信息

ansible-doc -s cron                #按 q 退出

//常用的参数:

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

#webserver:分类 -m指定模块 -a输出模块内的指令 分钟:每分钟,工作:输出hello,工作名称:test1

ansible 192.168.2.16  -m cron -a 'minute="*/1" job="/bin/echo helloworld" name="test1 "'

#查看计划性任务命令

ansible 192.168.2.16  -a 'crontab -l'


ansible 192.168.2.16  -m cron -a 'name="test crontab" state=absent'            

#移除计划任务,假如该计划任务没有取名字,name=None即可

4.3 user用户创建、删除修改账户信息模块

user模块是请求三条指令,useradd,userdel,usermod

#模块信息
ansible-doc -s user
 
#创建用户
ansible all -m user -a 'name=zhangsan'
 
#查看用户账户信息
ansible all -m 'command' -a 'tail -1 /etc/passwd'
 
#移除指令
ansible all -m user -a 'name="zhangsan" state=absent'

4.4 group组模块

group模块请求的是groupadd、groupdel、groupmod模块

#查看模块信息
ansible-doc -s group
 
#system=yes 创建系统组
ansible mysql -m group -a 'name=zb2b gid=1111 system=yes'
 
#查看组账户信息
ansible mysql -a 'tail -1 /etc/group'
 
#创建用户并加入组
ansible mysql -m user -a 'name=zhangsan uid=1234 group=zb2b system=yes'
 
#查看用户test02的用户id和组id信息
ansible mysql -a 'id cph '

4.5 copy复制模块

用于复制指定主机文件到远程主机的

ansible-doc -s copy
 

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

ansible mysql -m copy -a 'src=/etc/fstab dest=/opt/fstab.back'
 #MySQL组中主机使用copy模块将控制端源文件复制到被控制端并改名

ansible mysql -a 'ls /opt'
ansible mysql -a 'cat /opt/fstab.back'
 
ansible mysql -m copy -a 'content="hello lic" dest=/opt/test.txt'
ansible mysql -a 'cat /opt/test.txt'

4.6 file模块 

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

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

相关文章

Day_1

1. 环境搭建 技术选型 后端项目结构 sky-take-out maven父工程,统一管理依赖版本,聚合其他子模块 sky-common 子模块,存放公共类,例如:工具类、常量类、异常类等 sky-pojo 子模块,存放实体类、VO、DTO…

【爬虫】爬取A股数据写入数据库(一)

1. 对东方财富官网的分析 步骤: 通过刷新网页,点击等操作,我们发现https://datacenter-web.eastmoney.com/api/data/v1/get?请求后面带着一些参数即可以获取到相应数据。我们使用python来模拟这个请求即可。 我们以如下选择的页面为切入点…

GiantPandaCV | FasterTransformer Decoding 源码分析(三)-LayerNorm介绍

本文来源公众号“GiantPandaCV”,仅用于学术分享,侵权删,干货满满。 原文链接:FasterTransformer Decoding 源码分析(三)-LayerNorm介绍 作者丨进击的Killua 来源丨https://zhuanlan.zhihu.com/p/669440844 编辑丨GiantPandaC…

ollama + Anythingllm的安装

Ollama官网:https://ollama.com Anythingllm 官网下载:https://useanything.com/download 在Linux下如果直接运行./AnythingLLMDesktop.AppImage 报错的话,可以尝试以下命令: ./AnythingLLMDesktop.AppImage --appimage-extract …

微信公众号排名 SEO的5个策略

随着微信公众号在社交媒体领域的持续发展和普及,如何提升公众号的搜索排名,成为许多运营者关注的焦点。公众号排名SEO,即针对微信公众号进行搜索引擎优化,旨在提高公众号在搜索结果中的曝光率和点击率。下面,我们将深入…

什么是期货?期货的基础知识有哪些?

期货是一种标准化的远期合约,允许买卖双方在未来特定时间以预定价格交易货物或金融资产。也是一种金融衍生品,它为市场参与者提供了一种管理价格波动风险和进行投资的工具。 期货的基础知识有哪些 期货市场是一个复杂的金融环境,对于初学者来…

系统镜像地址

系统镜像 Linux 官网下载地址:Downloadhttps://www.centos.org/download/ 阿里云镜像下载地址:https://mirrors.aliyun.com/centos/https://mirrors.aliyun.com/centos/?spma2c6h.13651104.d-2001.6.6554320cwFqB8E 清华大学镜像下载地址&#xff1…

你对AI的所有疑虑,厚德云替你解答!

遇到难题不要怕!厚德提问大佬答! 厚德提问大佬答 你是否对AI绘画感兴趣却无从下手?是否有很多疑问却苦于没有大佬解答带你飞?从此刻开始这些问题都将迎刃而解!你感兴趣的话题,厚德云替你问,你解…

原型图制作神器!6款软件推荐,助你轻松实现设计构想!

在现代设计领域,原型图的制作是一个至关重要的环节。它们帮助设计师将创意转化为可视化界面,评估用户体验并进行交互测试。本文将介绍六款备受推崇的原型图软件,它们以强大的功能、易用的界面和灵活的工作流程脱颖而出,为设计师创…

每日算法-java

题目来自蓝桥云 // 这是一个Java程序,用于解决最长不下降子序列问题。 // 问题描述:给定一个整数序列,找到最长的子序列,使得这个子序列是不下降的(即相邻的元素不严格递减)。 // 程序使用了动态规划的方法…

Redis 渐进式遍历 -- scan

前言 keys 可以一次性把 Redis 中的所有 key 都获取到,但这个操作比较危险,一次性获取所有的key 很容易会导致 Redis 阻塞。 而通过渐进式遍历(不是一个命令就将所有的 key 值拿到,而是每执行一次命令只获取其中的一小部分&#x…

前后端功能实现——添加品牌

需求 点击新增&#xff0c;跳转到添加品牌的页面&#xff0c;从后一个页面提交品牌数据&#xff1a; 1、BrandMapper接口添加add()方法 /** * 添加品牌 */ void add(Brand brand); 2、BrandMapper.xml中添加sql方法 <insert id"add">insert into brand val…

如何提升通信芯片一次性投片成功率

通信芯片设计是一个非常复杂的系统工程&#xff0c;整体流程设计包括产品定义&#xff0c;算法开发&#xff0c;架构设计&#xff0c;电路设计和验证&#xff0c;后端版图设计&#xff0c;晶圆生产到封装测试等多个环节。在每个环节中&#xff0c;都需要严格遵循设计规则和流程…

2024年 Java 面试八股文——SpringCloud篇

目录 1.Spring Cloud Alibaba 中的 Nacos 是如何进行服务注册和发现的&#xff1f; 2.Spring Cloud Alibaba Sentinel 的流量控制规则有哪些&#xff1f; 3.Spring Cloud Alibaba 中如何实现分布式配置管理&#xff1f; 4.Spring Cloud Alibaba RocketMQ 的主要特点有哪些&…

自编码器网络

1.自编码器网络 自动编码器是一种无监督的数据维度压缩和数据特征表达方法。 无监督 在海量数据的场景下&#xff0c;使用无监督的学习方法比有监督的学习方法更省力。 维度上的压缩 自编码网络可以根据输入的数据&#xff0c;对其进行表征学习。输入数据转换到隐藏层co…

java中如何判断一个数是不是素数(质数)

相关概念 质数就是大于1的自然数字中&#xff0c;只能被1和它自己整除的数。 题目 求101~200之间的质素的个数 代码实现 判断一个数是不是质数 for (int j 2; j < i; j) {if(i % j 0){flag false;break;}}if(flag){System.out.println("当前数字是质数");…

文件删了,回收站清空了怎么恢复?文件恢复软件一览

在日常生活和工作中&#xff0c;我们常常会遇到误删除文件的情况&#xff0c;有时甚至会因为清空了回收站而无法找回这些文件。这些文件可能包含重要的工作数据、个人照片或其他珍贵的回忆。那么&#xff0c;在这种情况下&#xff0c;我们该如何恢复这些被删除且清空回收站的文…

ubuntu配置多版本cuda+cudnn环境,及版本切换方法

ubuntu配置多版本cudacudnn环境&#xff0c;及版本切换方法 环境如下&#xff1a; ubuntu 22.04cuda v11.8cudnn v8.9.7 文章目录 ubuntu配置多版本cudacudnn环境&#xff0c;及版本切换方法1.安装Nvidia显卡驱动1.1卸载默认的驱动nouveau1.2安装nvidia驱动 2.安装cuda3.安装…

《从Paxos到Zookeeper》——第五、六章:经典应用场景

目录 第五章 使用Zookeeper 5.1 服务端部署与运行 5.2 客户端相关 5.2.1 客户端运行 5.2.2 客户端命令 5.3 Java客户端API 5.4 开源客户端 第六章 经典应用场景 6.1 典型应用场景及实现 6.1.1 数据发布/订阅&#xff08;全局配置中心&#xff09; 6.1.2 负载均衡&#xff08;Lo…

谷歌推广和seo留痕具体怎么操作?

留痕跟谷歌推广其实是一回事&#xff0c;你能在谷歌上留痕&#xff0c;其实就是推广了自己的信息&#xff0c;本质上留痕就是在各大网站留下自己的记录&#xff0c;这个记录可以是品牌信息&#xff0c;联系方式&#xff0c;看你想留下什么 如果要问自己怎么操作&#xff0c;正常…