Ansible自动化运维实践

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ansible
自动化运维实践
IT运维管理 Ansible介绍 Ansible常用操作 Ansible实例(playbooks)
第一部分
IT运维管理
பைடு நூலகம்
传统运维
自动运维
传统运维
传统运维带来的坑
运维工作是比较繁琐的,尤其是新系统上线的场景,一切都是从零开始。包括虚机的创建,主机名的修 改,系统的初始化等等,在机器不多的情况下人工还能应付的过来,如果有上百台机器呢?最初也是用堆人 的方法来做的。但这样的方式出错率高,而且有时还会有遗漏。只能通过相互检查的方式来验证,但这样就 会花费更多的时间,相应的时间/人工成本也会上升。
任意语言开发模块; (4) yaml,not code:使用yaml语言定制剧本playbook; (5) ssh by default:基于SSH工作; (6) strong multi-tier solution:可实现多级指挥。
Ansible优点
(1) 轻量级,无需在客户端安装agent,更新时,只需在操 作机上进行一次更新即可;
人工的方式因个人部署习惯千差万别,导致一些项目难以维护。
nginx
keepali ved
tomcat
nodejs
Server1
nginx
keepali ved
tomcat
nodejs
Server2
MySQL Redis Mongodb ……
自动运维
运维自动化的演进
没有专门的工具为我们做这些事情,使用脚本语言(Python) 逐渐有了运维自动化的一些工具,比如Fabric 、Puppet、Chef、SaltStack、Ansible等 自动化运维平台
yum模块
ansible all -m yum -a "name=telnet state=present"
service模块
ansible all -m service -a "name=nginx state=restarted"
Ansible常用模块
copy模块
ansible all -m copy -a "src=/root/nginx.conf desc=/etc/nginx/nginx.conf owner=nginx group=nginx mode=644"
3、逻辑非和逻辑与
Ansible常用模块
Ansible运行任务的方式
Ad-hoc - ansible命令 Playbook - YAML
Ad-hoc
ansible 主机或组 -m 模块名 -a '模块参数' ansible参数 • 主机和组: 是在/etc/ansible/hosts 里进行指定的部分,动态Inventory 使用的是脚本从外部应用里获取的主机 • 模块名: 可以通过ansible-doc -l 查看目前安装的模块,默认不指定时,使用的是command模块,具体可以查
是否sudo等。
Ansible常用模块
ping模块
ansible all -m ping
command模块
ansible all -m command -a "uptime"
shell模块
ansible all -m shell -a "cat /dev/null > /var/log/nginx/access.log"
Ansible常用模块
YAML介绍
Ansible安装配置
两种安装方式:
使用yum安装(推荐)- 版本稍旧 yum install ansible
使用pip安装(依赖pip,gcc等)- 版本新 pip install ansible
Ansible配置
/etc/ansible/ansible.cfg
lineinfile模块
ansible mysql -m lineinfile -a "dest=/etc/hosts line='10.10.31.181 db1'"
看/etc/ansible/ansible.cfg 的“#module_name = command ” 部分,默认模块可以在该配置文件中进行修改 • 模块参数: 可以通过 “ansible-doc -s 模块名” 查看具体的用法及后面的参数 • ansible参数: 可以通过ansible命令的帮助信息里查看到,这里有很多参数可以供选择,如是否需要输入密码、
(2) 批量任务执行可以写成脚本,而且不用分发到远程就可 以执行;
(3) 使用python编写,维护更简单,ruby语法过于复杂; (4) 支持sudo。
Ansible架构图
Ansible任务执行流程
第三部分
Ansible的常用操作
Ansible安装配置
Ansible主机清单
Ansible主机清单 - Inventory
Inventory默认文件
/etc/ansible/hosts
Ansible主机清单 - 主机与组正则匹配
1、表示所有的主机使用all 或 *
Ansible主机清单 - 主机与组正则匹配
2、通配符(*)和逻辑或(:)
Ansible主机清单 - 主机与组正则匹配
unarchive模块
ansible java -m unarchive -a "src=java7.tar.gz copy=yes dest=/usr/java owner=root group=root"
file模块
ansible java -m file "src=/usr/java/jdk1.7 dest=/usr/java/jdk state=link owner=root group=root"
运维自动化的演进
运维自动化的目标
1、某某组件坏了可以不用管继 续睡觉 2、出现异常时点击一下就可 立即恢复 3、与监控配合,系统挂了可 以自动恢复
第二部分
Ansible介绍
Ansible简介
Ansible架构图
Ansible任务执行流程
Ansible简介
Ansible特性
(1) no agents:不需要在被管控主机上安装任何客户端; (2) no server:无服务器端,使用时直接运行命令即可; (3) modules in any languages:基于模块工作,可使用
相关文档
最新文档