Ansible 简介及部署 基础模块学习 ansible部署rsync 及时监控远程同步

  • Ansible介绍:
    • Ansible 是一个配置管理系统,当下最流行的批量自动化运维工具之一,它是一款开源的自动化工具,基于Python开发的配置管理和应用部署的工具。
    • Ansible 是基于模块工作的,它只是提供了一种运行框架,本身没有完成任务的能力,真正操作的是Ansible的模块
  • Ansible的特点:
    • 它无需Agent的存在,不需要在客户端上安装客户端软件,并非C/S软件,它是基于SSH协议来远程控制主机。
    • 安装后不需要启动服务
    • 依赖大量的Python模块扩展功能
    • 基于模块工作。可使用任意语言开发
    • 使用语言定制剧本playbook
    • ansible的大多数模块都具有幂等性
  • Ansible的优点:
    • 轻量级,无需在客户端上安装agent。
    • 批量任务执行可以写成脚本,而且不用分发到远程就可以执行
    • 使用python编写,维护更简单
    • 支持sudo
  • Ansible基础架构:
    • 连接插件(connecter plugins):用来连接主机,连接被管理端
    • 核心模块(core modules):连接主机,实现操作,依赖于具体模块来执行
    • 自定义模块:用户自己开发的功能模块
    • 剧本(playbook):将多个任务组合成一个剧本,由ansible自动批量执行
    • 主机清单(host inventory):定义ansible管理的客户端主机范围
  • 调用模块返回颜色显示:
    • 黄色 代表更改成功
    • 绿色 代表没有更改
    • 深红色 代表错误
    • 亮紫色 代表警告
  • Ansible的命令格式:
    • ansible 主机清单名 -m 调用的模块 -a 动作命令
  • Ansible 目录结构:
    • cd /etc/ansible/
      • ├── ansible.cfg #ansible的配置文件,一般无需修改
        • ├── hosts #ansible的主机清单,用于存储需要管理的远程主机的相关信息
        • └── roles/ #公共角色目录
  • Ansible环境部署:
    • 环境准备:管理端:192.168.8.5
      • 被管理端:192.168.8.6(WEB)
      • 被管理端:192.168.8.7(NFS)
      • 被管理端:192.168.8.8(rsync)
    • 环境拓扑图:
    • 实验步骤:
      • 建议将每台服务器的主机名更改为对应的主机名
      • 8.5:安装ansible
        • 先配置网络源(epel源)这里使用阿里源做演示(跳过)
        • 直接使用yum安装即可:
          • yum -y install ansible
        • 查看版本:
          • ansible --version
        • 配置清单:
          • vim /etc/ansible/hosts(ansible的主机清单,用于存储需要管理的远程主机的相关信息)
            • 添加以下内容(中括号内为组名):
              • [web]
              • 192.168.8.6
              • [nfs]
              • 192.168.8.7
              • [rsync]
              • 192.168.8.8
              • [benet:children](可以集中管理上面的三个组)
              • web
              • nfs
              • rsync
        • 配置对另外三台主机的免密访问:
          • ssh-keygen -t rsa
          • ssh-copy-id root@192.168.8.6
          • ssh-copy-id root@192.168.8.7
          • ssh-copy-id root@192.168.8.8
        • 列出所有模块:ansible-doc --list
        • 查看ansible模块帮助:ansible-doc yum
        • 使用模块举例:
          • 1.command模块:仅支持简单语法命令,但语句中不能包含管道符等复杂元素
            • 为web主机创建一个张三用户
              • ansible web -m command -a "useradd zhangsan"
              • 黄色代表命令执行更改成功

          • 2.shell模块:command升级版,支持复杂语句,但不支持别名
            • 为张三设置一个密码:
              • ansible web -m shell -a "echo 123 | passwd --stdin zhangsan"
              • 此时动作语句中涉及到管道符(特殊符号)所以要使用shell模块
          • 3.yum模块:在远程主机上安装与卸载软件包
            • 为web主机安装http服务
              • ansible web -m yum -a "name=httpd state=installed"
              • 命令解释:
                • name:安装的软件包名称,多个软件“,”,分割
                • state:服务状态:
                  • installed,present (安装软件包)
                  • removed,absent (卸载软件包)
                  • latest (安装最新软件包)
          • 4.copy模块:用于复制指定主机文件到远程主机
            • 将本机hosts文件传输至其他三台主机上:
              • ansible benet -m copy -a "src=/etc/hosts dest=/etc/hosts backup=yes"
              • copy模块常用参数:
                • dest:指出复制文件的目标及位置,使用绝对路径。
                • src:指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录。
                • mode:指出复制文件时,目标文件的权限
                • owner:指出复制文件时,目标文件的属主
                • group:指出复制文件时,目标文件的属组
                • content:指出复制到目标主机上的内容,不能与src一起使用
                • backup:覆盖到目标文件前,是否提前备份
          • 使用ansible远程配置rsync服务:
            • 8.5 :修改rsync配置文件,并传到rsync服务器上:
            • mkdir /etc/ansible/conf
            • cd /etc/ansible/conf/
            • cp /etc/rsyncd.conf ./
            • vim rsyncd.conf
              • 添加以下内容:
            • 将文件传输至8.8主机上:
              • ansible rsync -m copy -a "src=rsyncd.conf dest=/etc/rsyncd.conf backup=yes"
            • 远程启动rsync服务(此时用到systemd模块):
              • ansible rsync -m systemd -a "name=rsyncd state=restarted"
            • 创建rsync的源目录(此时用到file 模块):
              • ansible rsync -m file -a "path=/backup owner=root group=root recurse=yes mode=777"
            • 配置rsync服务器的密码文件:
              • ansible rsync -m copy -a "content='rsync_backup:1' dest=/etc/rsync.password owner=root group=root mode=600"
              • 查看密码文件是否创建成功:
                • ansible rsync -m shell -a "cat /etc/rsync.password"
            • 配置所有服务器的rsync连接密码文件:
              • ansible benet -m copy -a "content='1' dest=/etc/server.pass owner=root group=root mode=600"
            • 测试:备份web的httpd.conf配置文件:
              • ansible web -m shell -a "rsync -avz --password-file=/etc/server.pass /etc/httpd/conf/httpd.conf rsync_backup@192.168.8.8::backup"
            • 实时监控web服务器的网页根目录,有改动及时同步rsync
              • 添加及时监控软件,实现监控:
                • mkdir /etc/ansible/tools
                • cd /etc/ansible/tools/
                • 上传sersync目录(及时监控软件)
                  • cd /etc/ansible/tools/sersync/
                  • 查看两个配置文件
                  • 编辑配置文件:
                    • vim confxml.xml
                • 使用copy模块将文件传输至web服务器:
                  • ansible web -m copy -a "src=./sersync/ dest=/usr/local/sersync mode=755"
                • ansible web -m shell -a "/usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml"
                • 验证 :生成一个网页,将它传输给web服务器:
                  • echo "<h1><marquee>www.httpd.conf</marquee></h1>" > index.html
                  • ansible web -m copy -a "src=./index.html dest=/var/www/html/index.html"
                • 查看是否同步至到了rsync服务器上:
                  • 此时rsync服务器的共享目录,跟随web服务器的网页根目录进行及时的变动
  • 5.service模块:
    • 关闭httpd服务:ansible web -m service -a "name=httpd state=stopped"
    • 注释:
      • name = 服务名
      • state = 指定服务运行状态
        • started 开启服务
        • stopped 关闭服务
        • reloaded 重载服务
        • restarted 重启服务
        • enabled 是否开机自启
  • 6.group 模块
    • 在所有清单主机上创建组www,gid
      • ansible all -m group -a "name=www gid=666"
    • 在所有清单主机上删除组www,gid
      • ansible all -m group -a "name=www gid=666 state=absent"
  • 7.user 模块
    • 在所有主机清单上创建用户www
      • ansible all -m user -a "name=www"
  • 8.file 模块
    • 创建目录,赋予权限,更改属主属组(recurse=yes 等同于 state=directory)
      • ansible rsync -m file -a "path=/cwb owner=root group=root recurse=yes mode=777"
    • 创建文件(state=touch):
      • ansible rsync -m file -a "path=/cwb/test.txt owner=root group=root state=touch mode=777"
    • 删除文件 (state=absent)
      • ansible rsync -m file -a "path=/cwb/test.txt state=absent"
  • 9.mount 模块(以nfs共享文件挂载为例)
    • 先创建在nfs服务器上创建共享文件
      • ansible nfs -m file -a "path=/nfs owner=root group=root recurse=yes mode=777"
    • 编辑exports文件
      • vim exports
      • 添加: /nfs 192.168.8.0/24(rw,sync,no_root_squash)
    • 将export复制到nfs服务器上:
      • ansible nfs -m copy -a "src=exports dest=/etc/exports"
    • 启动nfs-utils服务与rpcbind服务
      • ansible nfs -m systemd -a "name=nfs state=restarted"
      • ansible nfs -m systemd -a "name=rpcbind state=restarted"
    • 将nfs共享目录挂载至web服务器的网页根目录下
      • ansible web -m mount -a "src=192.168.8.7:/nfs path=/var/www/html fstype=nfs state=mounted"
    • 注释:
      • state = 挂载状态
        • mounted 挂载
        • unmounted 卸载
  • 10.script 脚本模块
    • 在ansible上编写任意脚本测试(这里以安装mariadb数据库的脚本为例)
      • 在本机生成脚本
        • cat >> /root/test.sh << EOF
        • #!/bin/bash
        • rm -rf /var/run/yum.pid
        • yum -y install mariadb-server mariadb
        • systemctl start mariadb
        • systemctl enable mariadb
        • mysql -uroot -e "create database hehe;"
        • mysql -uroot -e "show databases;"
        • EOF
      • 将脚本直接运行在web服务器上(无需将脚本文件传输至web服务器)
        • ansible web -m script -a "/root/test.sh"

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

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

相关文章

5G网络建设 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 现需要在某城市进行5G网络建设&#xff0c;已经选取N个地点设置5G基站&#xff0c;编号固定为1到N&#xff0c; 接下来需要各个基站之间使用光纤进行连接以确保基…

Stable Diffusion 绘画入门教程(webui)-ControlNet(IP2P)

上篇文章介绍了深度Depth&#xff0c;这篇文章介绍下IP2P&#xff08;InstructP2P&#xff09;, 通俗理解就是图生图&#xff0c;给原有图加一些效果,比如下图&#xff0c;左边为原图&#xff0c;右边为增加了效果的图&#xff1a; 文章目录 一、选大模型二、写提示词三、基础参…

计算机网络:思科实验【1-访问WEB服务器】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;Cisco Packet Tracer实验 本文对应的实验报告源文件请关注微信公众号程序员刘同学&#xff0c;回复思科获取下载链接。 实验目的实验环境实验内容熟悉仿真软件访问WEB服务器 实验体会总结…

Python实战:xlsx文件的读写

Python实战&#xff1a;xlsx文件的读写 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望得到您的订阅和支持~ &#…

中断系统(详解与使用)

讲解 简介 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。 假设一个人在家看电视,这时候突然门铃响了,这个人此时就要停止看电视去开门,然后关上门后继续回来…

PyTorch:transforms.Normalize()函数详解

PyTorch&#xff1a;transforms.Normalize()函数详解 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望得到您的订阅和…

考研西电(833),考什么?计算机组成原理第一章要点

目录 1.1 计算机的发展历史&#xff08;必须要了解的知识点&#xff09;1.1.1 发展历史1.1.2 摩尔定律★★ 1.2 计算机的基本组成1.2.1 硬件系统1.2.2 软件系统1.2.3 指令集系结构1.2.4 高级语言程序的执行过程 1.3 计算机的层次概念1.3.1 计算机系统的层次结构1.3.2 计算机体系…

React18源码: reconcliler启动过程

Reconcliler启动过程 Reconcliler启动过程实际就是React的启动过程位于react-dom包&#xff0c;衔接reconciler运作流程中的输入步骤.在调用入口函数之前&#xff0c;reactElement(<App/>) 和 DOM对象 div#root 之间没有关联&#xff0c;用图片表示如下&#xff1a; 在启…

TiDB 社区智慧合集丨TiDB 相关 SQL 脚本大全

非常感谢各位 TiDBer 在之前 【TiDBer 唠嗑茶话会 48】非正式 TiDB 相关 SQL 脚本征集大赛&#xff01;( https://asktug.com/t/topic/996635 )里提供的各种常用脚本。 在这篇文章中&#xff0c;我们整理了社区同学提供的一系列 TiDB 相关 SQL 脚本&#xff0c;希望能为大家在…

C++基础知识(六:继承)

首先我们应该知道C的三大特性就是封装、继承和多态。 此篇文章将详细的讲解继承的作用和使用方法。 继承 一个类&#xff0c;继承另一个已有的类&#xff0c;创建的过程 父类(基类)派生出子类(派生类)的过程 继承提高了代码的复用性 【1】继承的格式 class 类名:父类名 {}; 【…

机器视觉选型:如何选择一个合适光源控制器

在机器视觉系统中&#xff0c;选择合适的光源及其控制器对于确保高质量图像捕获和处理至关重要。本文会提供一些建议&#xff0c;以便于引导您了解如何基于应用需求选择最合适的光源和光源控制器。 1. 理解光源的功率需求 不同类型的光源具有不同的功率需求&#xff0c;这直接…

汽水分离器——矿用分离过滤装置

去找一个奋发向上能带动你的人&#xff0c;去找一个像太阳一样的人&#xff0c;帮你晒晒全部不值一提的迷茫! 一、结构&#xff1a; 气水分离器又称气水分离过滤器&#xff0c;主要由&#xff1a;进口、筒体、滤芯连接件、滤芯、密封圈、阀门连接件、出气管、排水口、压力表等…

多人协作记账账本小程序开源版开发

多人协作记账账本小程序开源版开发 支持多人协作的记账本小程序&#xff0c;可用于家庭&#xff0c;团队&#xff0c;组织以及个人的日常收支情况记录&#xff0c;支持周月年度统计 便捷记账 便捷的记账方式&#xff0c;支持多种记账类型&#xff0c;快捷切换账本等 多账本 支…

JavaScript的内存管理与垃圾回收

前言 JavaScript提供了高效的内存管理机制&#xff0c;它的垃圾回收功能是自动的。在我们创建新对象、函数、原始类型和变量时&#xff0c;所有这些编程元素都会占用内存。那么JavaScript是如何管理这些元素并在它们不再使用时清理它们的呢&#xff1f; 在本节中&#xff0c;…

汽车大灯尾灯破裂修复用什么胶?

汽车大灯尾灯破裂可以使用硅酮玻璃胶或者环氧树脂胶进行修复。 硅酮玻璃胶的优点主要包括&#xff1a; 粘接力强&#xff1a;硅酮玻璃胶具有很强的粘接力&#xff0c;可以有效地将裂缝两侧的材料紧密粘合在一起。拉伸强度大&#xff1a;硅酮玻璃胶固化后形成的固体具有较高的…

VM-UNet: Vision Mamba UNet for Medical Image Segmentation

VM-UNet: 基于纯 Mamba 架构的医学图像分割模型 论文地址&#xff1a;https://arxiv.org/abs/2402.02491 项目地址&#xff1a;https://github.com/JCruan519/VM-UNet Abstract 在医学图像分割领域&#xff0c;基于CNN和基于Transformer的模型都得到了广泛的探索。然而&#…

基于Android的记单词App系统的研究与实现,附附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Mamba 作者谈 LLM 未来架构

文章目录 前言 1、为什么注意力机制有效&#xff1f; 2、注意力计算量呈平方级增长 3、Striped Hyena 是个什么模型&#xff1f; 4、什么是 Mamba? 5、Mamba 硬件优化 6、2024年架构预测 7、对 AI 更多的预测 本片文章来自【机器之心】对Mamba作者进行采访所进行的编译整理。 …

springboot+vue项目部署配置开机自启动

1.前端部属 下载nginx解压&#xff0c;在nginx\conf下找到nginx.conf 添加如下代码 server {listen 8081;server_name localhost;charset utf-8;location / {root F:/1ceshi/dist; #前端打包路径try_files $uri $uri/ /index.html;index index.html index.htm;}l…

【动态规划】【前缀和】【推荐】2463. 最小移动总距离

作者推荐 【广度优先搜索】【网格】【割点】【 推荐】1263. 推箱子 本文涉及知识点 动态规划汇总 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 2463. 最小移动总距离 X 轴上有一些机器人和工厂。给你一个整数数组 robot &#xff0c…