自动化运维工具 Ansible 集中化管理服务器

目录

[1. Ansible 概述和运行机制](#1. Ansible 概述和运行机制)

[1.1 Ansible 概述](#1.1 Ansible 概述)

[1.2 Ansible 工作机制](#1.2 Ansible 工作机制)

[1.3 Ansible 角色 (Role)](#1.3 Ansible 角色 (Role))

[2. Ansible 环境安装部署](#2. Ansible 环境安装部署)

[3. Ansible 基础命令及模块操作](#3. Ansible 基础命令及模块操作)

[3.1 command 模块](#3.1 command 模块)

[3.2 shell 模块](#3.2 shell 模块)

[3.3 cron 模块](#3.3 cron 模块)

[3.4 user 模块](#3.4 user 模块)

[3.5 group 模块](#3.5 group 模块)

[3.6 copy 模块](#3.6 copy 模块)

[3.7 file 模块](#3.7 file 模块)

[3.8 hostname 模块](#3.8 hostname 模块)

[3.9 ping 模块](#3.9 ping 模块)

[3.10 yum 模块](#3.10 yum 模块)

[3.11 service/systemd 模块](#3.11 service/systemd 模块)

[3.12 script 模块](#3.12 script 模块)

[3.13 setup 模块](#3.13 setup 模块)

[4. Inventory 主机清单与变量配置](#4. Inventory 主机清单与变量配置)

[4.1 Inventory支持对主机进行分组](#4.1 Inventory支持对主机进行分组)

[4.2 常用 Inventory 变量](#4.2 常用 Inventory 变量)

(1)主机变量

(2)组变量

[(3) 组嵌套](#(3) 组嵌套)


1. Ansible 概述和运行机制

1.1 Ansible 概述

Ansible 是一款面向类 Unix 系统的自由开源配置和自动化工具,由 Python 编写。与 SaltStack、Puppet、Chef 相似,但具有以下优势:

  • 无需在被管理节点安装客户端,轻量级。
  • 通过 SSH 协议与节点通信。
  • 使用 YAML 和 Jinja2 模板语言进行配置和自动化任务编排。

官方网站: https://www.ansible.com/

1.2 Ansible 工作机制

Ansible 通过 SSH 将模块推送到被管理节点执行,执行完后自动删除。可结合 SVN 等工具管理自定义模块及任务编排。

Ansible 核心组成:

**1. Ansible:**核心引擎

**2. Modules:**内置核心模块和自定义模块

**3. Plugins:**补充模块功能,如连接插件、邮件插件等

**4. Playbooks:**剧本,定义多任务操作

**5. Inventory:**主机清单

1.3 Ansible 角色 (Role)

随着数据中心环境复杂化,Playbook 会变得庞大且难以维护。角色提供了对复杂任务的模块化管理:

  • 将任务组织为独立、可复用的剧本和文件
  • 提供从外部加载任务、处理程序、变量的机制
  • 可关联静态文件和模板
  • 满足通用需求,可重复使用
  • 严格的目录结构要求

2. Ansible 环境安装部署

环境示例:

|--------|---------------|
| 类型 | IP |
| 管理端 | 192.168.10.23 |
| 被管理端 | 192.168.10.14 |
| 被管理端 | 192.168.10.15 |

管理端安装 Ansible:

yum install -y epel-release # 安装 EPEL 源

yum install -y ansible

目录结构:

/etc/ansible/

├── ansible.cfg # 配置文件,一般无需修改

├── hosts # 主机清单

└── roles/ # 公共角色目录

配置主机清单:

vim /etc/ansible/hosts

webservers #配置组名

192.168.10.14 #组里包含的被管理的主机IP地址或主机名(主机名需要先修改/etc/hosts文件)

dbservers

192.168.10.15

配置免密 SSH 登录:

3. Ansible 基础命令及模块操作

命令格式

ansible <组名> -m <模块> -a <参数>

常用模块示例

3.1 command 模块

远程执行命令,不支持管道/重定向

3.2 shell 模块

支持管道和 shell 特性

3.3 cron 模块

管理计划任务

3.4 user 模块

用户管理

3.5 group 模块

3.6 copy 模块

复制文件或内容

3.7 file 模块

文件管理

3.8 hostname 模块

修改主机名

3.9 ping 模块

检测主机连通性

ansible all -m ping

3.10 yum 模块

管理软件包

3.11 service/systemd 模块

服务管理

3.12 script 模块

执行本地脚本

3.13 setup 模块

收集节点信息

4. Inventory 主机清单与变量配置

4.1 Inventory支持对主机进行分组

4.2 常用 Inventory 变量

|------------------------------|---------------------|
| 变量名 | 含义 |
| ansible_host | 节点 IP |
| ansible_port | SSH 端口,默认 22 |
| ansible_user | SSH 用户 |
| ansible_password | SSH 密码(未使用密钥时) |
| ansible_ssh_private_key_file | 私钥文件 |
| ansible_become | 提升权限 |
| ansible_become_method | 提升方式(sudo/su/runas) |
| ansible_become_user | 提升为指定用户 |
| ansible_become_password | 提升密码 |

基本示例:

(1)主机变量

webservers

192.168.10.14 ansible_port=22 ansible_user=root ansible_password=abc1234

(2)组变量

webservers:vars

ansible_user=root

ansible_password=abc1234

all:vars

ansible_port=22

(3) 组嵌套

nginx

192.168.10.20

192.168.10.21

192.168.10.22

apache

192.168.10.30

192.168.10.31

192.168.10.32

192.168.10.33

webs:children

nginx

apache

相关推荐
oicola4 分钟前
【运维】CI/CD是什么,合格的规范应该怎么设置
运维·ci/cd
Dachui_11226 分钟前
内网穿透如何限制访问地区?ZeroNews Geo Location 区域访问控制实践
运维·网络安全·内网穿透·访问控制·远程办公·api安全·ip白名单
根目录下的猫24 分钟前
虚拟机复制过来运行时:“虚拟机使用的此版本,VMware Workstation 不支持的硬件版本。”错误解决办法,亲测可用
linux·运维·服务器·后端
梦帮科技27 分钟前
【3.0】上线与运维:节点监控、水龙头、区块浏览器与安全清单
运维·安全·web安全·金融·区块链·密码学·安全架构
初雪云30 分钟前
UniApp 云打包拿到 IPA 后,真正的发布工作才刚开始
ios·自动化·编辑器·产品经理·iphone
帷幕落秋1 小时前
内存、虚拟内存与 OOM
linux·运维
mengge.cloud1 小时前
Redis
运维·服务器·数据库·redis·缓存·云计算
Smoothcloud润云1 小时前
GPU服务器租用实例DNS与HTTPS下载排障实战
大数据·运维·服务器·人工智能·https·gpu算力
Apipi*1 小时前
30天速通Linux 第五章Linux 进程管理
linux·运维·服务器
杨云龙UP1 小时前
PostgreSQL 四种常见部署模式快速理解:单实例、流复制、repmgr、Patroni
linux·运维·数据库·postgresql·流复制·高可用ha