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

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] ;thenecho "已经有密钥对了"
elseecho "正在创建密钥对"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/nullecho "$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.xdnf.cn/news/1556314.html

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

相关文章

毕设 大数据抖音短视频数据分析与可视化(源码)

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕…

自然语言处理问答系统

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

调试意义、步骤及方式

调试 文章目录 调试1.什么是bug?2.调试是什么?有多重要?2.1调试2.2调试的基本步骤2.3Debug和Release的介绍2.3.1常用的快捷键及功能1.F52.F9条件断点3.F104.F115.CTRLF5 3.调试的时候查看程序当前信息3.1查看临时变量的值3.1.1自动窗口3.1.2监…

力扣59.螺旋矩阵||

题目链接:59. 螺旋矩阵 II - 力扣(LeetCode) 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出&#xff…

Github 2024-10-06 php开源项目日报 Top10

根据Github Trendings的统计,今日(2024-10-06统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Blade项目2Laravel:表达力和优雅的 Web 应用程序框架 创建周期:4631 天开发语言:PHP, BladeStar数量:75969 个Fork数量:24281 次…

HarmonyOS第一课 04 应用程序框架基础-习题分析

判断题 1.在基于Stage模型开发的应用项目中都存在一个app.json5配置文件、以及一个或多个module.json5配置文件。T 正确(True) 错误(False) 这个答案是T - AppScope > app.json5:app.json5配置文件,用于声明应用的全局配置信息,比如应用…

【TypeScript】知识点梳理(三)

#void前面提到了代表空,但有个特殊情况,是空不是空,细谈是取舍,但我们不深究hhh# 代码示例: type func () > voidconst f1: func function() {return true; } 定义了空,返回非空值,理论…

关于软件开发的ChatGPT提示词

面向软件开发人员的 ChatGPT 提示词 不会用ChatGPT就如同上图~~ 所以先推荐一波好用的提示词 1. 代码生成: 为名为 [name] 的 [class/module/component] 生成具有以下功能的样板 [language] 代码:[functionality description]。 创建一个 [语言] 函数以…

二叉树基本概念讲解

一.树的概念 1.概念 树是⼀种非线性的数据结构,它是由 n(n>0)个有限结点组成⼀个具有层次关系的集合。把它叫 做树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有⼀个特殊的结点&#xff0c…

计算机的错误计算(一百一十五)

摘要 用错数定量解释计算机的错误计算(一百一十四)中的错误计算原因。 例1. 已知 计算 在 的错数,并与计算机的错误计算(一百一十四)中的相应错误数字个数做比较。 由 知, 再由 可得&#xff0c…

Ubuntu 搭建 GitLab

1. 安装依赖: sudo apt update sudo apt install -y curl openssh-server ca-certificates2. 添加 GitLab 包仓库: curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash3. 安装 GitLab: s…

如何判断静态代理IP地址是否被污染?

在网络使用中,静态IP代理是一种常见的工具,用于维持稳定的连接和保护个人隐私。然而,有时这些IP地址可能会被污染,导致用户遭受各种问题,如连接延迟、数据泄露等。因此,了解如何判断址是否被污染至关重要。…

时序逻辑-延一拍/打一拍?

一、时序逻辑中的同步复位和异步复位 同步复位的D触发器 同步复位的D触发器中的“同步”是和工作时钟同步的意思,也就是说,当时钟的上升沿(也可以是下降沿,一般习惯上为上升沿触发)来到时检测到按键的复位操作才有效&a…

美国静态住宅IP代理怎么定期更换?

在互联网使用中,P代理被广泛应用于许多方面,如网络安全测试、数据采集、访问受限制内容等。然而,为了维护隐私安全和避免被封禁,定期更换IP地址是必要的。特别是对于每个用户,定期更换IP地址更是至关重要。本文将探讨美…

有趣幽默彩虹屁文案生成工具微信小程序源码

有趣幽默彩虹屁文案生成工具小程序源码 此文案小程序主要功能为分享各种有趣幽默的文案 免服务器免域名,源码只提供彩虹屁,朋友圈,毒鸡汤API接口,其他需自行查找替代 小程序拥有复制收藏功能,可自行体验,设…

Ubuntu 22.04.4 LTS更换下载源

方法1:使用图形界面更换下载源 1. 打开软件和更新应用 2. 在Ubuntu 软件标签中,点击“下载自”旁边的下拉菜单,选择“其他” 3. 点击“选择最佳服务器”来自动选择最快的服务器 4. 选择服务器 5. 确定并关闭窗口,系统会提示您重新…

Midjourney零基础学习

Midjourney学习笔记TOP01 什么是AI艺术 AI艺术指的是使用AI技术创作的艺术作品,包括AI诗歌、AI音乐、AI绘画等多种艺术表现形式;AI艺术可以被视为计算机程序与人类合作创作作品;除了Midjourney,比较流行的AI图像生成工具还有Stab…

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

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

github学生认证(Github Copilot)

今天想配置一下Github Copilot,认证学生可以免费使用一年,认证过程中因为各种原因折腾了好久,记录一下解决方法供大家参考。 p.s.本文章只针对Github学生认证部分遇到的问题及解决方法,不包括配置copilot的全部流程~ 1、准备工作…

vmstat命令:系统性能监控

一、命令简介 ​vmstat​ 是一种在类 Unix 系统上常用的性能监控工具,它可以报告虚拟内存统计信息,包括进程、内存、分页、块 IO、陷阱(中断)和 CPU 活动等。 ‍ 二、命令参数 2.1 命令格式 vmstat [选项] [ 延迟 [次数] ]2…