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自动化工具简介的主要内容,如果未能解决你的问题,请参考以下文章