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://www.mzph.cn/news/699600.shtml

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

相关文章

STM32控制max30102读取血氧心率数据(keil5工程)

一、前言 MAX30102是一款由Maxim Integrated推出的低功耗、高精度的心率和血氧饱和度检测传感器模块&#xff0c;适用于可穿戴设备如智能手环、智能手表等健康管理类电子产品。 该传感器主要特性如下&#xff1a; &#xff08;1&#xff09;光学测量&#xff1a;MAX30102内置…

nginx-------- 高性能的 Web服务端 (三) 验证模块 页面配置

一、http设置 1.1 验证模块 需要输入用户名和密码 htpasswd 此命令来自于 httpd-tools 包&#xff0c;如果没有安装 安装一下即可 也可以安装httpd 直接yum install httpd -y 也一样 第一次生成文件htpasswd -c 文件路径 姓名 交互式生成密码 htpasswd -bc 文…

c语言的数据结构:找环状链表入口处

一起<(&#xffe3;︶&#xffe3;)↗[GO!] 1.如何判断一个链表是否有环 思路:设定两个快慢指针fast和slow,fast每次走两个结点,slow每次走一个节点 如果fast指针遇到了Null,那么这个链表没有环,如果fast和slow可以相遇,则代表这个链表有环 代码如下 N:fast先进环,slow后…

[C#]winform基于opencvsharp结合CSRNet算法实现低光图像增强黑暗图片变亮变清晰

【算法介绍】 "Conditional Sequential Modulation for Efficient Global Image Retouching" 是一种图像修饰方法&#xff0c;主要用于对图像进行全局的高效调整。该方法基于深度学习技术&#xff0c;通过引入条件向量来实现对图像特征的调制&#xff0c;以达到改善…

DAY28--learning English

一、积累 1.hood 2.peripheral 3.gallery 4.cord 5.cart 6.permanent 7.democratic 8.republican 9.bride 10.jet-lagged 11.vet 12.lease 13.landlord 14.aisle 15.lousy 16.via 17.order in 18.forecast 19.initiation 20.credit 二、练习 1.牛津原译 Hood /hʊd/ 1. a par…

一次有趣的nginx Tcp4层代理转发的试验

nginx主配置文件添加配置&#xff1a; stream {log_format proxy $remote_addr [$time_local] $protocol status:$status bytes_sent:$bytes_sent bytes_received:$bytes_received $session_time upstream_addr:"$upstream_addr" "$upstream_bytes_sent" …

[c++]实例观察返回值优化

1 返回值优化现象 RVO 如下代码&#xff0c;在 MakeObj() 中创建了一个局部对象 obj&#xff0c;并将 obj 返回。 Test() 函数调用了 MakeObj()&#xff0c;并将 MakeObj() 的返回值赋值给了 obj。 按我们的预期&#xff0c;MakeObj() 是值返回&#xff0c;在 main() 调用 Tes…

2.1tarjian算法求解双连通分量

P2860 [USACO06JAN] Redundant Paths G 就是说通过加边&#xff0c;使得图中的每一点都不是割点&#xff0c;就是让连通图中没有桥&#xff0c;没有割点 并非是桥的数量-1 边双连通分量即一个无向图中&#xff0c;去掉一条边后仍互相连通的极大子图。&#xff08;单独的一个…

基于编译器的静态代码分析与软件开发效率、质量和性能

基于编译器的静态代码分析与软件开发效率、质量和性能 本文节选自《基础软件之路&#xff1a;企业级实践及开源之路》一书&#xff0c;该书集结了中国几乎所有主流基础软件企业的实践案例&#xff0c;由 28 位知名专家共同编写&#xff0c;系统剖析了基础软件发展趋势、四大基…

袁庭新ES系列10节 | 使⽤kibana对⽂档操作

前言 在前面的小节中&#xff0c;我们已经给大家介绍了Elasticsearch中文档的相关概念&#xff0c;想必有些同学都已经忘记了&#xff0c;那我们一块儿再来回顾下&#xff0c;文档即索引库中某个类型下的数据&#xff0c;会根据规则创建索引&#xff0c;将来用来搜索。可以类比…

HTML+CSS:动态搜索框

效果演示 这段代码实现了一个简单的搜索栏效果。页面背景为从天蓝色到深蓝色的渐变色&#xff0c;搜索栏包括一个圆形背景的搜索图标和一个输入框。当用户点击搜索图标时&#xff0c;输入框会从搜索图标的位置滑出&#xff0c;显示一个输入框和一个清除按钮。用户可以在输入框中…

Unity(第三部)新手绘制地形

1、创建地形 游戏对象3d对象地形 2、功能 1、 红框内按键为创建相邻地形、点击后相近地形会呈现高亮框、点击高亮区域可以快速创建地形 每块地形面积是1km*1km 2、第二个按钮是修改地形 下面的选择是修改类型 选项含义描述Raise or Lower Terrain升高或降低地形单击左键可…

pikachu靶场-File Inclusion

介绍&#xff1a; File Inclusion(文件包含漏洞)概述 文件包含&#xff0c;是一个功能。在各种开发语言中都提供了内置的文件包含函数&#xff0c;其可以使开发人员在一个代码文件中直接包含&#xff08;引入&#xff09;另外一个代码文件。 比如 在PHP中&#xff0c;提供了&…

5G网络(接入网+承载网+核心网)

5G网络&#xff08;接入网承载网核心网&#xff09; 一、5G网络全网架构图 这张图分为左右两部分&#xff0c;右边为无线侧网络架构&#xff0c;左边为固定侧网络架构。 无线侧&#xff1a;手机或者集团客户通过基站接入到无线接入网&#xff0c;在接入网侧可以通过RTN或者IP…

如何在Linux Ubuntu系统使用Docker快速部署MongoDB并公网访问

文章目录 前言1. 安装Docker2. 使用Docker拉取MongoDB镜像3. 创建并启动MongoDB容器4. 本地连接测试5. 公网远程访问本地MongoDB容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 前言 本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署Mon…

互联网加竞赛 机器视觉 opencv 深度学习 驾驶人脸疲劳检测系统 -python

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#x…

8.qt5使用opencv的库函数打开图片

1.配置opencv动态库的环境变量 2.在创建的qt工程中加入如下opencv代码&#xff0c;具体代码如下&#xff1a; 使用opencv库函数显示图片

Linux进一步研究权限-----------ACL使用

一、使用情况 1.1、场景: 某个大公司&#xff0c;在一个部门&#xff0c;有一个经理和手下有两个员工&#xff0c;在操控一个Linux项目,项目又分为三期做&#xff0c;然而一期比较重要&#xff0c;经理带着员工做完了&#xff0c;公司就觉得技术难点已经做完攻克了&#xff0…

【自然语言处理-二-attention注意力 是什么】

自然语言处理二-attention 注意力机制 自然语言处理二-attention 注意力记忆能力回顾下RNN&#xff08;也包括LSTM GRU&#xff09;解决memory问题改进后基于attention注意力的modelmatch操作softmax操作softmax值与hidder layer的值做weight sum 计算和将计算出来的和作为memo…

《Python 语音转换简易速速上手小册》第1章 Python语音处理概述(2024 最新版)

文章目录 1.1 语音处理的基础1.1.1 基础知识1.1.2 主要案例:自动语音识别系统案例介绍案例 Demo案例分析1.1.3 扩展案例 1:智能虚拟助手案例介绍案例 Demo案例分析1.1.4 扩展案例 2:情感分析系统案例介绍案例 Demo