设为首页 收藏本站
查看: 1505|回复: 1

[经验分享] Ansible自动化工具简介(一)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-30 09:31:12 | 显示全部楼层 |阅读模式
### 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模块检测主机是否存活
[iyunv@centos6-1 ~]# 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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-321404-1-1.html 上篇帖子: 一键安装ansible 下篇帖子: Ansible常见模块介绍(二)
累计签到:534 天
连续签到:302 天
发表于 2017-2-15 09:27:44 | 显示全部楼层
多谢楼主分享

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表