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

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

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

相关文章:

  • 2025年9月计算机二级C++语言程序设计——选择题打卡Day11
  • 如何取得专案/设计/设定/物件的属性
  • mysql权限user表赋权操作修改
  • 《潮汐调和分析原理和应用》之四S_Tide使用2
  • 整体设计 的语言设计:通用模型语言的标准模板语言的规格模式语言(搜狗汪仔答问)
  • 【计算机网络】生产问题排查:如何使用Wireshark抓包/读取抓包文件进行网络分析
  • 使用AI大模型Seed1.5-VL精准识别开车接打电话等交通违法行为
  • TensorFlow深度学习实战(35)——概率神经网络
  • k8s(自写)
  • Kafka 4.0 生产者配置全解析与实战调优
  • STM32手动移植FreeRTOS
  • 算法(②排序算法)
  • 吴恩达机器学习作业八:SVM支持向量机
  • react代码分割
  • 对于牛客网—语言学习篇—编程初学者入门训练—复合类型:二维数组较简单题目的解析
  • Redis(自写)
  • LeetCode第438题 - 找到字符串中所有字母异位词
  • C++ 面试高频考点 力扣 34. 在排序数组中查找元素的第一个和最后一个位置 二分查找左右端点 题解 每日一题
  • 为什么vue3会移除过滤器filter
  • JUC并发编程10 - 内存(02) - volatile
  • 生成对抗网络(GAN):深度学习领域的革命性突破
  • DriveDreamer4D
  • YOLOv11 训练参数全解析:一文掌握 epochs、batch、optimizer 调优技巧
  • MySQL-事务(下)-MySQL事务隔离级别与MVCC
  • 检索优化-混合检索
  • 捡捡java——2、基础07
  • 使用git bash ,出现Can‘t get terminal settings: The handle is invalid. 的解决方法与思路
  • 数字人分身系统源码搭建与定制开发:核心技术解析与实践路径
  • 基于 Spring Boot3 的ZKmall开源商城分层架构实践:打造高效可扩展的 Java 电商系统
  • Kubernetes Dashboard 和 Rancher 功能对比以及详细安装步骤