ansible

运维自动化发展历程,ansible 命令使用

一、运维自动化发展历程以及应用场景

1. 运维自动化发展历程:本地部署(On-Premises)—>基础设施即服务(IaaS)—>平台即服务                            (PaaS)—>软件即服务(SaaS)

2. 应用场景:

(1)Dev 开发环境

使用者:程序员

功能    :程序员开发软件测试BUG的环境

管理者:程序员(做运维少参与)

(2)测试环境

使用者:qa测试工程师

功能    :测试经过Dev环境测试通过的软件的功能

管理者:运维(测试环境往往有多套,测试环境满足测试功能即可)

测试人员希望测试环境有多套,多个版本同步测试

通常测试环境有多少套和产品数量保持一样

(3)发布环境:代码发布机,或者堡垒机

使用者:运维

功能    :发布代码至生产环境

管理者:运维

发布机:往往需要有2台(主备)

(4)生产环境:

使用者:运维,少数核心开发人员

功能     :对用户提供公司产品的服务

管理者:只能是运维(生产环境服务器数量较多,需使用自动化工具)

(5)灰度环境:(生产环境的一部分)

使用者:运维

功能:在全量发布代码前将代码的功能面向少数人发布

案例:100台生产服务器,先发布其中10台,这10台服务器就是灰度服                                                                                务器

管理者:运维

二、自动化运维工具——ansible

1.运维工具:

Ansible:中小型应用环境,不需要代理

Saltstack:需要代理,执行效率更高

Puppet:功能强大,配置复杂,适合大型环境

2.Ansible的基础:

(1)是一款由Python开发的,适合中小型环境

(2)特性:

模块化:调用特定的模块,完成特定任务

有Paramiko,PyYAML,Jinja2(模块语言)三个关键模板

支持自定义模块

基于Python语言实现

部署简单,基于Python和SSH,不需要代理

安全,基于OpenSSH

支持playbook编排任务

幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况

无需要代理不依赖PKI(无需ssl)

可使用任何编程语言写模块

YAML格式,编排任务,支持丰富的数据结构

较强大的多层解决方案

(3)Ansible主要组成部分

1  ANSIBLE PLAYBOOKS:任务剧本,编排定义,Ansible任务集的配置文件,由                                                                                                  Ansible顺序依次执行,通常是JSON格式的YML文件

2   INVENTORY:  Ansible管理主机的清单/etc/ansible/hosts

3   MODULES :Ansible执行命令的功能模块,多数为内置的核心模块,也可自定                                                                            义,ansible-doc -l 可查看模块

4   PLUGINS :模块功能的补充如链接类型插件、循环插件、变量插件、过滤插件                                                                      等,该功能不常用

5  API : 供第三方程序调用的应用程序编程接口

6 ANSIBLE : 组合INVENTORY、API、MODULES、PLUGINS的绿框,可以理解                                                                     为是ansible命令工具,其为核心执行工具

7   Ansible命令执行来源:

USER,普通用户,即SYSTEM ADMINISTRATOR

CMDB (资源管理系统) API调用

PUBLIC/PRIVATE CLOUD API 调用

USER —> Ansible Playbook —> Ansible

利用ansible实现管理的方式:

Ad-Hoc 即 ansible 命令,主要用于临时命令使用场景

Ansible-playbook 主要用于长期规划好的,大型项目的场景,需要                                                                                                           有提前的规划

8  Ansible-playbook(剧本)执行过程:

将已有编排的任务集写入Ansible-Playbook

通过ansible-playbook命令分拆任何集至逐条ansible命令,按预定规则                                                                   逐条执行

9 Ansible 主要操作对象:

HOSTS 主机

NETWORKING 网络设备

10 注意事项

执行ansible的主机一般称为主控端,中端,master或堡垒机

主控端Python版本需要2.6或以上

被控端Python版本小于2.4需要安装python-simplejson

被控端如开启SELinux需要安装libselinux-python

Windows不能做为主控端

11 安装的方式:

rpm包安装:EPEL源

yum install ansibe

yum info ansible

1

yum install ansible

2

编译安装

Git方式:

git clone git://github.com/ansible/ansible.git –recursive

cd ./ansible

source ./hacking/env-setup

pip安装:pip是安装Python包的管理器,类似yum

12 ansible的配置文件:

/etc/ansible/ansible.cfg 主配置文件,配置ansible的工作特性

3

/etc/ansible/hosts 主机清单的配置文件

ansible的主要功能在于批量主机操作,为了便捷的使用其中的部分主                                                                     机,可以在inventory file中将其分组命名;而默认的inventory file                                                                           为/etc/ansible/host

4

inventory文件遵循INI文件风格,中括号中的字符为组名。

类如:

5

/etc/ansible/roles/ 存放角色的目录

13 程序

/usr/bin/ansible 主程序,临时命令执行工具

/usr/bin/ansible-doc 查看配置文档,模块功能查看工具

/usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台

/usr/bin/ansible-playbook 定制自动化任务,编排剧本工具

/usr/bin/ansible-pull 远程执行命令的工具

/usr/bin/ansible-vault 文本加密工具

/usr/bin/ansible-console 基于Console界面与用户交互的工具

14 ansible 配置文件

ansible 配置文件在/etc/ansible/ansible.cfg中

[defaults]

#inventory                         =/etc/ansible/hosts    #主机列表配置文件

#library = /usr/share/my_modules/                  #库文件存放目录

#remote_tmp =$HOME/.amsible/tmp   #临时的py文件存放在远程主                                                                    机目录

#local_tmp    =$HOME/.ansible/tmp #本机的临时命令执行目录

#fork            =5    #默认并发数

#sudo_user   =root #默认sudo用户

#ask_sudo_pass =True #每次执行ansible命令是否询问ssh密码

15 ansible系列命令

6

16.ansible-doc:显示模块帮助

格式:ansible-doc [options] [module…]

-a           显示所有模块的文档

-l,–list 列出可用模块

-s,–snippet 显示指定模块的playbook片段

类子:

ansible-doc -l 列出所有模块

7

ansible-doc ping 查看指定的ping模块                    8

ansible-doc -s ping简单查看帮助

9

3.ansible的用法:

(1)格式:ensible <host-pattern> [-m module_name] [-a args]                                                                            (2)选项:

–version 显示版本

10

-m module 指定模块,默认的模块为command

11

-v 详细过程 -vv -vvv更详细的过程

12

–list-hosts 显示主机列表,可简写为-list

-k ,–ask-pass  提示连接密码,默认key验证

-C,–check 检查,并不执行

-u,–user=REMOTE_USER执行远程执行的用户

 

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/91094

(0)
zss123456zss123456
上一篇 2018-01-13
下一篇 2018-01-14

相关推荐

  • Linux 发展史

    Linux 发展史 一、Linux 系统概述     首先大家需要明白,Linux 只是内核,没有应用程序,如果想有应用程序就需要GNU 组织来提供应用程序,GNU其实就是一个开源组织,这就要说GNU 和GPL 的概念了,其实GNU可以看作就是软件行业的共产党组织 而GPL 就是共产党宣言 为全人类服务。所以说GNU 和 LIN…

    Linux干货 2016-10-19
  • LVS的简介和配置

    lvs分为3种模式 :1:lvs-nat:本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发(1)RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP(2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈(3)支持端口映射,可修改请求报文的目…

    2017-10-23
  • 马哥教育网络班21期+第9周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash while read line; do     if [[ $line&n…

    Linux干货 2016-09-06
  • 马哥教育网络版21班第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限 [root@localhost ~]# cp -rf /etc/skel/ /home/tuser1 [root@localhost ~]# chmod&n…

    Linux干货 2016-08-05
  • 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)

    1.概述 一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力。当对象们连接在一起时,它们就可以相互提供服务和信息。 通常来说,当某个对象的状态发生改变时,你仍然需要对象之间能互相通信。但是出于各种原因,你也许并不愿意因为代码环境的改变而对代码做大的修改。也许,你只想根据你的具体应用环境而改进通信代码。或者,你只想简单的重新构造通信代码来避免类和类…

    Linux干货 2015-07-24
  • 高阶函数&&装饰器

    Edit 高阶函数&&装饰器 高阶函数 first class object 函数在python中是一等公民 函数也是对象,可调用的对象 函数可以作为普通比变量、参数、返回值 高阶函数 数学概念:y = g(f(x)) 在数学和计算机科学中,高阶函数应当是至少满足下面一个条件的函数 接受一个或多个函数作为参数 输出一个函数,return 函数…

    Linux干货 2017-10-24