Ansible playbook 剧本部署WEB NFS rsync sersync(及时监控)架构

  • ansible playbook剧本介绍:
    • playbook 是ansible用于配置,部署和管理被节点的剧本
    • 由一个或多个模块组成,完成统一的目的,实现自动化操作
    • 剧本编写需遵循yaml语法
      • yaml的三要素:
        • 缩进:两个字符,默认的tab键是四个字符,所以要使用tab键,需要修改/root/.vimrc文件。添加:set tabstop=2
        • 冒号:冒号后面需要空格,除非以冒号结尾
        • 短横杠:列表项,后面跟空格
  • playbook的语法结构:
    • ansible-playbook 选项 文件路径
      • 选项:-C 模拟预运行
        • --list-hosts:列出清单
        • --list-tasks:列出任务
        • --list-tags:列出标签
        • --syntax-check:语法检查
  • Ansible playbook使用场景:
    • 执行一些简单的任务可以使用ad-hoc命令,过于复杂时就需要使用playbook剧本
    • playbook剧本就像执行shell命令与写shell脚本一样,也可以理解为批量处理任务
    • 使用playbook可以方便的重复使用这些代码,可以移植到不同机器上,像函数一样反复使用
  • 实验场景:
    • 拓扑:
      • ansible:192.168.8.5
      • web:192.168.8.6
      • nfs:192.168.8.7
      • rsync:192.168.8.8
    • 实验说明:在第一台机器上部署ansible,编写playbook剧本,完成一键部署web,nfs,rsync架构的环境
    • 实验步骤:
      • 1.在ansible上修改hosts文件
        • vim /etc/hosts
          • 192.168.8.5 ansible
          • 192.168.8.6 web
          • 192.168.8.7 nfs
          • 192.168.8.8 rsync
      • 2.将每台服务器的主机名称修改为对应的服务名:
        • hostnamectl set-hostname ansible
        • hostnamectl set-hostname web
        • hostnamectl set-hostname nfs
        • hostnamectl set-hostname rsync
      • 3.在ansible服务器上修改tab键=2
        • vim /root/.vimrc
          • set tabstop=2
      • 4.在8.5主机安装ansible和epel-release(提供额外软件包)
        • ymm -y install ansible
        • yum -y install epel-release
      • 5.ssh免密登录8.6、8.7、8.8
        • ssh-keygen -t rsa
        • ssh-copy-id root@web
        • ssh-copy-id root@nfs
        • ssh-copy-id root@rsync
      • 6.创建ansible剧本中所需的目录
        • mkdir -p /etc/ansible/ansible_playbook/{conf,file,scripts,tools}
      • 7.编辑ansible清单:
        • vim /etc/ansible/hosts
          • 添加:
            • [web]
            • 192.168.8.6
            • [nfs]
            • 192.168.8.7
            • [rsync]
            • 192.168.8.8
      • 8.使用ansible的copy模块 覆盖另外三台的hosts文件
        • ansible all -m copy -a "src=/etc/hosts dest=/etc"
      • 9.编写playbook剧本部署基本环境:
        • 关闭防火墙
        • 配置yum仓库
        • 安装rsync、nfs-utils
        • 创建组、用户
        • 创建目录,修改权限
        • 推送脚本
        • 推送rsync客户端所需的密码文件,修改权限
        • 计划任务
        • vim /etc/ansible/ansible_playbook/base.yaml
          • - hosts: all
            • tasks:
              • - name: stop firewalld
                • shell: systemctl stop firewalld
                • - name: stop selinux
                • shell: setenforce 0
                • - name: clear repos.d
                • file: path=/etc/yum.repos.d/ state=absent
                • - name: create repos.d
                • file: path=/etc/yum.repos.d/ recurse=yes
                • - name: install base repo
                • get_url: url=http://mirrors.aliyun.com/repo/Centos-7.repo dest=/etc/yum.repos.d/CentOS-Base.repo
                • - name: install epel repo
                • get_url: url=http://mirrors.aliyun.com/repo/epel-7.repo dest=/etc/yum.repos.d/epel.repo
                • - name: install rsync nfs-utils
                • yum: name=rsync,nfs-utils state=installed
                • - name: create group www
                • group: name=www gid=666
                • - name: create user www
                • user: name=www uid=666 create_home=no shell=/sbin/nologin
                • - name: create rsync client password
                • copy: content='1' dest=/etc/rsync.pass mode=600
                • - name: create scripts directory
                • file: path=/server/scripts/ recurse=yes state=directory
                • - name: push scripts
                • copy: src=./scripts/rsync_backup.sh dest=/server/scripts
                • - name: crontab
                • cron: name="backup scripts" hour=01 minute=00 job="/usr/bin/bash /server/scripts/rsync_backup.sh &> /dev/null"
          • 进入到脚本目录,将需要的脚本拖拽至目录下
            • cd /etc/ansible/ansible_playbook/scripts
          • 预先运行脚本,检查语法有没有错误
            • ansible-playbook -C base.yaml
      • 10.编辑对rsync主机进行配置的剧本
        • 剧本流程:
          • 安装rsync
          • 配置
          • 启动
          • 脚本
          • 计划任务
        • vim /etc/ansible/ansible_playbook/rsync.yaml
          • - hosts: rsync
          • tasks:
          • - name: install rsync
          • yum: name=rsync state=installed
          • - name: config rsync
          • copy: src=./conf/rsyncd.conf dest=/etc/rsyncd.conf
          • notify: restart rsync
          • - name: create rsync local user
          • copy: content='rsync_backup:1' dest=/etc/rsync.password mode=600
          • - name: create data
          • file: path=/data state=directory recurse=yes owner=www group=www mode=755
          • - name: create backup
          • file: path=/backup state=directory recurse=yes owner=www group=www mode=755
          • - name: start rsync
          • service: name=rsyncd state=started enabled=yes
          • - name: push check scripts
          • copy: src=./scripts/rsync_check.sh dest=/server/scripts
          • - name: crond check scripts
          • cron: name="check scripts" hour=05 minute=00 job="/usr/bin/bash /server/scripts/rsync_check.sh &> /dev/null"
          • handlers:
          • - name: restart rsync
          • service: name=rsyncd state=restarted
        • 将所需配置文件拖至conf目录下
          • cd /etc/ansible/ansible_playbook/conf
        • 运行脚本,检查是否有错误
          • ansible-playbook -C rsync.yaml
      • 11.编写部署nfs服务的剧本:
        • vim nfs.yaml
          • - hosts: nfs
          • tasks:
          • - name: install nfs
          • yum: name=nfs-utils,rpcbind state=installed
          • - name: config nfs
          • copy: src=./conf/exports dest=/etc/exports
          • notify: restart nfs
          • - name: create data
          • file: path=/data state=directory recurse=yes owner=www group=www mode=755
          • - name: start nfs
          • service: name=nfs-server state=started enabled=yes
          • handlers:
          • - name: restart nfs
          • service: name=nfs-server state=restarted
        • 预运行检查语法:
          • ansible-playbook -C nfs.yaml
      • 12.部署sersync服务,实现及时监控
        • 剧本流程:
          • (1)在ansible服务器先下载sersync
          • (2)解压到/etc/ansible/ansible_playbook/并修改配置文件
          • (3)推送到nfs
          • (4)启动sersync
        • 进入tools目录 将存放及时监控的软件目录 拖拽至tools目录下
          • cd /etc/ansible/ansible_playbook/tools
            • 拖拽
        • 编辑剧本:
          • vim sersync.yaml
            • - hosts: nfs
            • tasks:
            • - name: scp sersync
            • copy: src=./tools/sersync/ dest=/usr/local/sersync owner=www group=www mode=755
            • - name: start sersync
            • shell: pgrep sersync;
            • [ $? -eq 0 ] || /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
      • 13.编写部署web服务的剧本:
        • 剧本流程:
          • (1)本地安装httpd
          • (2)修改配置文件,复制到/etc/ansible/ansible_playbook/conf
          • (3)挂载
          • (4)启动
        • vim web.yaml
          • - hosts: web
          • tasks:
          • - name: install httpd
          • yum: name=httpd state=installed
          • - name: mount nfs
          • mount: src=nfs:/data path=/var/www/html fstype=nfs state=mounted
          • - name: config httpd
          • copy: src=./conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
          • notify: restart httpd
          • - name: start httpd
          • service: name=httpd state=started enabled=yes
          • handlers:
          • - name: restart httpd
          • service: name=httpd state=restarted
        • 预运行检查语法:
          • ansible-playbook -C web.yaml
      • 至此所有剧本已编写好了,现在将这几个剧本依次汇总 集中来进行实际运行
      • vim main.yaml
        • - import_playbook: base.yaml
        • - import_playbook: rsync.yaml
        • - import_playbook: nfs.yaml
        • - import_playbook: sersync.yaml
        • - import_playbook: web.yaml
      • 预检测:ansible-playbook -C main.yaml
      • 执行:ansible-playbook main.yaml
    • 测试:在nfs的/data目录下编写一个网页 查看web服务器上的网页根目录是否同步到了网页
    • 再查看及时同步:nfs服务器中的/data目录下的文件,是否及时的自动备份到了 rsync服务器的/backup目录下
  • 易错的地方:
    • 如果rsync服务器的rsync服务起不来,可能需要从新在nfs服务器执行一下此命令:
      • /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
      • 或者是rsync服务器的配置文件没有修改:
        • vim /etc/rsyncd.conf
      • 也可能或是有了pid锁文件,导致服务被锁死
      • rsyncd --daemon 此命令也可以启动rsync

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

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

相关文章

【Vue3】toRefs和toRef在reactive中的一些应用

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

C++模板->模板的概念、函数模板基本语法、函数模板注意事项、普通函数与函数模板区别、普通函数与函数模板调用规则、模板的局限性

#include<iostream> using namespace std; //交换两个整型函数 void swapInt(int& a, int& b) { int temp a; a b; b temp; } //交换两个浮点型函数 void swapDouble(double& a, double& b) { double temp a; a b; b te…

MATLAB中gtext函数用法

目录 语法 说明 示例 使用鼠标将文本添加到图窗 指定字体大小和颜色 在创建后修改文本 gtext函数的功能是使用鼠标将文本添加到图窗。 语法 gtext(str) gtext(str,Name,Value) t gtext(___) 说明 gtext(str) 在使用鼠标选择的位置插入文本 str。当将鼠标指针悬停在图…

3个wordpress中文企业主题模板

农业畜牧养殖wordpress主题 简洁大气的农业畜牧养殖wordpress主题&#xff0c;农业农村现代化&#xff0c;离不开新农人、新技术。 https://www.jianzhanpress.com/?p3051 老年公寓wordpress主题 浅绿色简洁实用的老年公寓wordpress主题&#xff0c;适合做养老业务的老年公…

高标准农田仪器设备

在当今社会中&#xff0c;农业已经逐渐走向了一条科技化、智能化的道路。高标准农田建设成为了现代化农业发展的一个重要方向。为了更好地提高农产品的产量和品质&#xff0c;科技人员们不断地在农田设备上进行创造性的改进与升级&#xff0c;以达到更加高效、节能、环保、智能…

【C语言】注释

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

【国际化】用JQuery-i18next的国际化demo,引入json

参考&#xff1a; 使用 i18next 的 jQuery 国际化 &#xff08;i18n&#xff09; 渐进式指南 (locize.com) i18next-http-backend/example/jquery/index.html at master i18next/i18next-http-backend (github.com) 文档 可能需要解决一下跨域问题&#xff0c;因为浏览器读取本…

Unity学习之Unity中的MVC思想

文章目录 1 前言2 MVC的基本概念3 不使用MVC思想制作UI逻辑3.1 拼面板3.2 面板脚本3.3 角色面板逻辑3.4 角色升级 4 使用MVC思想制作UI逻辑4.1 Model数据脚本4.2 View界面脚本4.2.1 MainView主界面4.2.2 RoleView 角色面板界面 4.3 Controller业务逻辑脚本4.3.1 MainController…

phaseDNN文章解读

文章DOI: https://doi.org/10.48550/arXiv.1905.01389 作者是 Southern Methodist University 的Wei Cai 教授 A Parallel Phase Shift Deep Neural Network for Adaptive Wideband Learning 一种并行移相深度神经网络来自适应学习宽带频率信号 20190514 核心思想&#xff1a;…

跟着pink老师前端入门教程(JavaScript)-day05

六、语句 &#xff08;一&#xff09;表达式和语句 1、表达式 表达式是可以被求值的代码&#xff0c;JavaScript 引擎会将其计算出一个结果。 2、语句 语句是一段可以执行的代码。 比如&#xff1a; prompt() 可以弹出一个输入框&#xff0c;还有 if语句 for 循环语句等…

Socks5代理IP详解:优势与应用场景

Socks5代理IP作为网络代理技术的前沿选择&#xff0c;其在多方面的优势使其在2024年成为了热门选择。 一、Socks5代理IP的核心特性 1、Socks5代理IP与其他代理类型的比较 HTTP代理设计用于web浏览&#xff0c;仅支持HTTP和HTTPS协议。 Socks4代理支持更多类型的网络协议&…

欧拉回路和欧拉路径

在一张图中&#xff0c;从一个点出发每条边经过且只经过一次得到的路径&#xff0c;如果最后回到起点&#xff0c;那么就是欧拉回路&#xff0c;如果最后没有回到起点&#xff0c;那么得到的就是欧拉路径。 在无向图中&#xff0c;欧拉路径满足的要求是&#xff0c;除了起点和…

DM数据库学习之路(十六)DEM部署DM8DPC集群

DEM部署DPC集群 DPC准备工作 在所有安装DPC服务器上部署dmagent&#xff0c;dmagent的运行环境需要依赖JAVA环境&#xff0c;JAVA版本必须为JAVA1.8。 创建用户 所有安装DPC服务器&#xff0c;手工建dmdba用户 # groupadd dinstall # useradd -g dinstall -d /home/dmdba…

并发编程之深入理解Java线程

并发编程之深入理解Java线程 线程基础知识 线程和进程 进程 程序由指令和数据组成、但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须要将指令加载至CPU、数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的…

Jmeter内置变量 vars 和props的使用详解

JMeter是一个功能强大的负载测试工具&#xff0c;它提供了许多有用的内置变量来支持测试过程。其中最常用的变量是 vars 和 props。 vars 变量 vars 变量是线程本地变量&#xff0c;它们只能在同一线程组内的所有线程中使用&#xff08;线程组内不同线程之间变量不共享&#…

模型转换案例学习:等效替换不支持算子

文章介绍 Qualcomm Neural Processing SDK &#xff08;以下简称SNPE&#xff09;支持Caffe、ONNX、PyTorch和TensorFlow等不同ML框架的算子。对于某些特定的不支持的算子&#xff0c;我们介绍一种算子等效替换的方法来完成模型转换。本案例来源于https://github.com/quic/qidk…

并发编程(2)基础篇-管程

4 共享模型之管程 本章内容 共享问题synchronized线程安全分析Monitorwait/notify线程状态转换活跃性Lock 4.1 共享带来的问题 4.1.1 小故事 老王&#xff08;操作系统&#xff09;有一个功能强大的算盘&#xff08;CPU&#xff09;&#xff0c;现在想把它租出去&#xff…

2024 全国水科技大会暨第二届智慧水环境管理与技术创新论坛

论坛二&#xff1a;第二届智慧水环境管理与技术创新论坛 召集人&#xff1a;刘炳义 武汉大学智慧水业研究所所长、教授 为贯彻落实中共中央国务院印发《数字中国建设整体布局规划》和国务院关于印发《“十四五”数字经济发展规划》的通知&#xff0c;推动生态环境智慧治理&…

L2 清点代码库----PTA(疑问)

上图转自新浪微博&#xff1a;“阿里代码库有几亿行代码&#xff0c;但其中有很多功能重复的代码&#xff0c;比如单单快排就被重写了几百遍。请设计一个程序&#xff0c;能够将代码库中所有功能重复的代码找出。各位大佬有啥想法&#xff0c;我当时就懵了&#xff0c;然后就挂…

docker pullpush 生成镜像文件并push 到阿里云

pull docker docker pull ultralytics/ultralytics # 拉取yolov8的镜像仓库 docker run -it ultralytics/ultralytics # 运行镜像 conda create -n gsafety python3.8 # 创建环境 source activate gsafety # 激活环境 pip install -i https://pypi.tuna.tsinghua.edu.cn/simp…