云计算实操训练营(五):《自动化运维ansible部署及应用》
课前思考:
了解什么是ansible?
Ansible能做什么?
为什么要使用自动化运维工具?
Ansible的优点有哪些?
什么是ansible
几乎万能的自动化工具!
Ansible基于Python语言实现,由paramiko和PyYAML两个关键模块构建。ansible主要承担的工作有以下几种:
- 配置管理
- 服务即时开通
- 应用部署
- 流程编排
- 监控告警
- 日志记录
自动化运维工具对比
Ansible、Puppet、SaltStack技术特性比较表
Ansible优点
- Agentless,去中心化
- Stupied Simple ,上手简单,学习曲线平滑
- SSH by default ,安全,无需安装客户端
- 配置简单、功能强大、扩展性强
- 支持API及自定义模块,可通过Python轻松扩展
- 通过Playbooks来定制强大的配置、状态管理
- 提供一个功能强大、操作性强的Web管理界面(ansible tower)
playbooks
- Playbooks 是 Ansible的配置,部署,编排语言。他们可以被描述为一个需要希望远程主机执行命令的方案,或者一组IT程序运行的命令集合
- 如果Ansible模块你是工作室中的工具,那么 playbooks 就是你设置的方案计划
- 在基础层面, playbooks 可以被用来管理用于部署到远程主机的配置文件。在更高的层面上,playbooks 可以依次对多层式架构上的服务器执行上线(包括滚动更新在内的操作)并可以将操作委托给其他主机(包括在此过程中发生的)与监视服务器,负载均衡服务器的交互操作在内
Ansible架构
Ansible模块
- ansible-doc –l
- Ansible已经开发近1000+的模块
- Ansible的社区热度高
- 参与开发者众多
- 1000+模块覆盖大量的运维需求
ansible安装配置
- yum install -y ansible
- mkdir /home/student/dep-install
- cd /home/student/dep-install
- 创建清单文件,指明要管理的主机
- /home/student/dep-install/inventory
- [dev]
- servera.lab.example.com
- ansible dev -i inventory --list-hosts
使用ansible配置文件
examples:
- [defaults]
- inventory = ./inventory
- 这个参数表示资源清单inventory文件的位置,资源清单就是一些Ansible需要连接管理的主机列表。·
- remote_user = someuser
- ask_pass = false
- [privilege_escalation]
- become = true
- become_method = sudo
- become_user = root
- become_ask_pass = false
Ad-hoc
- ansible everyone -m ping
- ansible -m user -a 'name=newbie uid=4000 state=present'
- servera.lab.example.com
- ansible mymanagedhosts -m command -a /usr/bin/hostname
- ansible localhost -m copy -a 'content="Managed by
- Ansible\n" dest=/etc/motd' -u devops
- ansible localhost -m copy -a 'content="Managed by
- Ansible\n" dest=/etc/motd' -u devops --become
创建playbooks
Ansible的playbook文件格式为YAML语法,所以在编写playbook之前对YAML语法有一定的了解,否则在运行playbook的时候会经常碰到语法错误的提示。
Demo: 运行一个web服务器
Demo: 多主机的任务
Demo:安装LAMP
- 配置sudo
- 创建ssh密钥
- 编写playbook
- 测试playbook
- 运行playbook
- 使用的模块:yum service lineinfile
Demo:安装LAMP
请先 后发表评论~