编辑
2025-11-04
Ansible
00
请注意,本文编写于 46 天前,最后修改于 35 天前,其中某些信息可能已经过时。

目录

一、ansible介绍
二、ansible模块
三、ansible安装
四、基本配置
进入到ansible目录下,修改hosts即可配置管理对应的主机
/etc/ansible/ansible.cfg(主配置文件)

一、ansible介绍

  • Ansible 是一款 自动化运维工具,核心作用是通过代码(YAML 格式的剧本 / Playbook)批量管理多台服务器,实现「自动化部署、配置管理、任务执行」等操作,减少人工重复劳动,提高运维效率和一致性。
  • 简单说,它能帮你做这些事:
  • 批量在 100 台服务器上安装软件(比如统一装 Nginx);
  • 远程修改多台机器的配置文件(比如批量调整内核参数);
  • 一键启停 / 重启所有服务器上的某个服务(比如统一重启数据库);
  • 自动部署应用(从代码拉取到服务启动全流程自动化);
  • 收集所有主机的硬件 / 系统信息(比如内存、IP、系统版本)。
  • 它的特点是 无需在远程主机安装客户端(基于 SSH 通信),配置简单,用 YAML 语法编写剧本,上手门槛较低,广泛用于中小型企业的自动化运维场景。

二、ansible模块

  • command/shell:远程执行命令(shell 支持管道、重定向等语法,command 不支持)
  • copy:将本地文件 / 目录推送到远程主机,可设置权限、属主等
  • yum:远程通过 yum 安装、卸载、更新软件(适用于 CentOS/RHEL 等)
  • service:远程管理服务启停、重启、重载,兼容 SysVinit 和 systemd
  • script:本地脚本直接在远程主机执行(无需先传文件)
  • file:远程管理文件 / 目录(创建、删除、权限)、软链接 / 硬链接
  • group:远程创建、删除用户组,修改组 ID(GID)
  • user:远程创建、删除用户,设置密码、所属组、家目录等
  • cron:远程添加、修改、删除定时任务(crontab)
  • mount:远程挂载文件系统(磁盘、NFS 等),并写入 /etc/fstab 实现开机自动挂载
  • get_url:远程主机下载文件(从 URL 获取)
  • systemd:通过 systemd 管理服务(启停、开机自启等,适用于 systemd 系统)
  • selinux:远程开启、关闭或配置 SELinux 模式
  • setup:收集远程主机的系统信息(如硬件、系统版本等)

三、ansible安装

js
yum install -y epel-release yum install -y ansible

四、基本配置

进入到ansible目录下,修改hosts即可配置管理对应的主机

js
vi /etc/ansible/hosts

方式一:操作时是根据模块去操作的,直接填写服务器账号密码

yml
[elk1] 192.168.183.112 [elk2] 192.168.183.113 # 因为两个组的登录信息完全相同,可合并为一个公共组变量(更简洁) [elk1:vars] ansible_user=root ansible_password=12345678 [elk2:vars] ansible_user=root ansible_password=12345678

image.png

方式二就是做服务器之间的免密登录

/etc/ansible/ansible.cfg(主配置文件)

作用:设置 Ansible 的全局默认参数(如远程用户、超时时间、提权配置等),覆盖默认行为。

js
vi /etc/ansible/ansible.cfg
yml
[defaults] # 1. 主机清单路径(默认就是/etc/ansible/hosts,可省略) inventory = /etc/ansible/hosts # 2. 默认远程登录用户(如果hosts文件没指定,就用这个) remote_user = root # 比如你远程主机用root登录,就设为root # 3. SSH私钥路径(如果用密钥登录,指定私钥位置) #private_key_file = /root/.ssh/id_rsa # 控制机上的私钥路径 # 4. 关闭主机密钥检查(首次连接无需手动确认yes,适合自动化) host_key_checking = False # 5. 连接超时时间(秒),避免卡太久 timeout = 10 # 6. 并行任务数(同时操作的主机数量,默认5,主机多就调大) forks = 20 # 7. 不生成重试文件(避免冗余的.retry文件) retry_files_enabled = False # 8. 关闭过时功能警告(减少输出噪音) deprecation_warnings = False [privilege_escalation] # 1. 是否自动提权(比如需要执行sudo命令时,自动切换到root) become = False # 2. 提权方式(常用sudo,也可以是su) #become_method = sudo # 3. 提权到目标用户(默认root) #become_user = root # 4. 是否需要输入sudo密码(如果远程主机sudo免密,设为False) #become_ask_pass = False

测试

js
重启 systemctl restart sshd # 测试elk1组的连通性 ansible elk1 -m ping # 测试在elk2主机执行sudo命令(比如查看/root目录,需要root权限) ansible elk2 -m command -a 'ls /root'

image.png

本文作者:松轩(^U^)

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Document