跟我学Devops之工具篇(Ansbile)


声明:这是我在大学毕业后进入第一家互联网工作学习的内容


我从自动化运维入门开始,第一个学习的自动化工具就是ansible。

百度解释

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

  • 连接插件connection plugins:负责和被监控端实现通信;
  • host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
  • 各种模块核心模块、command模块、自定义模块;
  • 借助于插件完成记录日志邮件等功能;
  • playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

个人理解

用通俗的话来解释,ansbile可以分组,每个组里添加目标机器ip,通过密钥或者密码连接成功组里的机器后,你就可以用ansbile命令操作每个组的机器了。对于大规模的机器群来说,ansbile是必不可少的运维工具。

ansbile的特点:

  • 部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
  • 默认使用SSH协议对设备进行管理;
  • 有大量常规运维操作模块,可实现日常绝大部分操作;
  • 配置简单、功能强大、扩展性强;
  • 支持API及自定义模块,可通过Python轻松扩展;
  • 通过Playbooks来定制强大的配置、状态管理;
  • 轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
  • 提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。

当然你可能不需要用到ansbile所有功能,以下是我认为实战中ansbile用的最爽的几个点:

  • 配置管理:将配置文件批量放到你指定组的机器某一目录下,或者指定路径后一次性修改指定组的机器该路径下的配置文件
  • 应用部署:如java应用编译好成jar包,ansbile直接将jar包分发到指定组的机器某一目录下,执行启动命令
  • 滚动发布:有人可能会问了,ansible也能滚动发布?其实只要了解滚动发布的原理,用ansbile一样可以做到。例如在生产环境利用负载均衡分发流量到底层存在多个运行java应用的实例中,那么滚动更新就是先控制一台组里的机器,杀进程,启动新的jar包,监控jar包启动成功等,如果这台组里的机器成功,则让后续组里的机器继续更新,否则终止。

开始ansible之旅

安装ansible

两种安装方式都行

  • pip安装

yum install python-pip

pip install ansible

  • yum安装

yum install epel-release -y

yum install ansible –y

安装完成后执行ansible --version

[root@localhost ~]# ansible --version
ansible 2.9.7
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]

配置ansible

默认配置文件

配置文件路径在/etc/ansible

[root@localhost ansible]# pwd
/etc/ansible
[root@localhost ansible]# ll
total 24
-rw-r--r--. 1 root root 19985 Apr 19 05:24 ansible.cfg
-rw-r--r--. 1 root root  1016 Apr 19 05:24 hosts
drwxr-xr-x. 2 root root     6 Apr 19 05:24 roles

修改ansible.cfg
将以下几个参数的注释去掉并修改

host_key_checking= False   
timeout = 30  增加ssh的超时时间
log_path = /var/log/ansible.log	 存日志

主机清单

ansible有2种连接主机清单的方式

基于密码连接
[root@localhost ansible]# vim /etc/ansible/hosts
#添加两个组dev、test
[dev]
172.31.22.31  ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"
172.31.22.33  ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"
172.31.22.35  ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"

[test]
172.31.24.31  ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"
172.31.24.33  ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"
172.31.24.35  ansible_ssh_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值