专栏首页小白博客LINUX运维学习之综合架构篇——Ansible 批量管理服务上

LINUX运维学习之综合架构篇——Ansible 批量管理服务上

1、什么是ansible

  1. ansible 是一个基于Python开发的自动化运维工具
  2. 其功能实现基于SSH远程连接服务
  3. ansible可以实现批量系统配置、批量软件部署、批量文件拷贝、批量运行命令等功能
  4. ansible官方网站:https://docs.ansible.com/

2、ansible 的特点

  1. 列表项目不需要安装客户端。基于系统自带的sshd服务
  2. 不需要服务端
  3. 需要依靠大量的模块实现批量管理功能
  4. 配置文件/etc/ansible/ansible.cfg

3、ansible 批量管理服务意义

  1. 提高工作效率
  2. 提高工作准确度
  3. 减少维护的成本
  4. 减少重复性工作

4、ansible 批量管理服务功能

  1. 可以实现批量系统操作配置
  2. 可以实现批量软件服务部署
  3. 可以实现批量文件数据分发
  4. 可以实现批量系统信息收集

常用模块

模块说明

command

执行命令模块,ansible命令执行默认模块

shell

执行shell脚本模块

script

把脚本发到客户端,然后执行,执行脚本命令在远端服务器上

copy

把文件发送到远端

file

设定文件属性模块

service

系统服务管理模块

cron

定时任务管理模块

yum

yum软件包安装管理模块

synchronize

使用rsync同步文件模块

5、ansible 批量管理服务部署

管理端服务器

1、安装部署软件

    yum install -y ansible

2、需编写主机清单文件

vim /etc/ansible/hosts

添加需要管理的主机的IP地址

定义可以管理的主机的信息

    172.16.1.31 
    172.16.1.41 
    172.16.1.7

3、测试是否可以管理多个主机,由于我没开1.7 的主机会报个错,影响不大

    ansible all -a "hostname"

6、ansible服务架构信息

1、主机清单配置 2、 软件模块信息 3、 基于秘钥连接主机 4、 主机需要关闭selinux 5、 软件剧本功能 7、ansible 软件模块应用 ansible官方网站:https://docs.ansible.com/ 模块的应用语法格式: ansible 主机名称/主机组名称/主机地址信息/all -m(指定应用的模块信息) 模块名称 -a(指定动作信息) "执行什么动作" 命令类型模块:

command   – Executes a command on a remote node

在一个远程主机上执行一个命令

    ansible 172.16.1.31 -m command -a "hostname"

拓展应用: 1、chdir Change into this directory before running the command. 在执行命令之前对目录进行切换

      ansible 172.16.1.31 -m coomand -a "chdir=/tmp touch test.txt"

如果不加chdir=/tmp,默认在/root下创建 2、creates If it already exists, this step won’t be run. 若是文件存在了,不执行命令操作

       ansible 172.16.1.31 -m command -a "creates=/tmp/hosts chdir=/tmp touch test.txt"

3、removes If it already exists, this step will be run. 若是文件存在,这个步骤将执行

    ansible 172.16.1.31 -m command -a “removes=/tmp/hosts chdir=/tmp touch oldboy.txt”

4、free_form(required) The command module takes a free form command to run. There is no parameter actually named ‘free form’. See the examples! 使用command模块的时候,-a参数后面必须写上一个合法linux命令信息 注意事项: 有些符号信息无法识别: <", ">", "|", ";" and "&" 7、第二个模块:shell (万能模块)

shell   – Execute commands in nodes

在节点上执行操作 用法:

    ansible 172.16.1.31 -m shell -a "hostname"
    ansible 172.16.1.31 -m shell -a "cd /tmp;pwd"

实践应用: 利用shell执行脚本 第一个步骤: 编写一个脚本

    vim /server/scripts/yum.sh
    #!/bin/bash
    yum install -y htop

第二个步骤: 将脚本发送到远程主机

    scp -rp yum.sh 172.16.1.31:/server/scripts

第三个步骤: 将脚本权限进行修改(添加执行权限)

    ansible 172.16.1.31 -m shell -a "chmod +x /server/scripts/yum.sh"

第四个步骤: 运行ansible命令执行脚本

    ansible 172.16.1.31 -m shell -a "/server/scripts/yum.sh"

rpm -e htop --nodeps 卸载软件 8、script (万能模块) 第一个步骤: 编写一个脚本 第二个步骤: 运行ansible命令执行脚本

    ansible 172.16.1.31 -m scripts -a "/server/scripts/yum.sh"

PS: scripts模块参数功能和command模块类似 9、文件类型模块: copy – Copies files to remote locations 将数据信息进行批量分发 基本用法:

    ansible 172.16.1.31 -m copy -a "src=/etc/hosts dest=/root"
    172.16.1.31 | CHANGED => {       --- 对哪台主机进行操作
            "changed": true,             --- 是否对主机信息进行改变
            "checksum": "6ed7f68a1d6b4b36c1418338b2001e421eeba270",    --- 生成一个文件校验码==MD5数值
            "dest": "/etc/hosts",        --- 显示目标路径信息  
            "gid": 0,                    --- 显示复制后文件gid信息
            "group": "root",             --- 显示复制后文件属组信息
            "md5sum": "7afd7b74854f0aaab646b3e932f427c0",              --- 生成一个文件校验码==MD5数值
            "mode": "0644",              --- 显示复制后文件权限信息
            "owner": "root",             --- 显示复制后文件属主信息
            "size": 401,                 --- 显示文件的大小信息
            "src": "/root/.ansible/tmp/ansible-tmp-1557804498.23-26487341925325/source", 
            "state": "file",             --- 显示文件的类型信息
            "uid": 0                     --- 显示复制后文件uid信息
        }

补充说明: ansible软件输出颜色说明:

  1. 绿色信息: 查看主机信息/对主机未做改动
  2. 黄色信息: 对主机数据信息做了修改
  3. 红色信息: 命令执行出错了
  4. 粉色信息: 忠告信息
  5. 蓝色信息: 显示ansible命令执行的过程 拓展应用:
  6. 在传输文件是修改文件是属主和属组信息
        ansible 172.16.1.31 -m copy -a "src=/etc/hosts dest=/root owner=oldboy group=oldboy"
  1. 在传输文件时修改文件的权限信息
        ansible 172.16.1.31 -m copy -a "src=/etc/hosts dest=/root/ mode=1777"

在传输数据文件信息时对远程主机源文件进行备份

创建一个文件并直接编辑文件的信息

        ansible 172.16.1.31 -m copy -a "content='oldboy123' dest=/etc/hosts"

remote_src If no, it will search for src at originating/master machine.

src参数指定文件信息,会在本地管理端服务进行查找

If yes it will go to the remote/target machine for the src. Default is no.

src参数指定文件信息,会从远程主机上进行查找
        ansible 172.16.1.31 -m copy -a "src=/etc/hosts dest=/root"

这个命令会把远程管理端的hosts文件传输到服务端

        ansible 172.16.1.31 -m copy -a "src=/etc/hosts dest=/root remote_src=yes"

这个命令会把远程服务端的hosts文件移动到/root目录 PS: ansible软件copy模块复制目录信息

        ansible 172.16.1.31 -m copy -a "src=/oldboy dest=/oldboy"  

src后面目录没有/: 将目录本身以及目录下面的内容都进行远程传输复制

        ansible 172.16.1.31 -m copy -a "src=/oldboy/ dest=/oldboy"  

src后面目录有/: 只将目录下面的内容都进行远程传输复制 10、file – Sets attributes of files 设置文件属性信息 基本用法:

        ansible 172.16.1.31 -m file -a "dest=/etc/hosts owner=oldboy group=oldboy mode=666"

扩展用法: 1、可以利用模块创建数据信息 (文件 目录 链接文件)

    state  参数
    =absent    --- 缺席/删除数据信息
    =directory --- 创建一个目录信息
    =file      --- 检查创建的数据信息是否存在 绿色存在 红色不存在
    =hard      --- 创建一个硬链接文件
    =link      --- 创建一个软链接文件
    =touch     --- 创建一个文件信息

创建目录信息:

        ansible 172.16.1.31 -m file -a "dest=/oldboy/ state=directory"
        ansible 172.16.1.31 -m file -a "dest=/oldboy/oldboy01/oldboy02/ state=directory"

创建文件信息:

        ansible 172.16.1.31 -m file -a "dest=/oldboy/oldboy.txt state=touch"

创建链接文件信息: 软链接:

        ansible 172.16.1.31 -m file -a "src=/oldboy/oldboy.txt dest=/oldboy/oldboy_hard.txt state=hard"

硬链接:

        ansible 172.16.1.31 -m file -a "src=/oldboy/oldboy.txt dest=/oldboy/oldboy_link.txt state=link"

2、 可以利用模块删除数据信息

    ansible 172.16.1.31 -m file -a "dest=/oldboy/oldboy.txt state=absent"
    ansible 172.16.1.31 -m file -a "dest=/oldboy/  state=absent"

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LINUX运维学习之综合架构篇——Ansible 批量管理服务(中)

    service模块: 管理服务器的运行状态 停止 开启 重启 name: --- 指定管理的服务名称 state: --- 指定服务状态 started...

    小黑Sir
  • LINUX运维学习之综合架构篇——综合架构远程管理服务(SSH)

    SSH是一个安全的远程连接,它的数据信息是加密的,端口号为22,SSH服务默认可以为root用户连接。 TELNET是一个不安全的远程连接,它的数据信息为明文,...

    小黑Sir
  • LINUX运维学习之综合架构篇——综合架构实时同步服务

    1)需要部署好rsync守护进程服务,实现数据传输 2)需要部署好inotify服务,实现目录中数据变化监控 3)将rsync服务和inotify服务建立联系,...

    小黑Sir
  • 零基础带你硬核了解并上手“Ansible“!

    最近有幸接触过一个自动化运维的项目,需要掌握的技术栈中就包括近年来越来越火的一款开源运维自动化工具——Ansible,通过Ansible可以实现...

    大数据梦想家
  • 硬功夫来了 | Ansible Tower批量实现Linux系统标准化

    本视频对应构建运维自动化架构中->基础架构管理层->运维自动化平台。 ? 视频一:Ansible Tower管理Windows演示 Ansible Tower管...

    魏新宇
  • 零基础到精通Linux,从这篇文章开始

    正好在最近,看到了一篇不错的资料,其中对于Linux入门学习的描述极其详尽,因此特别摘抄其中段落,制作成思维导图分享给大家。

    马哥linux运维
  • LINUX运维学习之综合架构篇——架构搭建准备

    web服务器:让用户访问需要公网IP地址,域名解析,当访问网站的用户较多,同时写入增多消耗IO,服务器磁盘压力,为了缓解压力,用户在网站的注册等某些字符串信息,...

    小黑Sir
  • 学Linux运维自动化无头绪?这21个学习资源值得看

    运维工种对于自动化的强烈需求已经显露无疑——作为一个古老的技术工种,在几台、几十台服务器时尚可人肉维护,面对云计算时代动辄上百上千的服务器,单凭人肉维护显然束手...

    小小科
  • 零基础到精通Linux,从这篇文章开始

    正好在最近,看到了一篇不错的资料,其中对于Linux入门学习的描述极其详尽,因此特别摘抄其中段落,制作成思维导图分享给大家。

    马哥教育
  • Docker世界中的配置管理:5分钟让你明白如何在Puppet,Chef, Ansible之间选择

    译者点评: 微服务的运用,小型化团队(Two-pizza team)理念的倡导使更多的公司采用研制周期(Lead Time)来衡量DevOps团队的执行效率。在...

    yuanyi928
  • Docker 世界中的配置管理:5分钟让你明白如何在Puppet,Chef,Ansible之间选择

    本文翻译并节选自《DevOps2.0的工具集(DevOps黑宝书)——打造自动化的持续交付流程》一书,转自译者CSDN博客,转载请注明出处,译者:胡帅。

    DevOps时代
  • Ansible-基本概述

    1、在控制机或者称为管理机的机器上写好相关脚本。「当然该脚本我们是测试通过的,脚本中包括安装、配置、启动等等」

    踏歌行
  • DevOps 自动化运维工具选择

    虚拟化技术日益普及,基于行业标准的服务器功能越来越强大,加上云计算的出现,这些因素共同导致了企业内外需要加以管理的服务器数量大幅增长。过去我们只要管理内部数据中...

    DevOps时代
  • 运维是做什么的?史上最全互联网Linux工作规划!十分钟找到linux运维工程师职业方向!

    首先祝贺你选择学习Linux,你可能即将踏上Linux的工作之旅,出发之前,让我带你来看一看关于Linux和Linux运维的一切。

    马哥教育
  • Ansible 2 -- 1介绍与使用场景

    Ansible是用Python写的自动化运维工具,你如果需要管理维护好多主机,需要做批量操作,部署,任务等,他是个不错的选择。 Ansible是基于模块工作的...

    mafeifan
  • Ansible(1)- 简单介绍

    小菠萝测试笔记
  • 成为鹿晗背后的男人,做高薪微博Linux运维工程师

    相信你才被鹿晗搞死微博服务器小惊动了会儿,相信你也为立即处理了微博服务瘫痪的运维小哥点赞,有没有也想成为这样的一个人,一行代码指挥上前台服务器,服务成千上万的网...

    小小科
  • LINUX运维学习之综合架构篇——NFS存储服务器概念介绍及搭建

    NFS是网络文件共享系统 它主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录 NFS客户端(一般是应用服务器,例如web)可以通过挂载(...

    小黑Sir
  • 自动化运维实践 | Ansible介绍

    Ansible是一个部署一群远程主机的工具。这里“远程主机”是指任何可以通过SSH登录的主机,所以它既可以是远程虚拟机或物理机,也可以是本地主机。Ansible...

    小土豆Yuki

扫码关注云+社区

领取腾讯云代金券