当前位置: 首页 > news >正文

Ansible 自动化运维:集中化管理服务器实战指南

前言

1. Ansible 概述与运行机制

1.1 Ansible 简介

1.2 工作机制

1.3 Role(角色)

2. Ansible 安装与部署

2.1 环境示例

2.2 安装步骤

2.3 配置免密登录

3. Ansible 常用命令与模块操作

3.1 command 模块(默认模块)

3.2 shell 模块

3.3 cron 模块(计划任务)

3.4 user 模块(用户管理)

3.5 group 模块(用户组管理)

3.6 copy 模块(文件复制)

3.7 file 模块(文件管理)

3.8 hostname 模块(修改主机名)

3.9 ping 模块(检测连通性)

3.10 yum 模块(软件包管理)

3.11 service/systemd 模块(服务管理)

3.12 script 模块(执行本地脚本)

3.13 setup 模块(收集节点信息)

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

4.1 主机分组

4.2 常用变量

4.3 基础分组与主机变量

4.4 组变量

4.5 组嵌套(children)

5. 总结

前言

在现代运维环境中,自动化已成为提升效率、降低出错率的关键。本文将通过 Ansible 工具,带你了解其概述、安装、常用模块操作及主机清单管理,快速上手自动化运维。


1. Ansible 概述与运行机制

1.1 Ansible 简介

Ansible 是一款面向类 Unix 系统的开源自动化配置与管理工具,由 Python 编写,具有以下特点:

  • 轻量级:无需在被管理节点安装客户端

  • 安全高效:通过 SSH 与节点通信

  • 易扩展:支持 YAML + Jinja2 模板,便于编排复杂任务

  • 社区活跃:2015 年被 Red Hat 收购,拥有广泛用户基础

1.2 工作机制

Ansible 通过 SSH 将模块推送到被管理节点执行,执行完成后会自动删除,既安全又高效。它的核心组件包括:

  • Ansible 核心引擎

  • Modules 模块(内置或自定义)

  • Plugins 插件(补充模块功能)

  • Playbooks 剧本(定义多任务操作)

  • Inventory 主机清单(管理主机资源)

1.3 Role(角色)

当 Playbook 规模扩大时,可以用 Role 将任务模块化管理。角色具备以下优势:

  • 按目录结构组织任务、变量和模板

  • 代码复用性高,可被多次调用

  • 易于团队协作和维护


2. Ansible 安装与部署

2.1 环境示例

类型IP 地址
管理端192.168.10.50
被管理端1192.168.10.251
被管理端2192.168.10.252

2.2 安装步骤

# 安装 EPEL 源
yum install -y epel-release
​
# 安装 Ansible
yum install -y ansible

默认目录结构:

/etc/ansible/
├── ansible.cfg   # 配置文件
├── hosts         # 主机清单
└── roles/        # 公共角色目录

2.3 配置免密登录

ssh-keygen -t rsa
sshpass -p '123456' ssh-copy-id root@192.168.10.251
sshpass -p '123456' ssh-copy-id root@192.168.10.252

3. Ansible 常用命令与模块操作

Ansible 的命令基本格式:

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

3.1 command 模块(默认模块)

  • 用于远程执行命令,不支持管道或重定向

ansible 192.168.10.251 -m command -a 'date'
ansible webservers -a 'ls /'

常用参数:

  • chdir:执行前进入指定目录

  • creates:文件存在则跳过执行

3.2 shell 模块

  • 支持管道和 shell 特性

ansible dbservers -m shell -a 'echo 123456 | passwd --stdin test'

3.3 cron 模块(计划任务)

ansible webservers -m cron -a 'minute="*/1" job="/bin/echo helloworld" name="test crontab"'
ansible webservers -m cron -a 'name="test crontab" state=absent'

3.4 user 模块(用户管理)

ansible dbservers -m user -a 'name="test01"'
ansible dbservers -m user -a 'name="test01" state=absent'

常用参数:namestatesystemuidgroupshellpassword

3.5 group 模块(用户组管理)

ansible dbservers -m group -a 'name=mysql gid=306 system=yes'

3.6 copy 模块(文件复制)

ansible dbservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak owner=root mode=640'
ansible dbservers -m copy -a 'content="helloworld" dest=/opt/hello.txt'

3.7 file 模块(文件管理)

ansible dbservers -m file -a 'path=/opt/abc.txt state=touch'   #创建文件
ansible dbservers -m file -a 'path=/opt/abc.txt state=absent'  #删除文件

3.8 hostname 模块(修改主机名)

ansible dbservers -m hostname -a "name=mysql01"

3.9 ping 模块(检测连通性)

ansible all -m ping

3.10 yum 模块(软件包管理)

ansible webservers -m yum -a 'name=httpd'
ansible webservers -m yum -a 'name=httpd state=absent'

3.11 service/systemd 模块(服务管理)

ansible webservers -m service -a 'enabled=true name=httpd state=started'

3.12 script 模块(执行本地脚本)

ansible webservers -m script -a 'test.sh'

3.13 setup 模块(收集节点信息)

ansible dbservers -m setup -a 'filter=*ipv4'

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

4.1 主机分组

/etc/ansible/hosts 文件中可以按组管理主机:

[webservers]
192.168.10.251 ansible_port=22 ansible_user=root ansible_password=abc1234
​
[dbservers]
192.168.10.252

还支持:

  • 指定端口:192.168.10.251:2222

  • 列表匹配:192.168.10.1[2:5]

  • 通配符:db-[a:f].example.org

4.2 常用变量

变量名含义
ansible_host节点 IP
ansible_portSSH 端口(默认 22)
ansible_userSSH 用户
ansible_passwordSSH 密码
ansible_ssh_private_key_file私钥文件
ansible_become提升权限
ansible_become_method提升方式(sudo/su)

4.3 基础分组与主机变量

[webservers]
192.168.10.50 ansible_port=2222 ansible_user=root ansible_password=abc1234
192.168.10.251 ansible_port=22 ansible_user=root ansible_password=abc1234
​
[dbservers]
192.168.10.252 ansible_user=dbadmin ansible_password=xyz1234

上面每台主机都可以有自己的连接参数。

4.4 组变量

[组名:vars] 中定义,整个组共享:

[webservers:vars]
ansible_user=root
ansible_password=abc1234
​
[dbservers:vars]
ansible_user=dbadmin
ansible_password=xyz1234

4.5 组嵌套(children)

可以把多个组组合成一个大组:

[nginx]
192.168.10.50
192.168.10.251
​
[apache]
192.168.10.252
​
[webs:children]
nginx
apache

5. 总结

Ansible 以其轻量、无需客户端和模块丰富的特性,成为自动化运维的热门选择。通过本文的内容,你可以快速搭建 Ansible 环境、熟悉常用模块操作并管理主机清单,助力企业实现高效、可重复的运维自动化。

http://www.dtcms.com/a/403089.html

相关文章:

  • 自动化运维工具 Ansible 集中化管理服务器
  • 【好玩的开源项目】使用Docker部署LMS轻量级音乐服务器
  • Netty从0到1系列之RPC通信
  • Coze源码分析-资源库-创建数据库-后端源码-安全与错误处理
  • LeetCode:52.腐烂的橘子
  • LeetCode算法日记 - Day 52: 求根节点到叶节点数字之和、二叉树剪枝
  • 四种方法解决——力扣189.轮转数组
  • ⸢ 伍-Ⅱ⸥ ⤳ 默认安全治理实践:水平越权检测 前端安全防控
  • 力扣856
  • Leetcode94.二叉数的中序遍历练习
  • 多种解法全解析——力扣217. 存在重复元素
  • 用python做的网站多吗二手书交易网站策划书
  • phpcms网站源码ui培训班多少钱
  • Android Studio 导入 opencv
  • 在线网站做成appdede网站地图样式修改
  • 全新尚界H5凭借HUAWEI XMC数字底盘引擎技术,让湿滑路面也“稳”操胜券
  • iOS 26 性能测试实战,如何评估启动速度、CPUGPU 负载、帧率与系统资源适配(uni-app 与 iOS 原生应用性能方案)
  • 腾讯会议→微课操作
  • html原生表格,实现左侧列固定
  • Idea提高开发效率的快捷键最佳学习方式
  • 做网站一定需要icp么中国建设协会官网
  • Selenium使用教程
  • 多线程——单例模式
  • 镜头调焦的 调整的是焦距还是像距?
  • (四)React+.Net+Typescript全栈(错误处理)
  • @ant-design/icons-vue 打包成多格式库
  • 什么是营销型网站?杭州建设教育网站
  • C++开发环境(VSCode + CMake + gdb)
  • JAVA CodeX精选实用代码示例
  • 肥东网站建设南京医院网站建设