Ansible入门篇
1. Ansible简介
Ansible是一个自动化运维的工具
基于python语言编写,因此机器需要具备python环境
通过ssh的连接方式进行自动化部署,ansible优先使用openssh ,再使用python模块里的paramiko作为ssh工具(windows操作系统 则是利用winrm进行远程连接)
2. Ansible的优缺点
优点:
入门快速,简单上手
基于python语言
无代理(基于ssh,无需安装客户端)
可读性强(采用YAML格式)
缺点:
对windows系统的排斥(服务端无法安装在windows)
运行效率较低(task任务是串行运行;多台设备同时运行一个task,有并发数限制)
3. Ansible的安装
参照 其他关于ansible安装章节
4. Ansible框架介绍
4.1 架构图
4.2 各组件功能
ansible.cfg #ansible的配置文件,包含各种ansible全局性质参数,可在不同项目下或者不同用户下创建一样的ansible.cfg文件,作为局部配置文件, 检索顺序:局部-->全局 (/etc/ansible/ansible.cfg)
inventory #设备列表,当跑脚本时,需要告诉ansible针对哪些设备或设备组
varible #变量
module #模块,通过python等语言编写而成,能实现某个特定的功能的工具,例如思科配置接口的模块,修改ip地址的模块等等
Jinjia2 #模板系统
Role #角色,一套文件夹,里面定义了例如变量,具体任务task。Role里面定义的内容可以实现某些具体的功能,而你在使用不同的脚本的过程中可以导入Role来实现某一功能,而不用重复写
#以上的组件,会由以下的“客户”来使用
Ad-hoc #即插即用,简易模式,一条命令,一次使用
playbook #剧本,基于YAML格式书写,可以包含ansible任意功能,无论是设备列表,变量,jinjia2模板,条件循环,模块等等
4.3 inventory介绍
默认路径是/etc/ansible/hosts文件,默认配置如下图,此hosts是全局文件,可根据不同用户或者不同项目设置局部文件,即在配置文件里指定ansible.cfg里的inventory=my_hosts
关于定义主机(默认编辑/etc/ansible/hosts 文件),一般有两种方式:
#方式一:直接定义ip
192.168.1.254
#方式二:直接定义域名,此方法本机的dns服务器需要能解析此域名对应的ip地址,或者在自己的/etc/hosts文件里添加本地域名解析
pc1.test.com
# 方式三:定义特殊名称,前提dns服务器或者/etc/hosts文件没办法解析此自定义名称
#书写格式: 自定义名称【空格】ansible_hosts=[主机ip]
如定义R1
R1 ansible_host=192.168.1.254
5. Ansible简单实例1
需求:测试主机是否存活(是否可以连通)
实现: ansible 192.168.135.207 -m ping
此处的ping模块,尝试使用默认的设定去ssh登陆远端设备,如果登陆成功,就反馈“pong”
6. Ansible简单实例2
需求:执行一个linux命令,查看磁盘空间
实现: ansible 192.168.135.207 -m shell -a ‘df -h’