贝博恩创新科技网

Ansible如何适配互联网复杂使用场景?

  1. 如何使用 Ansible 来管理和配置互联网上的服务器/设备。
  2. Ansible 本身是如何通过互联网进行工作的(从 GitHub 下载 Playbook)。

这两个层面都非常重要,构成了 Ansible 在现代 IT 运维中的核心价值。

Ansible如何适配互联网复杂使用场景?-图1
(图片来源网络,侵删)

使用 Ansible 管理互联网上的服务器

这是 Ansible 最常见的应用场景,你需要在自己的电脑上(控制节点)运行 Ansible,去管理部署在云服务商(如阿里云、腾讯云、AWS、Google Cloud)或本地机房里的远程服务器(被管理节点)。

核心概念与流程

  1. 控制节点:

    • 是什么: 运行 Ansible 命令的机器,它可以是你的笔记本电脑、台式机,或者一台专用的运维服务器。
    • 要求: 必须安装了 Python 3.6+ 和 Ansible,它本身不需要安装 SSH 服务端或被管理节点上的代理。
  2. 被管理节点:

    • 是什么: 你想要用 Ansible 进行配置、管理、部署的服务器、网络设备、容器等。
    • 要求: 必须安装了 Python 2.7+ 或 Python 3+,绝大多数现代 Linux 发行版都自带了 Python,对于没有 Python 的设备(如某些网络设备、Windows),Ansible 也有相应的解决方案(使用 WinRM 协议管理 Windows)。
  3. 连接方式:

    Ansible如何适配互联网复杂使用场景?-图2
    (图片来源网络,侵删)
    • SSH (默认): Ansible 默认通过 SSH 连接到被管理节点,这是最常用、最标准的方式。
    • 其他协议: 也支持通过 WinRM (Windows)、API 等。

实践步骤:通过互联网管理一台云服务器

假设你的场景是:

  • 控制节点: 你本地的 macOS/Linux 电脑。
  • 被管理节点: 阿里云/腾讯云/AWS 上的一台新的 Ubuntu 服务器。

第一步:准备环境

  1. 在控制节点上安装 Ansible:

    # 使用 pip 安装 (推荐)
    pip install ansible
    # 或者使用包管理器 (例如在 Ubuntu 上)
    sudo apt update
    sudo apt install ansible
  2. 在被管理节点上确保 Python 和 SSH 服务可用:

    Ansible如何适配互联网复杂使用场景?-图3
    (图片来源网络,侵删)

    大多数云服务器镜像(如 Ubuntu Server, CentOS)默认都已安装 Python 和 OpenSSH 服务,无需额外操作。

第二步:配置 SSH 免密登录

这是最关键的一步,为了安全方便,我们使用 SSH 密钥对进行认证,而不是每次都输入密码。

  1. 在控制节点上生成 SSH 密钥对 (如果还没有的话):

    ssh-keygen -t rsa -b 4096
    # 一路按回车即可,默认会生成在 ~/.ssh/id_rsa
  2. 将公钥复制到被管理节点: 你需要将公钥(~/.ssh/id_rsa.pub,添加到被管理节点的 ~/.ssh/authorized_keys 文件中。

    • 手动方法: 登录到被管理节点,执行以下命令:
      mkdir -p ~/.ssh
      echo "你的公钥内容" >> ~/.ssh/authorized_keys
      chmod 700 ~/.ssh
      chmod 600 ~/.ssh/authorized_keys
    • 自动化方法 (推荐): 使用 ssh-copy-id 命令,它会自动帮你完成上述操作:
      # 将公钥复制到用户 'ubuntu' 的家目录下
      ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@<你的服务器公网IP>
      # 系统会提示你输入一次 'ubuntu' 用户的密码

      成功后,你就可以从控制节点免密登录到被管理节点了:

      ssh ubuntu@<你的服务器公网IP>

第三步:编写 Ansible Inventory (清单)

Inventory 文件定义了哪些服务器可以被 Ansible 管理,创建一个文件,inventory.ini

# inventory.ini
[web_servers]
# 这里填写你的服务器公网IP
server1.example.com
# 也可以使用IP地址
192.168.1.100 ansible_user=ubuntu
# 你可以为单个主机定义特定变量
[web_servers:vars]
ansible_python_interpreter=/usr/bin/python3
  • [web_servers]: 这是一个主机组名,你可以自定义。
  • server1.example.com: 被管理节点的主机名或 IP 地址。
  • ansible_user=ubuntu: 指定连接该节点时使用的用户名。

第四步:编写你的第一个 Playbook

Playbook 是 Ansible 的核心,它是一个 YAML 文件,定义了一系列任务(Tasks),用于配置被管理节点。

创建一个文件 site.yml

# site.yml
---
- name: Ensure Nginx is installed and running
  hosts: web_servers
  become: yes  # 使用 sudo 权限执行任务
  tasks:
    - name: Update apt cache
      ansible.builtin.apt:
        update_cache: yes
      changed_when: false # 避免第一次运行时总是报告变更
    - name: Install Nginx
      ansible.builtin.apt:
        name: nginx
        state: present
    - name: Start Nginx service
      ansible.builtin.service:
        name: nginx
        state: started
        enabled: yes # 设置为开机自启

第五步:运行 Playbook

一切就绪,可以在你的控制节点上执行 Playbook 了:

# -i 指定 inventory 文件
# -k 可以交互式输入密码(如果没用密钥的话)
ansible-playbook -i inventory.ini site.yml

第一次运行时,Ansible 会连接到服务器,执行任务,完成后,你可以通过浏览器访问你的服务器公网 IP,应该就能看到 Nginx 的欢迎页面了。


Ansible 本身在互联网上的使用

Ansible 的一个巨大优势是它的“代码即配置”理念,这使得它非常适合在互联网上进行协作和分发。

  1. 从 Git 仓库获取 Playbook

    • 这是最佳实践,团队将 Playbooks、Roles、Inventory 等所有配置文件都存放在 Git 仓库(如 GitHub, GitLab, Gitee)中。
    • 运维人员可以 git clone 这个仓库,然后直接运行 ansible-playbook
    • 好处:
      • 版本控制: 所有的变更都有记录,可以回滚。
      • 协作: 多人可以共同开发和维护配置。
      • 可重复性: 确保任何人在任何地方都能拿到最新的、正确的配置。
    # 克隆一个包含 Ansible 项目的仓库
    git clone https://github.com/your-org/ansible-configs.git
    # 进入目录并运行
    cd ansible-configs
    ansible-playbook -i production.ini site.yml
  2. 使用 Ansible Galaxy

    • 是什么: Ansible 官方的一个社区共享平台,类似于 PyPI(Python包管理器)或 npm(Node.js包管理器)。

    • 用途: 在上面可以找到由社区成员编写和分享的 Roles,一个 Role 是一个预配置好的、可重用的模块,用于完成特定任务(比如安装 MySQL、配置 Nginx、部署 Docker 等)。

    • 如何使用:

      # 从 Galaxy 安装一个 Role
      ansible-galaxy install geerlingguy.docker
      # 安装后,你就可以在自己的 Playbook 中使用这个 Role 了
      ---
      - hosts: webservers
        roles:
          - geerlingguy.docker
  3. 使用 Ansible Tower / AWX

    • 是什么: 这是 Ansible 的商业版和开源版 Web 界面,它们提供了一个图形化界面,让你可以:
      • 可视化管理 Inventory、Credentials(密钥)、Playbooks。
      • 创建和监控 Job(任务执行)。
      • 设置定时任务(Cron Jobs)。
      • 实现权限控制和审计。
    • 互联网使用: AWX/Tower 通常部署在内网,但可以通过安全网关或 VPN 从互联网访问,实现集中的、可视化的自动化运维。
  4. Ansible 在 CI/CD 流水线中的使用

    • 在现代化的软件开发流程中,Ansible 是 CI/CD(持续集成/持续部署)的关键一环。
    • 流程:
      1. 开发者提交代码到 GitHub/GitLab。
      2. CI/CD 工具(如 Jenkins, GitLab CI, GitHub Actions)被触发。
      3. 工具自动拉取 Ansible Playbook。
      4. 执行 Playbook,自动部署最新的应用到测试服务器或生产服务器。
分享:
扫描分享到社交APP
上一篇
下一篇