自动化运维工具 Ansible

文章详细介绍了Ansible、Puppet和Saltstack这三种自动运维工具的特点、工作原理、安装配置以及常用模块的实战应用,如ping、command、copy、yum、file、user、cron等。此外,还讨论了Ansible的Playbook应用和性能调优策略,包括SSH连接优化、Facts缓存和ControlPersist特性等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Puppet 自动运维工具特点:

Saltstack 自动运维工具特点:

Ansible 自动运维工具特点:

Ansible 运维工具原理

Ansible 管理工具安装配置

Ansible 工具参数详解

Ansible ping 模块实战

Ansible command 模块实战

Ansible copy 模块实战

Ansible yum 模块实战

Ansible file 模块实战

Ansible user 模块实战

Ansible cron 模块实战

Ansible synchronize 模块实战

Ansible shell 模块实战

Ansible service 模块实战

Ansible Playbook 应用

Ansible 配置文件详解

Ansible 性能调优


Puppet 自动运维工具特点:

Puppet 是早期的 Linux 自动化运维工具,是一种 Linux、Unix、Windows 平台的集中 配置管理系统,发展至今目前已经非常成熟,可以批量管理远程服务器,模块丰富,配 置复杂,基于 Ruby 语言编写。最典型的 C/S 模式,需要安装服务端与客户端。 puppet 采用 C/S 星状的结构,所有的客户端和一个或几个服务器交互,每个客户端 周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信 息同步。 每个 puppet 客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置客户端. 配置完成以后,puppet 客户端可以反馈给服务器端一个消息,如果出错也会给服务器端反馈一个消息。 Puppet 适用于服务器管理的整个过程,比如初始安装、配置、更新以及系统下线。

Saltstack 自动运维工具特点:

Saltstack 与 Puppet 均是 C/S 模式,需安装服务端与客户端,基于 Python 编写,加入 MQ 消息同步,可以使执行命令和执行结果高效返回,但其执行过程需等待客户端全部返回,如果客户端未及时返回或未响应的话,可能会导致部分机器没有执行结果。

Ansible 自动运维工具特点:

Ansible 与 Saltstack 均是基于 Python 语言开发,Ansible 只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为 Ansible 是基于 SSH 远程管理,而Linux服务器大都离不开SSH,所以Ansible不需要为配置工作添加额外的支持。 Ansible 安装使用非常简单,而且基于上千个插件和模块实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。很多读者在使用 Ansible 工具时,认为 Ansible比 Saltstatck 执行效率慢,其实不是软件本身慢,是由于 SSH 服务慢,可以优化 SSH 连接速度及使用 Ansible 加速模块,满足企业上万台服务器的维护和管理。

Ansible 运维工具原理

Ansible分为控制端和被控端,主要是基于SSH协议去管理客户端,被控端是无需安装Agent插件的,Ansible会读取控制端hosts文件,根据文件中定义IP列表信息,调取本地的各个模块对被控端机器实现批量、并发的配置管理和维护,如果任务比较复杂可以写成PlayBook剧本进行分发管理; Ansible 自动运维管理工具优点: ❑ 轻量级,更新时,只需要在操作机上进行一次更新即可; ❑ 采用 SSH 协议; ❑ 不需要去客户端安装 agent; ❑ 批量任务执行可以写成脚本,而且不用分发到远程就可以执行; ❑ 使用 python 编写的,维护更简单; ❑ 支持 sudo 普通用户命令; ❑ 去中心化管理。 Ansible 自动运维管理工具工作原理拓扑,如图 21-1 所示: 在这里插入图片描述

Ansible 管理工具安装配置

Ansible 可以工作在 Linux、BSD、Mac OS X 等平台,对 Python 环境的版本最低要求为 Python2.6 以上,如果操作系统 Python 软件版本为 2.4,需要升级方可使用 Ansible工具。 Red Hat、CentOS 操作系统可以直接基于 YUM 工具自动安装 Ansible,CentOS6.x 或者 CentOS7.x 安装前,需先安装 epel 扩展源,代码如下:

rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install epel-release -y
yum install ansible -y
123

Ansible 工具默认主目录为:/etc/ansible/,其中 hosts 文件为被管理机 IP 或者主机名列表,ansible.cfg 为 ansible 主配置文件,roles 为角色或者插件路径,默认该目录为空,如图所示: 在这里插入图片描述 Ansible 远程批量管理,其中执行命令是通过 Ad-Hoc 来完成,也即点对点单条执行命令,能够快速执行,而且不需要保存执行的命令。默认 hosts 文件配置主机列表,可以配置分组,可以定义各种 ip 及规则,hosts 列表默认配置如图 21-3 所示: 在这里插入图片描述 Ansible 基于多模块管理,常用的 Ansible 工具管理模块包括:command、shell、script、yum、copy、File、async、docker、cron、mysql_user、ping、sysctl、user、acl、add_host、easy_install、haproxy 等。 可以使用 ansible-doc –l|more 查看 ansible 支持的模块,也可以查看每个模块的帮助文档,ansible-doc module_name,如图 21-4 所示: 在这里插入图片描述

Ansible 工具参数详解

基于 Ansible 批量管理之前,需将被管理的服务器 IP 列表添加至/etc/ansible/hosts 文件中,如图 21-5 添加 4 台被管理端 IP 地址,分成 web 和 db 两组,本机也可以是被管理机。 在这里插入图片描述 基于 Ansible 自动运维工具管理客户端案例操作,由于 Ansible 管理远程服务器基于 SSH,在登录远程服务器执行命令时需要远程服务器的用户名和密码,也可以加入-k参数手动输入密码或者基于 ssh-keygen 生成免秘钥。 Ansible 自动化批量管理工具主要参数如下:

参数 注释
-v,–verbose 打印详细模式;
-i PATH,–inventory=PATH 指定 host 文件路径;
-f NUM,–forks=NUM 指定 fork 开启同步进程的个数,默认 5;
-m NAME,–module-name=NAME 指定 module 名称,默认模块 command;
-a MODULE_ARGS module 模块的参数或者命令;
-k,–ask-pass 输入远程被管理端密码;
–sudo 基于 sudo 用户执行;
-K,–ask-sudo-pass 提示输入 sudo 密码与 sudo 一起使用;
-u USERNAME,–user=USERNAME 指定移动端的执行用户;
-C,–check 测试执行过程,不改变真实内容,相当于预演;
-T TIMEOUT, 执行命令超时时间,默认为 10 秒;
–version 查看 Ansible 软件版本信息。

Ansible ping 模块实战

Ansible 最基础的模块为 ping 模块,主要用于判断远程客户端是否在线,用于 ping本身服务器,返回值为 changed、ping。 (1) Ansible ping 服务器状态,如图所示:

ansible -k all -m ping
1

在这里插入图片描述

Ansible command 模块实战

Ansible command 模块为 ansible 默认模块,主要用于执行 Linux 基础命令,可以执行远程服务器命令执行、任务执行等操作。 Command 模块使用详解:

Chdir 执行命令前,切换到目录;
Creates 当该文件存在时,则不执行该步骤;
Executable 换用 shell 环境执行命令;
Free_form 需要执行的脚本;
Removes 当该文件不存在时,则不执行该步骤;
Warn 如果在 ansible.cfg 中存在告警,如果设定了 False,不会警告此行。

Ansible command 模块企业常用案例如下: (1) Ansible command 模块远程执行 date 命令,执行结果如图所示:

#Ansible command date 命令执行结果
ansible -k -i /etc/ansible/hosts all -m command -a "date"
12

在这里插入图片描述 (2) Ansible command 模块远程执行 ping 命令,执行结果如图所示:

# Ansible command ping 命令执行结果
ansible -k all -m command -a "ping -c 1 www.baidu.com"
12

在这里插入图片描述 (3) Ansible Hosts 正则模式远程执行 df -h,执行结果如图所示:

# Ansible command df -h 命令执行结果
ansible -k 192.168.149.13* -m command -a "df -h"
12

在这里插入图片描述

Ansible copy 模块实战

Ansible copy 模块主要用于文件或者目录拷贝,支持文件、目录、权限、用户组功能,copy 模块使用详解:

src Ansible 端源文件或者目录,空文件夹不拷贝;
content 用来替代 src,用于将指定文件的内容,拷贝到远程文件内;
dest 客户端目标目录或者文件,需要绝对路径;
backup 拷贝之前,先备份远程节点上的原始文件;
directory_mode 用于拷贝文件夹,新建的文件会被拷贝,而老旧的不会被拷贝;
follow 支持 link 文件拷贝;
force 覆盖远程主机不一致的内容;
group 设定远程主机文件夹的组名;
mode 指定远程主机文件及文件及的权限;
owner 设定远程主机文件夹的用户名。

Ansible copy 模块企业常用案例如下: (1) Ansible copy 模块操作,src 表示源文件,dest 表示目标目录或者文件,owner 指定拥有者,执行结果如图所示:

#Ansible copy 拷贝文件
ansible -k all -m copy -a 'src=/etc/passwd dest=/tmp/ mode=755 owner=root'
12
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值