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)
上一篇 2018-01-13 08:15
下一篇 2018-01-14 11:42

相关推荐

  • 马哥教育网络班21期+第三周课程练习

    列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登陆多次,只显示一次即可。 ~]# who|cut -d" " -f1|sort -u 2  取出最后登录当前系统的用户的相关信息。    ~]# id `last|head&nbs…

    Linux干货 2016-07-29
  • BIND(Berkeley Internet Name Domain) is an implementation of the DNS(Domain Name System) (Blob 12)

    正向解析区域、反向解析区域;主/从;子域;基本安全控制;

    2017-11-29
  • wordpress和discuz的负载均衡(lvs-dr)

    wordpress和discuz的负载均衡 实验目的:利用lvs-dr模型实现wordpress和discuz的负载均衡 实验要求:客户端访问wordpress或discuz服务器时,无论被调度至哪台RS上,其会话和访问的页面都应保持一致; 实验环境:一台server用作VS,两台server用作RS,一台server用于部署mysql、NFS、wordpr…

    2017-05-13
  • 文件处理工具及正则表达式练习

    本节练习均在centos7系统下实现,部分练习只截取部分截图,另外排版的事情我已经放弃了! 1.找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行 注:^ 行首, . 匹配任意单个字符,* 匹配前面的字符任意次 突然发现前面解法错误,没有排除空格后加小括号的情况,下面是正确做法 2.统计last命令中…

    Linux干货 2017-07-29
  • mageedu_20160802

     用户的管理权限设置与更改以及ACL的存在及其实用意义      一.用户的管理权限如何设置与更改以及umask值的含义    由于linux系统是一个多用户使用的系统,对于各个用户指定的文件或目录必须存在一套管理系统,以防止多用户对相同文件的混淆使用。于是催生出了linux系统文件的用户权限设置。…

    Linux干货 2016-08-03
  • N26-第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。     ~]#cp -r /etc/skel /home/tuser1     ~]#chmod -R go=-rwx /home/tuser1…

    Linux干货 2017-01-05