一、Ansible入门篇

    技术2022-07-11  153

    Ansible入门篇

    1. Ansible简介2. Ansible的优缺点3. Ansible的安装4. Ansible框架介绍4.1 架构图4.2 各组件功能4.3 inventory介绍 5. Ansible简单实例16. Ansible简单实例2

    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’

    Processed: 0.010, SQL: 9