Linux学习笔记--15(用ansible实现自动化 1)

Ansible介绍与安装

Ansible是一款开源的资源管理工具,是目前运维自动化工具中最简单、容易上手的优秀软件。用户可以通过它自动化的部署应用程序来实现IT基础架构。例如,对服务器进行初始化配置、安全基线配置、更新和打补丁都是简单容易的。虽然相比于Cher、Puppet、Saltstack等CS架构的自动化工具来讲,Ansible的执行性能并不是最高的,但是由于其基于是SSH远程会话协议,无需客户端程序,只要知道受管主机的账号密码,就能直接用SSH协议进行远程控制,因此使用起来优势很明显。
Ansible服务本身没有批量部署的功能,它仅仅是一个框架,真正具有批量部署能力的是其所运行的模块。随服务的安装自带有上千个模块,通过调用指定的模块,就能实现特定的功能,所以只要掌握了常用模块的作用,就能轻松上手。需要更高级功能,可以用python语言对其进行二次开发。
Ansible优点:
轻量级,无需客户端安装agent,更新时,只需在操作机上进行一次更新即可;
批量任务执行可以写成脚本,而且不用分发到远程既可以执行;
使用python编写,维护更简单;
支持sudo。

ansible的工作机制

在这里插入图片描述
从图中可以看出 ansible 分为以下几个部份:

  1. Control Node:控制机器
  2. Inventory:主机清单,配置管理主机列表
  3. Playbooks:剧本、任务编排。根据规则定义多个任务,模块组织结构清晰,由 ansible 自动执行。
  4. Modules(Core | Custom):模块,用于执行某个具体的任务
  5. connection plugin(连接插件):Ansible 通过不同的协议连接到远程主机上,执行指定的命令。默认采用ssh 协议连接远程主机
    Ansible服务专用术语对照表
    在这里插入图片描述
    ansible的基本框架结构:
    在这里插入图片描述
    在这里插入图片描述

ansible的执行流程

在这里插入图片描述
简单理解就是 Ansible 在运行时,首先读取 ansible.cfg 中的配置,根据规则获取 Inventory 中的管理主机列表,并行的在这些主机中执行配置的任务,最后等待执行返回的结果。

安装ansible

1.先配置yum 源。当然网络要通
在这里插入图片描述

2、进行安装
在这里插入图片描述

设置主机清单

Ansible服务的主配置文件存在优先级的顺序关系,默认存放在/etc/ansible目录中的主配置文件实际优先级最低,如在当前目录或用户家目录中也同样存放有一份配置文件,那么则以自己建立的为准。
Ansible服务主配置文件优先级顺序在这里插入图片描述
在实际生产中主机比较多,用户可以预先把要管理的主机IP地址写入到/etc/ansible/hosts文件中,这样后续在执行Ansible命令执行动作就自动包含这些主机了,无需每次都重复输入受管主机的地址。
在这里插入图片描述

常用“ansible-inventory --graph”命令以结构化的方式显示出受管节点主机信息,对于有层级的分组来讲是非常利于阅读的
在这里插入图片描述
Ansible常用变量汇总
在这里插入图片描述
如,将Ansible主配置文件中的71行设置成默认不需要SSH协议的指纹验证,及107行设置成默认执行Playbook时所使用的管理员名称为root。

# vim /etc/ansible/ansible.cfg
70 # uncomment this to disable SSH key host checking
71 host_key_checking = False
……省略部分……
105 # default user to use for playbooks if user is not specified
106 # (/usr/bin/ansible will use current user as default)
107 remote_user = root

这样就会在执行任务时便会自动对账号和密码进行匹配,而不用每次重复输入它们。
用户只需要将对应的变量及信息填写到主机清单文件中,前面截图的后面:
在这里插入图片描述

运行临时命令

在 ansible 中是指需要快速执行一条命令,并且不需要保护的命令,便可以操控成千上万台的主机节点,而ansible 命令便是最得力的工具之一。 Ansible 服务实际上只是一个框架,能够完成工作的是模块化功能代码。
常用的Ansible模块大致有二十余个。一些没有提及的可用“ansible-doc 模块名称”的命令格式自行查询,或者用“ansible-doc -l”命令列出所有的模块信息以供选择。
在这里插入图片描述

Ansible服务常用模块名称及作用
在这里插入图片描述
常用的语法格式为“ansible 受管主机节点 -m 模块名称 [-a 模块参数]”, “-a”是要传递给模块的参数,只有极简单功能的模块才不需要额外参数,所以大多情况下“-m”与“-a”参数都会同时出现。
ansible 命令的常用参数
在这里插入图片描述
如,检查dev主机的网络连通情况,一开始dev没有开机,开机后呢可以正常ping通
在这里插入图片描述
再来看下setup模块进行信息收集,通过 -a接受参数,filter进行过滤(类似查找 )
在这里插入图片描述
也可以用yum_repository模块添加yum仓库
在这里插入图片描述在这里插入图片描述

Ansible playbook

执行单个的命令或调用某一个模块根本无法满足正常工作所需要的复杂度,Ansible服务中允许用户根据需求,在类似于Shell脚本的模式下编写出一套自动化运维的脚本,然后由程序自动的、重复的执行,大大的提高了工作效率。
Ansible服务的Playbook剧本文件采用YAML语言编写,有着强制性的格式规范,通过空格将不同信息分组,因此有时会因一两个空格错位而导致报错,需要万分小心。YAML文件开头需要先写三个减号—,多个分组信息需要间隔一致才能执行,上下也要对齐,后缀名一般为.yml。在执行后会在屏幕上输出运行界面,内容会依据不同工作而变化,但绿色均代表成功,黄色代表执行成功并进行了修改,而红色则代表执行失败。

Playbook构成

Playbook剧本文件结构由四部分组成——target、variable、task、handler。
target:用于定义要执行剧本的主机节点范围
variable:用于定义剧本执行时要用的变量
task:用于定义将在远程主机上执行的任务列表
handler:用于定义执行完成后需要调用的后续任务

而 Playbook 对应的目录层有五个,分别如下:
一般所需的目录层有:(视情况可变化)

  1. vars 变量层
  2. tasks 任务层
  3. handlers 触发条件
  4. files 文件
  5. template 模板

yaml 三板斧

● 缩进
YAML 使用一个固定的缩进风格表示层级结构,每个缩进由两个空格组成,不能使用 tabs。
● 冒号
以冒号结尾的除外,其他所有冒号后面必须有空格。
● 短横线
表示列表项,使用一个短横线加一个空格。
多个项使用同样的缩进级别作为同一列表。

ansible-playbook 命令详解
语法:ansible-playbook [参数] 文件
常用参数:
在这里插入图片描述

一个简单的Playbook,通过user模块添加一个用户newbie。
在这里插入图片描述
在这里插入图片描述
说明:执行成功后主要观察最下方的输出信息,ok和changed代表执行及修改成功。如遇到unreachable或failed大约0的情况,建议手动检查下剧本。

照片见证

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值