Ansible自动化工具简介

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible自动化工具简介相关的知识,希望对你有一定的参考价值。

### Ansible

Ansible优点:

Agentless(去中心化)

Stupied Simple (上手简单,学习曲线平滑)

SSH by default (安全,无需安装客户端)

YAML no code,定制剧本 (语法简单,维护方便)

自动工具衍生过程:

早期(很复杂,使用复杂,安装复杂,配置复杂):chef cfengine(C语言) func

中期(向轻量型发展):puppet (ruby)

近代(轻量工具): saltstack ansible (Python)

Ansible使用场景:

ls cd pwd top touch cp mv rm mkdir ln useradd userdel use* group* passwd* cat head tail tac

more less set ifconfig scp rsync

(1)文件传输:

mv cp scp rsync

(2)命令执行:

剩下的其它命令

Ansible企业实际应用场景分析:

(1)Dev开发环境

使用者:程序员

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

管理者:千万不能是运维,一定是要程序员自已

(2)测试环境

使用者:qa测试工程师

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

管理者:运维

备注:测试环境往往有多套(测试环境满足测试功能即可,不宜过多)

(1)测试同学希望测试环境有多套

公司的产品多产品线并发,即多个版本,意味着多个版本同步测试

(2)通常情况下,测试环境有多少套和产品线数量保持一样

(3)发布环境(代码发布机,有些公司堡垒机(安全屏障))

使用者:运维

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

管理者:运维(有经验的)

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

(4)生产环境

使用者:运维,只能是运维(极少数情况下会开放权限给核心开发人员,极少数公司将该 环境权限完全开放给开发人员并让开发人员维护)

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

管理者:只能是运维

生产环境服务器数量:一般比较多,且应用非常重要。往往需要自动工具协助部署配置应用。机器数量具体和公司业务规模相关。

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

使用者:运维

功能:在全量发布代码前将代码的功能面向少量精准用户发布的环境

案例:

大家手头100台服务器,先发布其中的10台服务器,这10台服务器就是灰度服务器。

管理者:只能是运维

为什么灰度环境:往往该版本功能变更较大,为保险起见特意先让一部分用户优化体验该功能,待这部分用户使用没有重大问题的时候,再全量发布至所有服务器。

自动化工具分类:

ansible、puppet、saltsatck(python)、chef、cfengine、fabric、func

ansible使用场景:

文件传输

命令执行

应用部署

配置管理

任务流编排

Ansible命令集:

/usr/bin/ansible:临时命令执行工具,常用语临时命令的执行

/usr/bin/ansible-doc:ansible功能模块查看工具

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

/usr/bin/ansible-playbook:定制自动化的任务集编排工具

/usr/bin/ansible-pull:ansible远程执行命令工具(使用较少,海量机器时使用)

/usr/bin/ansible-vault:文件加密工具

/usr/bin/ansible-console:ansible基于linux consoble界面可与用户交互的命令执行工具

Ansible高级自定义插件目录

/usr/share/ansible

Ansible调用ping模块检测主机是否存活

[[email protected] ~]# ansible cce -m ping

返回信息如下

172.16.252.193 | success >> {

   "changed": false,

   "ping": "pong"

}

ansible命令详解:

Usage: ansible <host-pattern> [options]

 -a MODULE_ARGS:模块的参数,如果执行默认COMMAND的模块,即是命令参数,如:“date”,"pwd"等等

 --ask-become-pass:su切换密码

 -k, --ask-pass:密码认证

 --ask-su-pass:su切换密码

 -K, --ask-sudo-pass:提示密码使用sudo,sudo表示提权操作

 --ask-vault-pass:加密文件

 -B SECONDS:后台等待X秒

 -C, --check:只是测试一下会改变什么内容,不会真正去执行;相反,试图预测一些可能发生的变化

 -c CONNECTION:连接类型使用。可能的选项是paramiko(SSH),SSH和地方。当地主要是用于crontab或启动。

 -f FORKS:并行任务数。NUM被指定为一个整数,默认是5

 -h, --help  : 打开帮助文档API

 -i INVENTORY: 指定库存主机文件的路径,默认为/etc/ansible/hosts

 -l SUBSET:进一步限制所选主机/组模式  --limit=192.168.91.135 只对这个ip执行

 -m MODULE_NAME:执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数

 -M MODULE_PATH:要执行的模块的路径,默认为/usr/share/ansible/

 --private-key=PRIVATE_KEY_FILE:私钥路径,使用这个文件来验证连接

 -S, --su              run operations with su (deprecated, use become)

 -R SU_USER:指定SU的用户,默认是root用户

 -U SUDO_USER:sudo到哪个用户,默认为 root

 -T TIMEOUT:指定SSH默认超时时间,  默认是10S

 -t TREE:将日志内容保存在该输出目录,结果保存在一个文件中在每台主机上。

 -u REMOTE_USER:远程用户, 默认是root用户

Ansible执行过程:

1、加载自己的配置文件,默认/etc/ansible/ansible.cfg

2、加载自己对应的模块文件,如command

3、通过ansible将模块或者命令生成对应的py文件,并将该文件传输至远程服务器,对应执行用户的家目录的.ansible/tmp下

4、给文件执行权限

5、执行并返回结果

6、删除临时py文件,并退出

Ansible核心组件:

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

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

MODULES:Ansible执行命令的功能模块,多数为内置的核心模块,也可自定义; (ansible-doc -l获取Ansible的所有模块列表)

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

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

ANSIBLE:该部分图中表示的不明显,组合INVENTORY、API、MODULES、PLUGINS的绿框大家可以理解为是ansible命令工具,其为核心执行工具;

Ansible命令执行来源:

(1) USER,普通用户,即SA (SYSTEM ADMINISTRATOR)。

(2) CMDB API 调用

(3) PUBLIC/PRIVATE CLOUD API调用

(4)USER-> Ansible Playbook -> Ansibile

Ansible-playbook(剧本):

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

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

ansible-doc详解

Options:

 --version             show program‘s version number and exit    显示ansible-doc的版本号

 -h, --help            show this help message and exit  显示命令参数API文档

 -M MODULE_PATH, --module-path=MODULE_PATH   查询模块,--module-path=MODULE_PATH  指定模块的路径

                       Ansible modules/ directory

 -l, --list            List available modules   显示已存在的所有模块列表

 -s, --snippet         Show playbook snippet for specified module(s)   显示playbook制定模块的用法

 -v                    Show version number and exit   显示ansible-doc的版本号

举例:

      $     ansible-doc -l

      $     ansible-doc -s command


本文出自 “Char” 博客,谢绝转载!

以上是关于Ansible自动化工具简介的主要内容,如果未能解决你的问题,请参考以下文章

自动化运维工具--Ansible(安装部署模块简介与操作)

Ansible简介

自动化运维专题:Ansible批量自动化管理工具

自动化运维工具ansible--笔记一之简介安装/常用模块

自动化运维工具——ansible详解案例分享

运维自动化工具之Ansible