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.hqwc.cn/news/484250.html

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

相关文章

行人重识别综述——下

上一篇 https://blog.csdn.net/m0_60388871/article/details/136177398?spm1001.2014.3001.5501 3 OPEN-WORLD PERSON RE-IDENTIFICATION 3.1 Heterogeneous Re-ID 基于深度的Re-ID: 利用深度图像捕捉人体形状和骨骼信息,这对于在光照变化或衣物更换环…

苹果iPad通过Code APP应用实现SSH连接服务器远程进行开发

文章目录 1. 在iPad下载Code APP2.安装cpolar内网穿透2.1 cpolar 安装2.2 创建TCP隧道 3. iPad远程vscode4. 配置固定TCP端口地址4.1 保留固定TCP地址4.2 配置固定的TCP端口地址4.3 使用固定TCP地址远程vscode 本文主要介绍开源iPad应用IDE Code App 如何下载安装,并…

力扣_字符串11—实现前缀树(字典树、Trie树)

题目 方法 对于每一个节点&#xff0c;初始化一个长度为26的数组&#xff0c;用来存储对应字母子节点的地址对于每一个节点&#xff0c;初始化一个 b o o l bool bool 变量用来表示是否为叶子节点 代码 class Trie { private:vector<Trie*> children vector<Trie…

Three.js初学(2)

Three.js初学&#xff08;2&#xff09; 三维坐标系的认识1. 辅助坐标系 光源的影响1. 光材质的影响2. 光源介绍点光源环境光平行光 3. 光源衰减/位置 相机控件1. 引入扩展库2. 使用方法 三维坐标系的认识 这一章节的主要作用是加强自我对三维坐标空间的认识。 1. 辅助坐标系…

MySQL 8.0.36 WorkBench安装

一、下载安装包 百度网盘链接&#xff1a;点击此处下载安装文件 提取码&#xff1a;hhwz 二、安装&#xff0c;跟着图片来 选择Custom,然后点Next 顺着左边框每一项的加号打开到每一个项的最底层&#xff0c;点击选中最底层的项目&#xff0c;再点击传过去右边的绿色箭头&a…

springboot207基于springboot的实习管理系统

实习管理系统的设计与实现 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定实习管理系统的总体功…

[WebDav] WebDav基础知识

文章目录 什么是WebDavWebDav常用命令WebDav常用命令的测试&#xff08;代码&#xff09;PROPFIND 方法测试PUT 方法测试GET 方法测试PROPPATCH方法 WebDav缓存Cache-ControlEtag测试 强制重新验证不需要缓存 WebDav的锁WebDav的状态码WebDav身份验证WebDav版本控制WebDav和FTP…

【代码随想录算法训练营Day24】● 回溯法理论基础 ● 77. 组合

文章目录 Day 24 第七章 回溯算法part01理论基础什么是回溯使用原因 & 解决的问题如何理解回溯法 77. 组合思路剪枝代码 Day 24 第七章 回溯算法part01 今日内容&#xff1a; ● 理论基础● 77. 组合 理论基础 其实在讲解二叉树的时候&#xff0c;就给大家介绍过回溯&am…

win系统下安装php8.3版本并配置环境变量的详细教程

本篇文章主要讲解在win系统下安装和配置php8.3版本&#xff0c;并配置环境变量的详细教程。 日期&#xff1a;2024年2月22日 作者&#xff1a;任聪聪 一、下载php8.3版本包 php8.3版本官方下载地址&#xff1a;https://windows.php.net/download#php-8.3 步骤一、打开下载地址…

【鸿蒙 HarmonyOS 4.0】网络请求

一、介绍 资料来自官网&#xff1a;文档中心 网络管理模块主要提供以下功能&#xff1a; HTTP数据请求&#xff1a;通过HTTP发起一个数据请求。WebSocket连接&#xff1a;使用WebSocket建立服务器与客户端的双向连接。Socket连接&#xff1a;通过Socket进行数据传输。 日常…

OceanBase数据迁移-从MySQL导入数据到OceanBase

把MySQL中的数据导入到OceanBase&#xff0c;分几个步骤&#xff1a; 1.准备一份MySQL测试数据集2.使用mydumper工具导出MySQL数据3.使用myloader工具导入到OceanBase4.验证测试数据集在OceanBase下的执行情况 1.准备一份MySQL测试数据集 1.1.从github下载mysql测试数据集&a…

【PX4SimulinkGazebo联合仿真】在Simulink中使用ROS2控制无人机沿自定义圆形轨迹正向飞行(带偏航角控制)并在Gazebo中可视化

在Simulink中使用ROS2控制无人机沿自定义圆形轨迹正向飞行&#xff08;带偏航角控制&#xff09;并在Gazebo中可视化 系统架构Matlab官方例程Control a Simulated UAV Using ROS 2 and PX4 Bridge运行所需的环境配置PX4&Simulink&Gazebo联合仿真实现方法建立Simulink模…