运维SRE-16 自动化批量管理-ansible2

7.6ansible-软件包管理模块

yum_repository(管理yum源)
yum(yum命令)
get_url(wget命令)

1)yum源配置管理模块

yum源模块 yum_repositoryyum源配置文件内容
name[epel]yum源中的名字(中括号里面的名字即可)
descriptionname=xxxxxxyum源的注释说明
baseurlbaseurl=yum源中下载软件包的地址(可以访问到repodata目录)
enabled=yes 或noenabled=1或0是否启动这个源
gpgcheck=yes或nogpgcheck=0是否启动gpgcheck功能
file (可以不加)指定yum源的文件 自动添加 .repo file=lidao默认与模块名字一致
[root@m01 ~]# cat /etc/yum.repos.d/epel.repo 
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

案例01-批量添加nginx-yum源
先写好nginx.repo文件

[nginx]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

再模仿写命令

ansible web -m yum_repository -a 'name=nginx description="nginx stable repo" baseurl="http://nginx.org/packages/centos/$releasever/$basearch/" gpgcheck=no enabled=yes'

2)yum模块
通过yum命令安装软件

yum模块
name指定软件包名字
stateinstalled 安装(present)
removed 删除(absent)
latest 安装或更新
案例01-安装lrzsz
ansible all -a 'yum -e lrzsz'
ansible all -m yum -a 'name=lrzsz state=installed'

案例02-web安装sl,cowsay,aalib

ansible web -m yum -a 'name=sl,cowsay,aalib state=installed'

3)get_url模块(wget)

get_url下载功能
url指定要下载的地址
dest下载到哪个目录
案例01-下载tengine源码包到web服务器/server/tools/目录下
1.先建目录
ansible web -m file -a 'path=/server/tools/ state=directory'
2.下载
ansible web -m get_url -a 'url=https://tengine.taobao.org/download/tengine-2.3.3.tar.gz dest=/server/tools/'
3.检查
ansible web -a 'tree /server/tools'

4)软件包管理模块小结

模块名字
yum_repositoryyum源配置文件.
yum通过yum命令安装软件.
get_urlwget命令下载软件包/源码,下载文件.

7.7系统管理模块

mount挂载nfs模块
cron管理定时任务
1)mount模块
mount
--
fstype指定文件系统(nfs)
src源地址(nfs服务端地址) eg:172.16.1.31/data
path挂载点(要把源挂载到那里)
state参考下表
mount模块的state参数可使用的值
absent卸载(umount)并修改fstab(清理配置)
unmounted卸载不修改/etc/fstab
present仅修改/etc/fstab 不挂载
mounted挂载(用mount命令)并修改/etc/fstab(永久挂载)
remounted重新挂载
案例01-挂载案例
web01把 nfs共享的目录/data目录挂载到 web01
的/upload_video

1.web01上面创建挂载点/upload_video
ansible web -m file -a 'path=/upload_video state=directory'

2.挂载nfs
ansible web -m mount -a 'fstype=nfs src="172.16.1.31:/data" path=/upload_video state=mounted'

3.检查
ansible web -a 'df -h'

2)cron定时任务模块

cron模块 定时任务模块定时任务配置中的内容
name#及后面的内容定时任务名字(一定要加上),对应下面注释的内容
minute*/2分钟minute=“*/2”,如果没有用到不用填写即可
hour小时
day日期
month月份
week周几
job命令/脚本指定命令或脚本(定向到空) job=“/sbin/ntpdate ntp1.aliyun.com &>/dev/null”
statepresent 默认是添加,添加定时任务;
absent 删除

案例01-添加自动同步时间的定时任务

参照:
#1. sync time hbinz 
*/2 * * * * /sbin/ntpdate ntp1.aliyun.com &>/dev/null

1.备份数据
ansible all -a 'cp /var/spool/cron/root /tmp/'
ansible all -a 'crontab -r'

2.书写定时任务
ansible all -m cron -a 'name="sync time by hbinz 231024" minute="*/2" job="/sbin/ntpdate ntp1.aliyun.com &>/dev/null" state=present'

7.8用户管理模块

  • group创建组模块
  • user创建用户模块

1)user

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

案例01-创建用户hbinz007

ansible all -m user -a 'name=hbinz007'

案例02-创建虚拟用户tengine,指定uid为10086

ansible all -m user -a 'name=tengine uid=10086 shell=/sbin/nologin create_home=yes state=present'

2)group模块

group
name指定用户组名字
gid指定组的gid
statepresent添加 absent 删除

8.ansible实战-部署rsync服务端

8.1列出流程

1.服务部署:yum安装或者更新
2.配置文件
3.虚拟用户rsync
4.密码文件和权限
5.模块对应的目录,改所有者
6.重启服务

8.2根据流程找出命令

部署rsync服务端命令
服务部署:yum 安装或更新yum -y install rsync
配置文件先准备好配置文件,scp 传输到rsync服务器上面
虚拟用户 rsyncuseradd -s /sbin/nologin -M rsync
密码文件和权限echo ‘rsync_backup:1’ >/etc/rsync.password;然后修改权限chmod 600 /etc/rsync.password
模块对应目录,改所有者mkdir -p /data
chown rsync.rsync /data
重启服务systemctl start rsyncd
systemctl enable rsync
#配置文件:
#rsyncd.conf start#
#rsyncd 20221111
fake super = yes
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[data]
comment = "backup dir by oldboy hbinz"
path = /data
[backup]
comment = "backup dir by oldboy hbinz"
path = /backup
[nfsbackup]
comment = 'nfsbackup dir by hbinz'
path = /nfsbackup

8.3根据命令及对应操作选择ansible模块

部署rsync服务端命令Ansible模块
服务部署:yum 安装或更新yum install -y rsyncyum模块
配置文件先准备好配置文件,scp 传输到rsync服务器上面.copy模块
虚拟用户 rsyncuseradd -s /sbin/nologin -M rsyncuser模块
密码文件和权限echo ‘rsync_backup:1’ >/etc/rsync.password然后修改权限chmod 600 /etc/rsync.passwordfile模块
模块对应目录,改所有者mkdir -p /data;chown rsync.rsync /datafile模块
重启服务systemctl start rsyncd;systemctl enable rsyncdsystemd模块
1)服务部署
ansible backup -m yum -a 'name=rsync state=lastest'

2)配置文件分发

1.m01创建目录
mkdir -p /server/ans/pro-rsync
2.m01创建配置文件
vi rsyncd.conf
3.分发到backup/etc/下
ansible backup -m copy -a 'src=/server/ans/pro-rsync/rsyncd.conf dest=/etc/rsyncd.conf backup=yes'

3)虚拟用户 rsync

ansible backup -m user -a 'name=rsync shell=/sbin/nologin create_home=no state=present'

4)密码文件和权限

1.创建文件
ansible backup -m file -a 'path=/etc/rsync.password mode=600 state=touch'
2.追加密码
ansible backup -m lineinfile -a 'path=/etc/rsync.password line="rsync_backup:1"'

5)模块对应目录,改所有者

ansible backup -m file -a 'path=/data owner=rsync group=rsync state=directory'

6)重启服务

ansible backup -m systemd -a 'name=rsyncd enabled=yes state=started'

7)测试

rsync -av /etc/hostname rsync_backup@172.16.1.31::data

8)指定hosts文件的位置
ansible默认读/etc/ansible/下的hosts文件,如果后面希望精细化管理host的话,可以-i读绝对路径的host文件。
ansible -i hosts -m command -a 'xxxx'

9 ansible-playbook(剧本)

9.1 概述

我们作为导演,编排一出戏. 通过你设置步骤,让演员做对应动作操作.

剧本核心:指定主机,执行什么任务(模块),什么操作(选项).
含义应用场景
ad-hocans命令运行对应模块与选项.(类似于命令)临时使用,测试使用
playbook通过文件执行(类似于脚本)用于批量管理,部署,收集信息,分发…(文件重复执行)
playbook vs shell脚本
剧本与脚本应用场景
playbook脚本批量管理,部署,收集信息
shell脚本某一台,服务脚本,系统巡检,定时备份

9.2playbook剧本快速使用指南

  • 剧本格式叫yaml格式

  • 缩进,不要用tab键,空格.
    在这里插入图片描述

  • 核心格式剧本中所有的内容要对齐

  • 对齐的时候不能使用tab键

  • 只能使用空格,2个空格

  • hosts用于指定在哪些主机执行指令

  • tasks:用于对于这些主机,运行什么模块及选项

1)案例01-在所有机器的/tmp下面创建hbinz.txt

[root@m01 /server/ans/playbook]# tree ./
./
├── 01.touch.yaml
└── hosts

0 directories, 2 files
    
cat 01.touch.yaml
- hosts: all
  vars:
    filename: hbinz.txt
  tasks:
    - name: touch file
      shell: touch /tmp/{{filename}}

2)案例02:添加定时同步时间的定时任务

ansible命令:
ansible all -m cron -a 'name="sync time by hbinz 231024" minute=*/2 job="/sbin/ntpdate ntp1.aliyun.com &>/dev/null" state=present'

playbook初阶:
---
- hosts: all
  tasks:
    - name: add cron sync time
    cron:name="sync time by hbinz 231024" minute=*/2 job="/sbin/ntpdate ntp1.aliyun.com &>/dev/null" state=present
    
playbook优化:
---
- hosts: all
  tasks:
    - name: "add cron sync time"
      cron:
        name: "add cron sync time"
        minute: "*/2"
        job: "/sbin/ntpdate ntp1.aliyun.com &>/dev/null"
        state: present
#检查语法:		
ansible-playbook -i hosts -C 02.add-cron.yaml
#执行:
ansible-playbook -i hosts 02.add-cron.yaml
  • 在剧本中使用模块和选项
  • 选项最好是一行一个选项,选项后面的跟着冒号
  • 选项要对齐与缩进.

3)案例03-企业案例-批量下载安装zabbix-agent2-6.0客户端并启动

zabbix-agent2客户端
1.下载rpm包
2.安装rpm包
3.启动服务zabbi-agent2
zabbix-agent2客户端命令模块
下载rpm包wgetget_url
安装rpm包rpm/yumyum
启动zabbix-agent2服务systemctlsystemd

模块对应的命令:
zabbix_url

---
- hosts: all
  tasks:
    - name: 1.download zabbix agent2 rpm
      get_url:
        url: https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.0-1.el7.x86_64.rpm
        dest: /tmp/
        validate_certs: no  #wget发现不要认证才可以下载
    - name: 2.install zabbix agent2 rpm
      yum:
        name: /tmp/zabbix-agent2-6.0.0-1.el7.x86_64.rpm
        state: installed
    - name: 3.start zabbix agent2 service
      systemd:
        name: zabbix-agent2
        enabled: yes
        state: started

案例04-部署rsync服务端

  • 准备:当前目录包含,rsyncd.conf配置文件。
    命令:
## 1) 服务部署:yum 安装或更新
ansible backup  -m yum  -a 'name=rsync state=lastest'
## 2) 配置文件分发
mkdir -p /server/ans/pro-rsync
准备配置文件存放在 上面目录中 rsyncd.conf 
ansible backup  -m copy  -a 'src=/server/ans/pro-rsync/rsyncd.conf dest=/etc/rsyncd.conf backup=yes'
## 3) 虚拟用户 rsync
ansible backup -m user -a 'name=rsync shell=/sbin/nologin create_home=no state=present'
## 4)密码文件和权限
## 创建文件
ansible backup -m file -a 'path=/etc/rsync.password mode=600 state=touch'
##增加
ansible backup -m lineinfile -a'path=/etc/rsync.password line="rsync_backup:1"'
## 5)模块对应目录,改所有者
ansible backup -m file -a 'path=/data owner=rsync group=rsync state=directory'
## 6) 重启服务
ansible backup -m systemd -a 'name=rsyncd enabled=yes state=started'

playbook:04.backup-rsyncd.yaml

---
- hosts: backup
  tasks:
    - name: 1)服务部署:yum 安装或更新
      yum:
        name: rsync
        state: lastest
    - name: 2) 配置文件分发
      copy:
        src: /server/ans/playbook/rsyncd.conf
        dest: /etc/rsyncd.conf
        backup: yes
    - name: 3) 虚拟用户 rsync
      user:
        name: rsync
        shell: /sbin/nologin
        create_home: no
        state: present
    - name: 4)密码文件和权限
      lineinfile:
        path: /etc/rsync.password
        mode: 600
        line: "rsync_backup:1"
        create: true
    - name: 5)模块对应目录,改所有者
      file:
        path: /data
        owner: rsync
        group: rsync
        state: directory
    - name: 5)重启服务
      systemd:
        name: rsyncd
        enabled: yes
        state: started

总结

  • 模块
  • 剧本:熟练掌握一部分模块,熟练掌握服务使用流程
  • 任务:
    • 完成批量部署zabbix客户端
    • 完成部署rsync服务端
    • 完成部署nfs服务端

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一位面试了20+家公司的测试工程师,发现了面试“绝杀四重技”!

年少不懂面试经,读懂已是测试人。 大家好,我是一名历经沧桑,看透互联网行业百态的测试从业者,经过数年的勤学苦练,精钻深研究,终于从初出茅庐的职场新手成长为现在的测试老鸟,早已看透了面试官…

尝试一下最新的联合办公利器ONLYOffice

下载下来一起试试吧 桌面安装版下载地址:https://www.onlyoffice.com/zh/download-desktop.aspx) 官网地址:https://www.onlyoffice.com 普通Office对联合办公的局限性 普通Office软件(如Microsoft Office、Google Docs等)在面对…

【html学习笔记】3.表单元素

1.文本框 1.1 语法 <input type "text">表示文本框。且只能写一行 1.2 属性 使用属性size 设置文本框大小 <input type"text" size"10">2. 使用属性value 来设置文本框的默认文字 <input type"text" size"…

【初始RabbitMQ】延迟队列的实现

延迟队列概念 延迟队列中的元素是希望在指定时间到了之后或之前取出和处理消息&#xff0c;并且队列内部是有序的。简单来说&#xff0c;延时队列就是用来存放需要在指定时间被处理的元素的队列 延迟队列使用场景 延迟队列经常使用的场景有以下几点&#xff1a; 订单在十分…

js设计模式:依赖注入模式

作用: 在对象外部完成两个对象的注入绑定等操作 这样可以将代码解耦,方便维护和扩展 vue中使用use注册其他插件就是在外部创建依赖关系的 示例: class App{constructor(appName,appFun){this.appName appNamethis.appFun appFun}}class Phone{constructor(app) {this.nam…

开放Gemma而非“开源”,谷歌为何转变大模型竞争策略?

开放Gemma而非“开源”&#xff0c;谷歌为何转变大模型竞争策略 开放而非开源&#xff01;&#xff01;一、Gemma开源模型二、Gemma从今天开始在全球范围内提供。以下是关键的详细信息&#xff1a;三、为什么这样做&#xff1f;四、谷歌这一竞争策略如何&#xff1f; 2月21日晚…

饮用水除氟树脂吸附设备

项目名称 某水务集团地下水除氟项目 工艺选择 石英砂过滤器除氟树脂系统 工艺原理 选择性去除氟化物&#xff0c;降低氯离子、硫酸根的干扰 项目背景 为了保障居民饮水安全与健康&#xff0c;对于含氟量高的地下水必须经过除氟处理&#xff0c;使其符合国家规定的饮用…

【力扣hot100】刷题笔记Day10

前言 一鼓作气把链表给刷完&#xff01;&#xff01;中等题困难题冲冲冲啊啊啊&#xff01; 25. K 个一组翻转链表 - 力扣&#xff08;LeetCode&#xff09; 模拟 class Solution:def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:# 翻转…

having子句

目录 having子句 having和where的区别 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 现在要求查询出每个职位的名称&#xff0c;职位的平均工资&#xff0c;但是要求显示平均工资高于 200 的职位 按照职位先进行分组&#xff0c;同…

四问带你搞懂 I3C

大家都知道 I2C &#xff0c;它的全称是 Inter Integrated Circuit &#xff0c;那 I3C 又是什么&#xff1f; I3C 是 MIPI &#xff08;Mobile Industry Processor Interface&#xff09;移动产业处理器接口联盟推出的&#xff0c;全称是 Improved Inter Integrated Circuit &…

玩转网络抓包利器:Wireshark常用协议分析讲解

Wireshark是一个开源的网络协议分析工具&#xff0c;它能够捕获和分析网络数据包&#xff0c;并以用户友好的方式呈现这些数据包的内容。Wireshark 被广泛应用于网络故障排查、安全审计、教育及软件开发等领域。关于该工具的安装请参考之前的文章&#xff1a;地址 &#xff0c;…

【动态规划专栏】专题四:子数组问题--------最大子数组和环形子数组的最大和

本专栏内容为&#xff1a;算法学习专栏&#xff0c;分为优选算法专栏&#xff0c;贪心算法专栏&#xff0c;动态规划专栏以及递归&#xff0c;搜索与回溯算法专栏四部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小…

openEuler2203 LTS安装VMware WorkStation Pro 17并远程桌面连接Linux服务器

openEuler 2203 LTS默认只有命令行&#xff0c;没有GUI图形界面&#xff0c;在其中安装VMware WorkStation需要有图形界面的支持。这里以安装深度的DDE桌面环境&#xff0c;最后通过VNC远程桌面连接Linux服务器操作VMware WorkStation。 以下操作请保持网络能正常连接 1、安装…

【网站项目】679学生学籍管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

gitlab的使用

前一篇文章我们已经知道Git人人都是中心&#xff0c;那他们怎么交互数据呢&#xff1f; • 使用GitHub或者码云等公共代码仓库 • 使用GitLab私有仓库 目录 一、安装配置gitlab 安装 初始化 这里初始化完成以后需要记住一个初始密码 查看状态 二、使用浏览器访问&#xf…

瑞_VMware虚拟机安装Linux纯净版(含卸载,图文超详细)

文章目录 1 资源准备1.1 官方资源1.2 帮助资源 2 安装 VMware3 安装 CentOS 73.1 镜像 附&#xff1a;VMware删除已安装的操作系统 &#x1f64a; 前言&#xff1a;VMware虚拟机安装Linux纯净版 VMware版本&#xff1a;VMware Workstation 16.2.4Linux版本&#xff1a;CentOS 7…

Stable Diffusion 模型分享:A-Zovya RPG Artist Tools(RPG 大师工具箱)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 A-Zovya RPG Artist Tools 模型是一个针对 RPG 训练的一个模型&#xff0c;可以生成一些 R…

如何使用eXtplorer部署个人云存储空间并实现公网访问内网数据

文章目录 1. 前言2. eXtplorer网站搭建2.1 eXtplorer下载和安装2.2 eXtplorer网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1. 前言 通过互联网传输文件&#xff0c;是互联网最重要的应用之一&#xff0c;无论是…

内衣洗衣机哪个好用?顶流爆款内衣洗衣机推荐

大家都知道&#xff0c;内衣裤一天不洗&#xff0c;就会滋生很多细菌&#xff0c;很多女生既要忙工作又要忙家务&#xff0c;衣服总会积攒到一堆再去清洗&#xff0c;在潮湿的天气&#xff0c;这样甚至会有发霉的情况出现&#xff0c;而传统的用手洗贴身衣物&#xff0c;看起来…

冷链物流追踪:Java与MySQL的协同实践

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…