一 基础使用

1. 简介
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
 (1). 连接插件connection plugins:负责和被监控端实现通信;
 (2). host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
 (3). 各种模块核心模块、command模块、自定义模块;
 (4). 借助于插件完成记录日志邮件等功能;
 (5). playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
2. 总体架构

3. 应用场景
<1>. Dev开发环境
 使用者:程序员
 功能:程序员开发软件测试BUG的环境
 管理者:千万不能是运维,一定是要程序员自已
<2>. 测试环境
 使用者:qa测试工程师
 功能:测试经过Dev环境测试通过的软件的功能
 管理者:运维
 备注:测试环境往往有多套(测试环境满足测试功能即可,不宜过多)
  (1)测试者希望测试环境有多套
   公司的产品多产品线并发,即多个版本,意味着多个版本同步测试
  (2)通常情况下,测试环境有多少套和产品线数量保持一样
<3>. 发布环境(代码发布机,有些公司堡垒机(安全屏障))
 使用者:运维
 功能:发布代码至生产环境
 管理者:运维(有经验的)
 发布机:往往需要有2台(主备)
<4>. 生产环境
 使用者:运维,只能是运维(极少数情况下会开放权限给核心开发人员,极少数公司将该 环境权限完全开放给开发人员并让开发人员维护)
 功能:对用户提供公司产品的服务
 管理者:只能是运维
 生产环境服务器数量:一般比较多,且应用非常重要。往往需要自动工具协助部署配置应用。机器数量具体和公司业务规模相关。
<5>. 灰度环境(生产环境的一部分)
 使用者:运维
 功能:在全量发布代码前将代码的功能面向少量精准用户发布的环境
  案例:
  大家手头100台服务器,先发布其中的10台服务器,这10台服务器就是灰度服务器。
 管理者:只能是运维
 为什么灰度环境:往往该版本功能变更较大,为保险起见特意先让一部分用户优化体验该功能,待这部分用户使用没有重大问题的时候,再全量发布至所有服务器。
4. 优点
Agentless(去中心化)
Stupied Simple (上手简单,学习曲线平滑)
SSH by default (安全,无需安装客户端)
YAML no code,定制剧本 (语法简单,维护方便)
5. 任务执行流程

二 安装及配置

1. 安装

[root@node1 ~]# yum install ansible -y
[root@node1 ~]# ansible --version
ansible 2.2.1.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides

2. ssh免秘钥登录设置

[root@node1 ~]# ssh-keygen
[root@node1 ~]# ssh-copy-id root@172.18.67.12
[root@node1 ~]# ssh-copy-id root@172.18.67.13

3. ansible配置

[root@node1 ~]# vim /etc/ansible/ansible.cfg
[defaults]
#inventory      = /etc/ansible/hosts                 # 主机列表配置文件
#library        = /usr/share/my_modules/             # 自定义库文件存放目录
#remote_tmp     = $HOME/.ansible/tmp                 # 生成的临时py命令文件存放在远程主机的目录
#local_tmp      = $HOME/.ansible/tmp                 # 本机的临时命令执行目录
#forks          = 5                                  # 默认并发数
#poll_interval  = 15                                 # 默认的线程池
#sudo_user      = root                               # 默认sudo 用户
#ask_sudo_pass = True
#ask_pass      = True
#transport      = smart
#remote_port    = 22
#module_lang    = C
#module_set_locale = False
#roles_path = /etc/ansible/roles  #roles默认存放目录
#host_key_checking = False                           # 检查对应服务器的host_key
#timeout = 10                                        #检查超时
[privilege_escalation]          #定义权限[paramiko_connection]
[ssh_connection]
[accelerate]            #定义加速
[selinux]
[colors] #命令输出颜色显示

三 ansible常用模块的使用

1. command模块:使用ansible自带模块执行命令,如果要用 > < | & ' ' 使用shell模块

[root@node1 ~]# ansible web -m command -a 'ls /tmp'                               #成功执行
[root@node1 ~]# ansible web -m command -a 'cat /tmp/mrlapulga.md | grep echo'     #执行失败,即使不返回失败结果也不会正常生效
- creates                                                          #command命令不能使用管道符,<>&等
        a filename or (since 2.0) glob pattern, when it already exists, this
        step will *not* be run.
        [Default: None]

2. shell 模块: 调用bash执行命令 类似 cat /tmp/mrlapulga.md | awk -F'|' '{print $1,$2}' &> /tmp/mrlapulga.txt 这些复杂命令,即使使用shell也会失败,解决办法:写到脚本时,copy到远程,执行,再把需要的结果拉回执行命令的机器(执行Ansible命令的机器往往称为:Master机或者中控机或者堡垒机)

[root@node1 ~]# ansible web -m shell -a 'echo 123456 | passwd –-stdin mrlapulga'

3. copy:复制本地文件至远程服务器,并且能够改属性等

[root@node1 ~]# ansible web -m copy -a 'src=/root/125.sh dest=/root/p.sh owner=mrlapulga group=mrlapulga backup=no mode=600'

4. cron:定时执行任务的模块
 * * * * *
 分 时 日 月 周
增加一条crontab

[root@node1 ~]# ansible web -m cron -a 'minute="*/5" job="/usr/sbin/ntpdate 172.18.0.1 &> /dev/null" name="Synctimemrlapulga"'

删除名为Synctimemrlapulga的crontab任务

[root@node1 ~]# ansible web -m cron -a 'state=absent name="Synctimemrlapulga"'

5. fetch模块: 从远程服务器拉取文件至本机
只能fetch文件,不能fetch目录,如果拉目录,先tar/zip 再拉到本机即可

[root@node1 ~]# ansible web -m fetch -a 'src=/root/p.sh dest=/root/ppp.sh'

6. file模块: 设置文件属性

[root@node1 ~]# ansible web -m file -a 'path=/root/p.sh mode=755'                               # 设置文件权限
[root@node1 ~]# ansible web -m file -a 'src=/root/p.sh dest=/tmp/pp.sh mode=644 state=touch'    # 复制文件并且设置文件属性

7. pip 模块: Python的包管理工具

[root@node1 ~]# ansible web -m pip -a 'name=pip2'

8. ping 模块: 检测主机存活

[root@node1 ~]# ansible web -m ping

9. yum模块: 安装软件

[root@node1 ~]# ansible web -m yum -a 'name=httpd state=latest'                                 # 安装httpd包
[root@node1 ~]# ansible web -m shell -a 'ss -tnl | grep 80 '
[root@node1 ~]# ansible web -m command -a 'ss -tnl '
[root@node1 ~]# ansible web -m command -a 'systemctl start httpd.service'
[root@node1 ~]# ansible web -m command -a 'systemctl stop httpd.service'

10. service模块

[root@node1 ~]# ansible web -m service -a 'name=httpd state=started'
[root@node1 ~]# ansible web -m service -a 'name=httpd state=stopped'

11.user模块

[root@node1 ~]# ansible web -m user -a 'name=mrlapulga home=/tmp/mrlapulga/ shell=/bin/bash uid=2000 comment="test user" group=root'

自动化运维工具Ansible的简单使用的更多相关文章

  1. 自动化运维工具Ansible详细部署 (转载)

    自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...

  2. CentOS7Linux中自动化运维工具Ansible的安装,以及通过模块批量管理多台主机

    使用自动化运维工具Ansible集中化管理服务器 Ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于saltstack和Puppet ...

  3. 自动化运维工具Ansible介绍

    一个由 Python 编写的强大的配置管理解决方案.尽管市面上已经有很多可供选择的配置管理解决方案,但他们各有优劣,而 ansible 的特点就在于它的简洁. 让 ansible 在主流的配置管理系统 ...

  4. 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操

    前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...

  5. 自动化运维工具-Ansible之5-流程控制

    自动化运维工具-Ansible之5-流程控制 目录 自动化运维工具-Ansible之5-流程控制 playbook条件语句 单条件 多条件 多条件运算 示例 playbook循环语句 with_ite ...

  6. 自动化运维工具-Ansible之3-playbook

    自动化运维工具-Ansible之3-playbook 目录 自动化运维工具-Ansible之3-playbook PlayBook初识 YAML语法 PlayBook部署httpd PlayBook实 ...

  7. 自动化运维工具-Ansible之1-基础

    自动化运维工具-Ansible之1-基础 目录 自动化运维工具-Ansible之1-基础 Ansible 基本概述 定义 特点 架构 工作原理 任务执行模式 命令执行过程 Ansible 安装 Ans ...

  8. 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客

    自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署

  9. 自动化运维工具-Ansible基础

    目录 自动化运维工具-Ansible基础 什么是Ansible 同类型软件对比 Ansible的功能及优点 Ansible的架构 Ansible的执行流程 安装Ansible ansible配置文件 ...

随机推荐

  1. JQ上传预览+存数据库

    因为之前老师讲的方法有不少BUG 现在经过完善已经修复 之前老是讲的方法是每一张都会被传到后台文件夹里面去 导致在预览过程中如果刷新页面 那么预览的图片不能从后台文件夹中删除  这个方法实现在本地预览 ...

  2. d3.js(v5.7)的attr()函数完善(添加obj支持)

    因为习惯了jquery的attr(obj)批量添加属性,所以刚开始看到d3为dom添加属性要一个一个添加的时候真的是十分想吐槽,既然想实现attr(obj),根据传入对象的键值对批量添加dom属性,那 ...

  3. mstsc Windows局域网内远程桌面连接

    1.检查被连接计算机的远程桌面连接功能是否开启  控制面板->系统和安全->系统->远程设置->远程桌面->勾选"仅允许运行使用网络级别身份验证的远程桌面的计算 ...

  4. iOS-----AVFoundation框架的功能详解

    使用AVFoundation拍照和录制视频 需要开发自定义的拍照和录制视频功能,可借助于AVFoundation框架来实现,该框架提供了大量的类来完成拍照和录制视频.主要使用如下类: AVCaptur ...

  5. ubuntu 终端命令颜色的修改

    http://blog.chinaunix.net/uid-13954789-id-3137184.html http://blog.chinaunix.net/uid-26021340-id-348 ...

  6. laravel 修改重置密码模板

    Laravel里我们可以使用php artisan make:auth来生成一套默认的登陆注册重置邮箱的Authentication System,但是如何修改系统发送给用户的重置密码邮件的样式和内容 ...

  7. ios一些噁心记录

    有时在tableview的头部会凭空多出一块空白区域,这是由于ios会"贴心"的多分配一些用于滑动的多余inset. 消除这一空白的方法是,在tableview所在的control ...

  8. log4j的使用配置

    1.与spring整合,web.xml中配置详情 <!-- 加载log4j的配置文件log4j.properties --> <context-param> <param ...

  9. Luogu 4724 三维凸包

    Luogu 4724 三维凸包 增量法,维护当前凸包,每次加入一个点 \(P\) ,视其为点光源,将可见面删去,新增由"晨昏线"(分割棱)与 \(P\) 构成的平面. 注意每个平面 ...

  10. Codeforces 1030D 【构造】

    LINK 题目大意:给你n,m,k,让你在一个n*m的点阵里构造出一个面积为\(\frac{n*m}{k}\)的三角形 思路 首先要有一个结论是整点三角形的面积分母最多为2,然后就可以判断不存在的情况 ...