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"

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

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

相关文章

【深度学习】Pytorch 系列教程(七):PyTorch数据结构:2、张量的数学运算(5):二维卷积及其数学原理

文章目录 一、前言二、实验环境三、PyTorch数据结构1、Tensor&#xff08;张量&#xff09;1. 维度&#xff08;Dimensions&#xff09;2. 数据类型&#xff08;Data Types&#xff09;3. GPU加速&#xff08;GPU Acceleration&#xff09; 2、张量的数学运算1. 向量运算2. 矩阵…

书生·浦语大模型实战营第四节课作业

基础作业 fintune过程 这里要注意下。 合并完参数的模型再进行网页部署时&#xff0c;需要用到InternLM源码&#xff0c;教程里面忽略了需要commit版本。通过以下命令转到所需版本&#xff0c;然后就可以看到web_demo.py。 cd InternLM git checkout 3028f07cb79e5b1d7342f4…

Servlet实现图片的上传和显示

本篇文章是在上一篇文章上改进而来 一、图片上传需要引用的jar包 链接&#xff1a;https://pan.baidu.com/s/17FLjlWlNEG5YnS_dl3C8WA 提取码&#xff1a;wbis 二、最后的结果 三、更改数据库增加图片路径字段path 四、前端页面增加图片上传按钮,和上传的复选框 代码 上传…

ChatGPT 4.0 升级指南

1.ChatGPT 是什么&#xff1f; ChatGPT 是由 OpenAI 开发的一种基于人工智能的聊天机器人&#xff0c;它基于强大的语言处理模型 GPT&#xff08;Generative Pre-trained Transformer&#xff09;构建。它能够理解人类语言&#xff0c;可以为我们解决实际的问题。 1.模型规模…

vue+node.js美食分享推荐管理系统 io551

&#xff0c;本系统采用了 MySQL数据库的架构&#xff0c;在开始这项工作前&#xff0c;首先要设计好要用到的数据库表。该系统的使用者有二类&#xff1a;管理员和用户&#xff0c;主要功能包括个人信息修改&#xff0c;用户、美食类型、美食信息、订单信息、美食分享、课程大…

Camunda7.18流程引擎启动出现Table ‘camunda_platform_docker.ACT_GE_PROPERTY‘的解决方案

文章目录 1、问题描述2、原因分析3、解决方案3.1、方案一&#xff1a;降低mysql版本3.2、方案二&#xff1a;增加nullCatalogMeansCurrent参数&#xff08;推荐&#xff09; 4、总结 1、问题描述 需要在docker中&#xff0c;部署Camunda流程引擎。通过启动脚本camunda-platfor…

【LeetCode-337】打家劫舍III(动态规划)

目录 题目描述 解法1&#xff1a;动态规划 代码实现 题目链接 题目描述 在上次打劫完一条街道之后和一圈房屋后&#xff0c;小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为“根”。 除了“根”之外&#xff0c;每栋房子有且只有一个“父“…

JVM内存随着服务器内存的升高而升高问题排查

一、故障描述 公司测试环境和线上环境&#xff0c;都会有&#xff1a;JVM内存随着服务器内存的升高而升高 这种问题 二、排查 1、linux服务器上使用htop查看java项目内存占比&#xff0c;给最大最小推内存300m&#xff0c;但是实际上超出一倍 2、排查方案 a、通过后面的学习…

Games 103 作业四

Games 103 作业四 第四次作业就是流体模拟了&#xff0c;作业中给了若干的实现步骤&#xff0c;以及一些模板代码。 首先第一步&#xff0c;在update函数的开头&#xff0c;加载水面mesh的高度&#xff0c;然后在update的结束时&#xff0c;把计算后的高度更新到mesh中。这个很…

CSDN原力值怎么提升?

文章目录 前言一、原力值怎么看二、提升原力值的方法1.原力值↑2.原力值↓提示!!!禁止在csdn网站内进行违规行为!!! 结束语 前言 在前面一篇文章中&#xff0c;我讲了付费收看的条件&#xff0c;有需要的先把网址收藏起来&#xff01; https://blog.csdn.net/m0_69481332/arti…

【坑】Spring Boot整合MyBatis,一级缓存失效

一、Spring Boot整合MyBatis&#xff0c;一级缓存失效 1.1、概述 MyBatis一级缓存的作用域是同一个SqlSession&#xff0c;在同一个SqlSession中执行两次相同的查询&#xff0c;第一次执行完毕后&#xff0c;Mybatis会将查询到的数据缓存起来&#xff08;缓存到内存中&#xf…

【Java面试系列】Nginx

目录 为什么要用Nginx&#xff1f;为什么Nginx性能这么高&#xff1f;Nginx 是如何实现高并发的&#xff1f; Nginx怎么处理请求的&#xff1f;Nginx的工作流程 给 favicon.ico 和 robots.txt 设置过期时间; 这里为 favicon.ico 为 99 天,robots.txt 为 7 天并不记录 404 错误日…

前沿科技速递——YOLOv9

随着YOLO系列的不断迭代更新&#xff0c;前几天&#xff0c;YOLO系列也迎来了第九个大型号的更新&#xff01;YOLOv9正式推出了&#xff01;附上原论文链接。 arxiv.org/pdf/2402.13616.pdf 同样是使用MS COCO数据集进行对比比较&#xff0c;通过折线图可看出AP曲线在全方面都…

2024比较赚钱的项目是什么?亲身经历,月入过万!

我是电商珠珠 年后找项目这件事&#xff0c;成为了部分人所焦虑的一点&#xff0c;有的想要兼职&#xff0c;有的在考虑全职。至于做什么还没有一丝头绪。大家都知道短视频很火&#xff0c;于是有直播能力的人就吃上了流量红利&#xff0c;开始做达人带货&#xff0c;拍视频接…

Linux下“一切皆文件”

“Linux下一切皆文件” Linux 下一切皆文件这个说法是指 Linux 系统中的一种设计理念&#xff0c;即将所有设备、资源和进程等抽象为文件或文件夹的形式。这种设计理念的好处在于统一了对待不同类型资源的方式&#xff0c;提供了统一的接口和工具来进行管理和操作。 Linux 下…

Flutter Slider自定义滑块样式 Slider的label标签框常显示

1、自定义Slider滑块样式 Flutter Slider控件的滑块系统样式是一个圆点&#xff0c;thumbShape默认样式是RoundSliderThumbShape&#xff0c;如果想要使用其它的样式就需要自定义一下thumbShape&#xff1b; 例如需要一个上图样式的&#xff08;圆点半透明圆形边框&#xff09…

freeswitch 权威指南 --- 高级篇

官网文档&#xff1a;https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/ 关于 freeswitch 的公开教程&#xff1a;https://zhuanlan.zhihu.com/p/451981734 内容来自 《FreeSWITCH 权威指南》&#xff1a;目录&#xff1a;https://juejin.cn/post/702058079…

2024全国水科技大会暨流域水环境治理与水生态修复论坛(六)

论坛召集人 冯慧娟 中国环境科学研究院流域中心研究员 刘 春 河北科技大学环境与工程学院院长、教授 一、会议背景 为深入贯彻“山水林田湖是一个生命共同体”的重要指示精神&#xff0c;大力实施生态优先绿色发展战略&#xff0c;积极践行人、水、自然和谐共生理念&…

软件游戏报错d3dcompiler_43.dll缺失,提供多个方法修复d3dcompiler_43.dll

当电脑系统缺失 d3dcompiler_43.dll 文件时&#xff0c;尝试打开依赖于该文件的软件时&#xff0c;通常会遇到以下几种情况&#xff1a; 启动失败&#xff1a; 软件在启动过程中可能会立即停止响应或弹出错误消息&#xff0c;指出“找不到 d3dcompiler_43.dll”、“无法启动此…

LabVIEW开发FPGA的高速并行视觉检测系统

LabVIEW开发FPGA的高速并行视觉检测系统 随着智能制造的发展&#xff0c;视觉检测在生产线中扮演着越来越重要的角色&#xff0c;尤其是在质量控制方面。传统的基于PLC的视觉检测系统受限于处理速度和准确性&#xff0c;难以满足当前生产需求的高速和高精度要求。为此&#xf…