22.0 ansible模块介绍

pssh 10-20台机器

系统装完之后,可以在系统上批量安装服务软件包,ansible由不同的模块组成,,目前为止已经有上千个模块,每个模块都是实现一个功能,由不同的组织开发,

1、运维自动化发展历程及技术应用
2、Ansible命令使用
3、Ansible常用模块详解
4、YAML语法简介
5、Ansible playbook基础     剧本,是一个脚本
6、Playbook变量、tags、handlers使用
7、Playbook模板templates
8、Playbook条件判断 when
9、Playbook字典 with_items
10、Ansible Roles    

目录

ansible介绍:
ansible特性
实验环境
      安装ansible
      配置文件
      配置主机清单
      ansible命令
      实现基于key验证

                   默认模块command
                   shell模块
                   #修改默认模块
                   scripts模块
                   copy模块:拷贝文件到远程主机
                   fetch模块  :抓取远程主机的信息
                   file模块
                   hostname主机模块
                   cron模块
                   YUM模块  适合红帽系列的系统
                   service模块
                   user模块
                   ---------------------------
                   ansible-galaxy
                   andible-pull
                   #主机host清单inventory
                   #加密hello.yml
                   #交互式方式执行ansible-console

ansible介绍:


1、运维自动化介绍:
作用:上线新的软件,软件变更,软件升级
功能:运维自动化后期管理:装软件,装服务,推送服务,软件管理,适合一个规模的机器,专业级,自动化运维工具。
ansible是模块化组成,每个模块实现不同的自动化运维功能,模块由不同的人开发。ansiable到目前为止,已有上千个模块

ansible命令:由不同的子命令实现不同模块的功能

ansible playbook:  ansible剧本,即命令,具体工作的规则(相当于一个脚本),用YAML语法实现

ansible roles:ansible角色(多个脚本的组合)


2、运维自动化发展历程:
@、本地部署(On-Premises):所有的工作均有自己公司的运维来做(安装机房空调,安装服务器,安装系统,机房规划,电力设施,软件开发,软件安装等)
@、基础设施即服务(IaaS):买一个半成品;如服务器,网络设施,机房等不用自己做,只需要购买就可以了(如阿里云的虚拟机:cpu,内存,带宽)
@、平台即服务(Paas):由一定的平台提供服务,即服务器,操作系统,开发平台,网络设施等均购买,自己开发软件部署即可(如阿里云的开发平台)
@、软件即服务(Saas):所有的一切均是购买(如微信,QQ,公司购买的邮件服务,云环境等基于网络的服务)
IAAS:Infrastructure as a Service :联想卖电脑等硬件
PAAS:Platform as a Service:卖操作系统
SAAS:Software as a Servie:卖android软件,红帽卖服务

图1
   
Develop开发环境
    使用者:程序员
    功能:程序员开发软件,测试BUG的环境
    管理者:程序员
测试环境
    使用者:QA测试工程师
    功能:测试经过Dev环境测试通过的软件的功能
    管理者:运维
说明:测试环境往往有多套,测试环境满足测试功能即可,不宜过多
    1、测试人员希望测试环境有多套,公司的产品多产品线并发,即多个版本, 意味着多个版本同步测试
    2、通常测试环境有多少套和产品线数量保持一样
企业实际应用场景分析
    发布环境:代码发布机,有些公司为堡垒机(安全屏障)
    使用者:运维
    功能:发布代码至生产环境
    管理者:运维(有经验)
    发布机:往往需要有2台(主备)
    生产环境
    使用者:运维,少数情况开放权限给核心开发人员,极少数公司将权限完全 开放给开发人员并其维护
    功能:对用户提供公司产品的服务
    管理者:只能是运维
    生产环境服务器数量:一般比较多,且应用非常重要。往往需要自动工具协 助部署配置应用。
企业实际应用场景分析
    灰度环境(生产环境的一部分)
    使用者:运维
    功能:在全量发布代码前将代码的功能面向少量精准用户发布的环境,可基于主机或用户执行灰度发布
    案例:共100台生产服务器,先发布其中的10台服务器,这10台服务器就 是灰度服务器
    管理者:运维
     灰度环境:往往该版本功能变更较大,为保险起见特意先让一部分用户优化 体验该功能,待这部分用户使用没有重大问题的时候,再全量发布至所有服务器
程序发布
    程序发布要求:
        不能导致系统故障或造成系统完全不可用
        不能影响用户体验
    预发布验证:
        新版本的代码先发布到服务器(跟线上环境配置完全相同,只是未接入到调度器)
    灰度发布:  
    发布路径:
        /webapp/tuangou    #软链接,指向/webapp/tuangou-1.1
        /webapp/tuangou-1.1 #旧版本
        /webapp/tuangou-1.2 #新版本
    发布过程:在调度器上下线一批主机(标记为maintanance状态) --> 关闭服务 --> 部  署新版本的应用程序 --> 启动服务 --> 在调度器上启用这一批服务器
    自动化灰度发布:脚本、发布平台
自动化动维应用场景
    文件传输
    命令执行
    应用部署
    配置管理
    任务流编排

ansible  python语言编写,控制端/被控制端;主控/被控;被控制端装一个(agent,ssh)  一对多
ansible的被控制端基于ssh代理,需要把所有机器实现ssh的key验证,可以把主控端的key对复制到所有被控端,适合几百台机器。。
  2012-03-09,发布0.0.1版,红帽收购
  2015-10-17,Red Hat宣布收购

#Saltstack:python语言,一般需部署agent,执行效率高,适合千台服务器规模。
#Puppet:ruby语言,功能强大,配置复杂,重型,适合大型环境,上万台服务器

ansible创始人为Michael DeHaan ,其还开发了cobbler自动化安装操作系统工具
https://github.com/ 网址搜索ansible有源代码,可以查看,如图2

 

ansible特性

    模块化:调用特定的模块,完成特定任务
    有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块  
    支持自定义模块
    基于Python语言实现
    部署简单,基于python和SSH(默认已安装),agentless
    安全,基于OpenSSH 
    支持playbook编排任务
    幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况
    无需代理不依赖PKI(无需ssl)
    可使用任何编程语言写模块
    YAML格式,编排任务,支持丰富的数据结构
    较强大的多层解决方案

ansible命令Ad-Hoc     可以管理liunx和网络,windows系统也可以管理(用的少)
ansible playbook 脚本
ansible role     playbook集合

    ANSIBLE PL AYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置  文件,由Ansible顺序依次执行,通常是JSON格式的YML文件
    INVENTORY:Ansible管理主机的清单/etc/anaible/hosts
    MODULES:Ansible执行命令的功能模块,多数为内置核心模块,也可自定义
    PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用
    API:供第三方程序调用的应用程序编程接口
    ANSIBLE:组合INVENTORY、API、MODULES、PLUGINS的绿框,可以理解  为是ansible命令工具,其为核心执行工具


实验环境

    3个centos7,1个centos6 。利用一个centos7(192.168.31.7做主控端),其余均为被控制端
    [root@centos7:~]# hostname ansible
    [root@centos7:~]# exit
    [root@ansible:~]#

    [root@centos6 ~ ]#

    [root@centos7:~]# hostnamectl set-hostname centos7-1
    [root@centos7-1:~]#

    [root@cos7:~ ]# hostnamectl set-hostname centos7-2
    [root@cos7:~ ]# exit
    logout
    Connecting to 192.168.31.27:22...
    Connection established.
    To escape to local shell, press 'Ctrl+Alt+]'.

    Last login: Sat Jul 28 19:05:27 2018 from 192.168.31.1
    [root@centos7-2:~ ]#


安装ansible

    [root@ansible:~]# yum install ansible
    [root@ansible:~]# ansible --version
    ansible 2.6.1
      config file = /etc/ansible/ansible.cfg     #主配置文件
      configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python2.7/site-packages/ansible
      executable location = /usr/bin/ansible
      python version = 2.7.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

    [root@ansible:~]# rpm -ql ansible   #ansible 组成文件
    [root@ansible:~]# rpm -ql ansible | grep .service   #没有对应的服务
    ansible不是一个服务,只是一个管理软件

    [root@ansible:~]# which ansible
    /usr/bin/ansible
    [root@ansible:~]# ll /usr/bin/ansible
    lrwxrwxrwx 1 root

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值