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

从虚拟机到云服务器:我的Ansible学习环境搭建全记录(Ubuntu 22.04 + PPA源)

从零构建Ansible实验环境:Ubuntu 22.04实战指南

当第一次接触Ansible时,我被它"无代理"的设计理念所吸引——不需要在每台服务器上安装额外服务,仅凭SSH就能完成自动化操作。这种简洁性让我决定以Ansible作为DevOps工具链的起点。本文将分享我在本地虚拟机与云服务器混合环境中搭建Ansible实验环境的完整过程,特别适合刚接触自动化运维的开发者参考。

1. 环境规划与基础准备

在开始安装前,明确实验环境架构至关重要。我的测试环境包含:

  • 控制节点:1台Ubuntu 22.04主机(8GB内存)
  • 被控节点:3台Ubuntu 22.04主机(2GB内存)
    • 其中2台为VirtualBox本地虚拟机
    • 1台为腾讯云轻量应用服务器

这种混合环境设计能模拟真实场景中跨网络区域的服务器管理。关键准备工作包括:

# 在所有节点执行系统更新 sudo apt update && sudo apt upgrade -y # 检查SSH服务状态 systemctl status sshd

提示:建议为实验环境配置静态IP或域名解析,避免因IP变化导致连接问题

2. PPA源安装Ansible详解

Ubuntu官方源中的Ansible版本往往滞后于最新稳定版。通过PPA源安装能获得更多新特性支持:

# 添加官方PPA源 sudo apt-add-repository ppa:ansible/ansible # 刷新软件包索引 sudo apt update # 安装Ansible核心组件 sudo apt install ansible-core -y

安装完成后验证版本信息:

ansible --version

典型输出应包含:

ansible [core 2.15.5] config file = /etc/ansible/ansible.cfg python version = 3.10.12

与直接使用apt install ansible相比,PPA源安装具有以下优势:

特性PPA源安装系统默认源安装
版本时效性最新稳定版较旧版本
功能完整性包含所有模块基础模块
更新频率每周更新随系统更新

3. 主机清单设计与SSH配置

Ansible通过Inventory文件管理目标主机。我采用分组结构提高可管理性:

# /etc/ansible/hosts 示例 [local_vms] vm1 ansible_host=192.168.56.101 vm2 ansible_host=192.168.56.102 [cloud_servers] cloud1 ansible_host=123.456.789.101 [web_servers:children] local_vms cloud_servers

SSH密钥配置是自动化管理的基础:

# 生成ED25519密钥对(比RSA更安全) ssh-keygen -t ed25519 -C "ansible-control" # 批量分发公钥 for host in vm1 vm2 cloud1; do ssh-copy-id -i ~/.ssh/id_ed25519.pub $host done

注意:生产环境建议使用ssh-agent管理密钥,而非直接存储私钥

4. 首个Playbook实战验证

创建验证环境的playbook文件verify_env.yml

--- - name: 环境验证剧本 hosts: all become: yes tasks: - name: 安装Nginx apt: name: nginx state: present update_cache: yes - name: 获取Nginx版本 command: nginx -v register: nginx_version changed_when: false - name: 输出版本信息 debug: msg: "{{ nginx_version.stderr }}"

执行测试并观察输出:

ansible-playbook verify_env.yml

成功执行后应看到类似输出:

TASK [输出版本信息] ******************************** ok: [vm1] => { "msg": "nginx version: nginx/1.18.0 (Ubuntu)" }

5. 混合环境特殊配置

跨网络环境管理需要额外注意:

防火墙配置

# 云服务器安全组需放行SSH端口 ansible cloud_servers -m ansible.builtin.ufw -a "rule=allow port=22 proto=tcp"

时区同步

- name: 同步时区 timezone: name: Asia/Shanghai

性能调优

# /etc/ansible/ansible.cfg 优化项 [defaults] forks = 10 host_key_checking = False timeout = 30

6. 实验环境检查清单

每次实验前建议验证以下项目:

  1. 网络连通性测试
    ansible all -m ping
  2. 磁盘空间检查
    ansible all -a "df -h"
  3. 关键服务状态
    ansible all -m service -a "name=ssh state=started"

将检查过程封装成shell脚本:

#!/bin/bash echo "=== 开始环境检查 ===" ansible all -m ping > /dev/null && echo "√ 连通性测试通过" ansible all -a "free -m" | grep "Mem:" echo "=== 检查完成 ==="

经过三周的实践,这套环境已稳定运行超过50次playbook测试。最实用的经验是:为每个实验项目创建独立的Git分支,并在playbook中使用tags标记关键任务阶段。当需要回滚时,可以精确恢复到特定状态。

http://www.jsqmd.com/news/620898/

相关文章:

  • Claude Opus 4.6差评如潮!思考深度暴跌67%,AMD总监6852次日志打脸
  • 从零开始:将.NET 8 WebAPI无缝迁移至Docker的最佳实践
  • Qt入门基础
  • GxEPD2电子墨水驱动库深度解析:e-Paper嵌入式开发实战指南
  • 基于Python的智慧养老中心管理系统毕业设计
  • 模拟型对讲系统市场洞察:2026-2032年复合增长率(CAGR)为3.9%
  • ESP32驱动NIDEC 24H电机控制器全栈方案
  • LwRB:嵌入式轻量级环形缓冲区原理与DMA零拷贝实践
  • ZED视频录制全解析:从SVO格式到NVENC硬件加速
  • FreeRTOS任务优先级设错了?我的Zynq7020 TCP热拔插功能直接挂了
  • OPTIGA™ Trust M安全芯片Arduino开发全解析
  • mbed OS GPIO基础教程:DigitalIn/DigitalOut底层原理与实战
  • AIGlasses OS Pro 在智慧城市中的应用:交通流量视觉分析实战
  • AI Agent 跑完任务怎么通知你?我写了个微信推送服务屹
  • 从规则引擎到语义原生,AI代码审查演进全图谱,深度解析奇点大会公布的5层可信审查认证标准
  • 机器学习工程师的职业陷阱:如何避免
  • Qwen3-0.6B-FP8创意效果:模仿不同风格撰写技术教程
  • 零基础玩转Docker:从安装到实战
  • 值类型与引用类型:别再只背“栈和堆”了,看这 个实际影响绞
  • 觅感科技WiFi 2.4G5G双频双模技术的应用价值与能力
  • 从零到一:在麒麟V10桌面系统上部署Qt 5.12.3开发环境
  • 四步生图封神,GenEval从61%狂拉到92%,全面超越GPT-4o的TDM-R1模型来了
  • 扣子 2.5,过了体验那条红线
  • 台达A2/B2伺服电机编码器改功率软件那些事儿
  • 如何免费获得专业级电脑散热控制:FanControl完全指南
  • AI医学影像领域标杆推荐:德适
  • SQL中如何高效合并多张表的数据更新_使用MERGE INTO语法
  • 嵌入式AES-CBC轻量加密库:资源受限MCU的安全实现
  • [解决]vmware虚拟化 Intel VT-x/EPT 或 AMD-V/RVI(V)无法开启的问题
  • NVIDIA Profile Inspector 配置问题完全指南:从识别到解决的完整流程