Ansible 核心运维场景落地:YUM 仓库、SSH 公钥、固定 IP 配置技巧

1:如何一次性验证所有主机能否被 Ansible 访问?

答:使用临时命令:ansible all -m ansible.builtin.ping

或验证 sudo 是否正常:ansible all -m ansible.builtin.ping --become -K

2:如何用 Ansible 统一配置 YUM/DNF 仓库并导入 GPG key?

答:

  • 写仓库文件:

yaml

  • name: 配置 EPEL

ansible.builtin.yum_repository:

name: epel

description: EPEL

baseurl: https://download.fedoraproject.org/pub/epel/$releasever/$basearch/

gpgcheck: 1

gpgkey: https://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }}

  • 导入公钥:

yaml

  • name: 导入 EPEL GPG key

ansible.builtin.rpm_key:

key: https://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }}

state: present

  • 装包:

yaml

  • name: 安装 htop

ansible.builtin.dnf:

name: htop

state: present

3:如何在 100 台服务器上批量创建运维用户并下发 SSH 公钥?

答:用 user + authorized_key 模块:

yaml

  • name: 创建 ops 用户

ansible.builtin.user:

name: ops

groups: wheel

shell: /bin/bash

generate_ssh_key: yes

  • name: 下发公钥到 ops 用户

ansible.posix.authorized_key:

user: ops

key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"

4:如何确保只有 wheel 组可免密 sudo?

答:用 lineinfile 修改 sudoers:

yaml

  • name: 配置 sudoers

ansible.builtin.lineinfile:

path: /etc/sudoers

regexp: '^%wheel'

line: '%wheel ALL=(ALL) NOPASSWD:ALL'

validate: 'visudo -cf %s'

5:如何每天晚上 2 点跑备份脚本?

答:cron 模块:

yaml

  • name: 添加备份计划任务

ansible.builtin.cron:

name: nightly-backup

minute: "0"

hour: "2"

job: /usr/local/bin/backup.sh

user: root

6:如何用系统角色一键创建 20 GB 的逻辑卷并挂载到 /data?

答:调用 redhat.rhel_system_roles.storage:

yaml

  • hosts: db_servers

vars:

storage_pools:

  • name: vg_data

disks: sdb

volumes:

  • name: lv_data

size: 20g

mount_point: /data

fs_type: xfs

roles:

  • redhat.rhel_system_roles.storage

7:如何给一批主机同时配置固定 IP、网关和 DNS?

答:使用redhat.rhel_system_roles.network:

yaml

  • hosts: web_servers

vars:

network_connections:

  • name: ens192

type: ethernet

autoconnect: yes

ip:

address:

  • 192.168.10.50/24

gateway: 192.168.10.1

dns:

  • 8.8.8.8

  • 8.8.4.4

state: up

roles:

  • redhat.rhel_system_roles.network

8:如何立即重启机器并等待其重新上线?

答:reboot 模块:

yaml

  • name: 重启并等待

ansible.builtin.reboot:

reboot_timeout: 600

相关推荐
ScilogyHunter38 分钟前
GCC完全指南
linux·gcc
CodeStats1 小时前
从 CPU 指令到 JVM 进程:彻底讲透 Java 执行 main 方法时,类加载、主线程、栈帧入栈的完整底层逻辑
java·linux·开发语言
测试员周周1 小时前
【AI测试智能体-面试】AI测试面试60题(附回答思路)
人工智能·python·功能测试·测试工具·单元测试·自动化·测试用例
asyxchenchong8882 小时前
最新Hermes Agent 技能封装与科研自动化:以 Meta-Analysis 为例-实现从文献检索到绘图的一站式工作流
运维·人工智能·自动化
tianyuanwo2 小时前
项目内自我管理:一名OS领域DevOps的破局之路
运维·devops
三十..2 小时前
Redis 核心原理与高可用架构实践
运维·数据库·redis
richard_yuu2 小时前
C#工业上位机项目实战第九篇:可视化流程引擎完整落地,节点拖拽、连线渲染与自动化调度
c#·自动化
努力努力再努力wz3 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
Jurio.3 小时前
开源 Codex Sticky:在终端 Codex CLI 长对话中始终固定底部输入框
linux·rust·github·开源软件·codex·codex cli
无足鸟ICT3 小时前
【RHCA+】撤销和恢复撤销快捷键
linux