网站集群批量管理-Ansible-模块管理

news2024/10/7 7:23:00

1. 概述

1. 自动化运维: 批量管理,批量分发,批量执行,维护

2. 无客户端,基于ssh进行管理与维护

2. 环境准备

环境主机
ansible10.0.0.7(管理节点)
nfs01 10.0.0.31(被管理节点)
backup10.0.0.41(被管理节点)

2.1 创建密钥认证

安装sshpass

yum install -y  sshpass

#!/bin/bash
##############################################################
# File Name:24-ssh.sh
# Version:V1.0
# Author:xzb996
# Organization:www.oldboyedu.com
# Desc:一键创建密钥对,分发密钥对
##############################################################
##1.vars
pass=1
ips="10.0.0.31 10.0.0.41"

##2.创建密钥对
if [ ~/.shh/id_rsa] ;then
  echo "已经有密钥对了"
else
  echo "正在创建密钥对"
  ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
fi

##3.通过循环发送密钥对
for ip in $ips
do 
   sshpass -p${pass} ssh-copy-id -i ~/.ssh/id_rsa.pub -oStrictHostKeyChecking=no $ip &>/dev/null
   echo "$ip 密钥已发送..."


done 

3. 部署与配置

 yum install -y ansible 

3.1 配置

修改配置文件关闭主机Host_key_checking .

修改配置文件开启日志功能

4. Ans-inventory主机清单 

1. ansible默认读取在/etc/ansible/hosts文件,并非/etc/hosts.

2.未来实际使用中一般我们会把主机清单文件存放在指定的目录中,运行ansible的时候通过-i选项指定主机清单文件即可

 4.1 主机清单必会格式

主机清单格式:

[分类或分组的名字]         #注意分类要体现出服务器的作用

ip地址或主机名或域名    #注意主机名要能解析才行

4.1.1 对主机分组并进行连接测试 

##vim编辑后用gg+dG清空文件内容
[nfs]
172.16.1.31
[backup]
172.16.1.41

测试

ansible命令格式:

ansible 主机ip或分组或all   -m 指定使用的模块名字 

这里的ping模块用于检查被管理端是否可以访问

 4.2 子组

创建新的分组data包含已有的分组backup和nfs

[nfs]
172.16.1.31
[backup]
172.16.1.41
##c创建data的子组
[data:children]
nfs
backup

子组使用children关键词创建

格式:

[data:children]     #组名字:children即可 

 4.3 指定用户,密码

不推荐,推荐先配置密钥认证,然后管理
没有配置密钥认证,主机清单如何书写?

[nfs]
172.16.1.31 ansible_user=root  ansible_password=1 ansible_port=22 ##指定用户名,密码,端口

5.Ansible模块

1.Ansible中通过各种模块实现批量管理.

2.一般来说这些模块对应着Linux里面的基本操作或服务管理

3. 找出Linux场景操作对应的模块即可

5.1 命令与脚本类模块 

5.1.1 command模块

是ansible默认的模块,适用于执行简单的命令,不支持特殊符号

 批量获取所有主机的主机名
ansible all -m command -a 'hostname'

 5.1.2 shell模块

批量获取所有主机的IP地址
ansible all -m shell -a "ip a s eth0 |awk -F'[ /]+' 'NR==3{print \$3}'"

shell模块不推荐执行较为复杂的指令,如果需要执行放在脚本中执行 

5.1.3 script模块

1.分发脚本(传输脚本)

2.运行脚本

 批量执行脚本获取主机信息
#!/bin/bash
##############################################################
# File Name:25-ansible-script.sh
# Version:V1.0
# Author:xzb996
# Organization:www.oldboyedu.com
# Desc:系统巡检脚本
##############################################################
hostname
hostname -I
uptime 
whoami
date +%F
ansible all -m script -a '/server/scripts/25-ansible-script.sh'

 5.2 文件相关模块

管理文件,管理目录,软连接

file模块模块说明
path路径(目录,文件) 必须要写
src源文件一般用于link(创建软连接模式) 用于指定源文件
state

状态(模式)

state=directory 创建目录

state=file (默认) 更新文件,如果文件不存在也不创建

state=link 创建软连接

state=touch 创建文件

statestate=absent 删除 (注意如果是目录递归删除目录)
modemode=755创建并修改权限
onweronwer=root
groupgroup=root

创建/tmp/xzb666.txt
ansible all -m file -a 'path=/tmp/xzb66.txt state=touch'
创建目录/app/ 
ansible all -m file -a 'path=/app/xzb/xzb666 state=directory'
创建软连接 /etc/hosts创建软连接到/tmp/下
ansible all -m file -a 'path=/tmp/hosts src=/etc/hosts state=link'

创建/ans-backup目录 所有者是oldboy
ansible all -m file -a 'path=/ans-backup owner=oldboy group=oldboy mode=700 state=directory'

删除/ans-backup/
ansible all -m file  -a 'path=/ans-backup state=absent'

 5.3 copy模块

批量分发:scp

copy模块
srcsource 源文件
destdestination 目标
backupbackup=yes 则会在覆盖前进行备份
mode修改权限
owner修改为指定所有者
group修改为指定用户组

ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts backup=yes'

5.4 服务管理模块-systemd

1.相当于是systemctl 命令:

开启/关闭/重启服务

开机自启动

systemd模块
name用于指定服务名称
enabledyes开机自启动
state

表示服务开,关,重启

state=started 开启

state=stopped 关闭

state=reloaded 重读配置文件(服务支持)

state=restarted 重启(关闭再开启)

daemon-reloadyes是否重新加载对应的服务的管理配置文件

 启动服务crond
ansible all -m systemd -a 'name=crond enabled=yes state=started' 

关闭firewalld服务
ansible all -m systemd -a 'name=firewalld enabled=no state=stopped'

5.5 软件管理模块

5.5.1 yum模块

yum模块
name指定软件包名字
state

installed 安装(present)(默认)

removed 删除 (absent)

lastest 安装或更新

update_cache可以设置为no加加速,表示不更新本地yum缓存.实际应用建议开启

安装htop,tree,lrzsz,sshpass服务
ansible all -m yum -a 'name=htop,tree,lrzsz,sshpass'

5.5.2  get_url模块

get_url下载功能
url指定要下载的地址
dest下载到哪个目录

https://tengine.taobao.org/download/tengine-2.4.1.tar.gz下载到/app/tools
ansible all -m get_url -a 'url=https://tengine.taobao.org/download/tengine-2.4.1.tar.gz dest=/app/tools'

5.5.3yum_repository模块

有点鸡肋,未来可以书写好yum配置文件,copy分发过去即可。

yum_repository模块

yum源
nameyum源中名字 []里面的内容
descriptionyum源的注释说明 对应的 是name的内容
baseurlyum源中baseurl下载地址
enabled是否启动这个源 yes/no
gpgcheck是否启动gpgcheck功能 no
file指定yum源的文件自动添加.repo 默认与模块名字一致

         

在nfs01上用yum安装nginx
##nginx官网的yum源文件书写
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
###用ansible的yum_repostiory模块安装
ansible nfs -m yum_repository -a 'name=nginx-stable description=nginx baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ enabled=yes gpgcheck=yes'

5.6 用户管理 

5.6.1 user模块

user模块
name指定用户名
uid指定uid
group指定用户组
shell指定命令解释器
create_home是否创建家目录(yes/no)
state

present 添加

absent删除

创建www-ans用户uid 2001虚拟用户
ansible all -m user -a 'name=ans-www uid=2001 shell=/sbin/nologin create_home=yes  state=present'
 批量更新密码
##下面命令可以更新密码,密码为1
ansible all -m user -a "name=xzb66 password={{'1'|password_hash('sha512','xzb666')}} state=present"

 5.7 mount模块

实现mount命令进行挂载可以修改/etc/fstab实现永久挂载

mount选项说明
fstypefilesystem type指定文件系统,xfs,ext4,iso9660,nfs
src源地址(nfs服务端地址)
path注意这里不是dest,挂载点(要把源挂载到哪里)
state参考下表

mount模块的state参数可使用的值
absent卸载并修改fstab
unmounted卸载不修改/etc/fstab
present仅修改/etc/fstab 不挂载
mounted挂载并修改/etc/fstab
remounted重新挂载

 通过ans管理在web01上挂载nfs:/data挂载到web01的/ans-upload/
##1.在web01服务器上安装nfs
ansible web01 -m yum -a 'name=nfs-utils state=present'
##2.创建挂载点
ansible web01 -m file -a 'name=/ans-upload state=directory'
##3.挂载nfs
ansible web01 -m mount -a 'src=172.16.1.31:/data/ path=/ans-upload fstype=nfs
state=mounted'
#4.检查
ansible web  -a 'df -h' 
ansible web  -a 'grep upload /etc/fstab'

5.8 cron模块

用于管理系统的定时任务,替代了crontab -e功能

cron模块说明
name定时任务名字(一定要加上), 注释的内容
minute分钟 minute="*/2"
hour小时
day日期
month月份
week周几
job

指定命令或脚本(定向到空)

job="/sbin/ntpdate ntp1.aliyun.com &>/dev/null"

state

present 添加定时任务(默认)

absent 删除

每3分钟同步时间
##清理已有的定时任务:
ansible all -a "sed -i '/ntpdate/d' /var/spool/cron/root"
##创建定时任务
ansible all  -m cron -a 'name="sync time by xzb666" minute="*/3"  job="/sbin/ntpdatentp1.aliyun.com  &>/dev/null"  state=present'
##查看定时任务
ansible all -a 'crontab -l'
##删除定时任务
ansible all -m cron -a 'name="time by xzb666" state=absent'

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

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

相关文章

Renesas R7FA8D1BH (Cortex®-M85)和蓝牙模块通信

目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 硬件架构 2.1 系统架构 2.2 蓝牙模块介绍 3 软件实现 3.1 FSP配置参数 3.2 代码实现 3.2.1 驱动函数 3.2.2 功能函数 概述 本文主要介绍Renesas R7FA8D1BH (Cortex-M85)和蓝牙模块通信的…

【leetcode】274.H指数

为了方便,将 citations 记为 cs。 所谓的 h 指数是指一个具体的数值,该数值为“最大”的满足「至少发表了 x 篇论文,且每篇论文至少被引用 x 次」定义的合法数,重点是“最大”。 用题面的实例 1 来举个 🌰&#xff0…

hackmyvm-BaseME靶机

主机发现 sudo arp-scan -l 扫描到本地网络靶机ip:192.168.91.173 nmap扫描 sudo nmap 192.168.91.173 发现靶机开放22端口的ssh服务与80端口的http服务 base64加密 我们访问一下80端口,发现了一串加密信息,判读大概是base64加密 base64加密特征&…

软件无线电4-位同步

在数字通信系统中,同步主要有三种方式,载波同步、位同步和群同步。载波同步指在相干解调时,接收机的解调器需要产生一个与调制载波同频同相的相干载波。载波同步又称为载波恢复。位同步指接收机需要产生一个与调制信号符号速率相同&#xff0…

【stm32】ADC的介绍与使用

ADC的介绍与使用 1、ADC介绍2、逐次逼近型ADC3、ADC电路4、ADC基本结构程序代码编写:ADC 通道和引脚复用的关系 5、转换模式(1)单次转换,非扫描模式转换流程:程序编写: (2)连续转换&…

Android一个APP里面最少有几个线程

Android一个APP里面最少有几个线程 参考 https://www.jianshu.com/p/92bff8d6282f https://www.jianshu.com/p/8a820d93c6aa 线程查看 Android一个进程里面最少包含5个线程,分别为: main线程(主线程)FinalizerDaemon线程 终结者守护线程…

pg 视图

1.概念 2.创建 3.修改 3.删除 4.递归

【量子计算】开辟全新计算范式

1. 🚀 引言1.1 🚀 量子计算的现状与发展趋势1.2 📜 量子位、量子门和量子电路的基本概念1.3 🏆 量子计算在科学研究中的作用 2. 🔍 量子计算的演变与创新2.1 🌟 量子计算的发展历程2.2 🧠 量子算…

Dit架构 diffusion范式分类+应用

1.ping 网址 2.ssh nscc/l20 3.crtl,打开vscode的setting 4.win 10修改ssh配置文件及其密钥权限为600 - 晴云孤魂 - 博客园 整体来看: 使用transformer作为其主干网络,代替了原先的UNet 在latent space进行训练,通过transformer处理潜…

Leetcode——数组:二分搜索法704.二分查找相似题目

知识点&#xff1a; 二分搜索的区间&#xff0c;一般分为左闭右闭或左闭右开 left0 易错点1 while(易错点2) {middle(leftright)/2if(nums[middle]>target){right易错点3}else if(nums[middle]<target){leftmiddle1}else if(nums[middle]target){return target} } retu…

NRF52832

当我下载完NRF的芯片包后出现了一个缺失pack的问题 解决方法&#xff1a; CMSIS缺失警告_error #541: arm::cmsis:core:4.3.0 component is m-CSDN博客 引入新的型号的芯片问题总结&#xff1a; 一般引入新的型号的芯片都会涉及到.pack和芯片包的问题 外设调用&#xff1a; …

论文阅读:LLaVA-OneVision: Easy Visual Task Transfer

论文地址&#xff1a;https://arxiv.org/pdf/2408.03326 公开时间&#xff1a;2024年9月14日 项目地址&#xff1a;https://llava-vl.github.io/blog/llava-onevision LLaVA-OneVision是一个开放的大型多模态模型&#xff08;LMMs&#xff09;&#xff0c;它是通过整合在LLaVA…

【星闪开发连载】SLE_UUID_Server和SLE_UUID_Client程序分析

引言 星闪测试已经搁置了很久了&#xff0c;主要是8-9月份太忙了。今天重新捡回来。想看看官方提供的星闪例子&#xff0c;在application\samples\bt\sle\sle_uuid_client\和sle_uuid_server目录。这两个例子是一对&#xff0c;一个用来广播服务&#xff0c;另一个去连接。对应…

Mybatis-plus的基础用法

文章目录 1. 核心功能1.1 配置与编写规则1.2 条件构造器1.3 自定义SQL1.4 IService接口1.4.1 Lambda方法1.4.2 批量新增 1.5 分页查询 2. 拓展功能2.1 代码生成器2.2 DB静态工具2.3 逻辑删除2.4 枚举处理器 参考 1. 核心功能 1.1 配置与编写规则 Maven依赖&#xff1a; <…

Autosar EcuM配置-初始化及下电执行函数-基于ETAS软件

文章目录 前言EcuMCommonConfigurationEcuMDriverInitListOneEcuMModuleIDEcuMModuleParameterEcuMModuleServiceEcuMRbDriverInitCoreIdEcuMDriverInitListZeroEcuMGeneralEcuMRbOnGoOffOneCalloutEcuMRbCalloutFunctionEcuMRbModuleIDEcuMRbServiceIsNonAutosarEcuMRbOnGoOff…

java控制台输出乱码

第一步&#xff1a;修改 IntelliJ IDEA 全局编码、项目编码、属性文件编码 File->Settings… Editor->File Encodings(不要忘记点击Apply然后OK) 第二步&#xff1a;修改当前 Web 项目 Tomcat Server 的虚拟机输出选项 Run->Edit Configurations… 复制代码->…

DBMS-3.2 SQL(2)——DML的SELECT(含WHERE、聚集函数、GROUP BY、HAVING之间的关系)

本文章的素材与知识来自李国良老师和王珊老师。 数据操纵语言DML&#xff08;Data Manipulation Language&#xff09; SELECT 一.SELECT的语法与构成 1.语法 2.构成 二.投影 投影操作可以选择表中的若干列&#xff0c;主要体现在SELECT子句后的列表达式。 1.列表达式 2.…

【书生浦语实战】茴香豆企业级知识库问答工具-搭建Dify问答助手

快速结论 1、用茴香豆快速搭建Dify问答助手&#xff0c;自带拒答、rerank、切片长度判断、阈值调节功能&#xff0c;回答还能带出图片&#xff0c;顶呱呱&#x1f44d; 2、茴香豆git仓地址&#xff1a;https://github.com/internlm/huixiangdou 遇到问题去翻这里会更多解释&…

如何利用免费音频剪辑软件制作出精彩音频

现在有许多免费的音频剪辑软件可供选择&#xff0c;它们为广大用户提供了丰富的功能和便捷的操作体验&#xff0c;让音频编辑变得更加轻松和有趣。接下来&#xff0c;让我们一起走进这些免费音频剪辑软件的世界&#xff0c;探索它们的独特魅力和强大功能。 1.福昕音频剪辑 链…

李宏毅深度学习-图神经网络GNN

图卷积的开源代码网站DGL 好用的还是 GAT, GIN&#xff08;指出最好的卷积 就是 hi 邻居特征&#xff08;而且只能用 sum&#xff09;&#xff09; Introduction GNN 可以理解为是由 Graph&#xff08;图) Nerual Networks 组合而成的&#xff0c;图结构应该都在数据结构与…