GitHub热门项目Ansible:在Fedora 38环境下的安装与使用

云信安装大师
90
AI 质量分
10 5 月, 2025
2 分钟阅读
0 阅读

GitHub热门项目Ansible:在Fedora 38环境下的安装与使用

引言

Ansible是一款开源的自动化运维工具,由Red Hat公司维护,目前在GitHub上非常受欢迎。它采用YAML语言编写剧本(playbook),通过SSH协议管理远程主机,无需在被管理节点安装客户端。本文将详细介绍在Fedora 38系统上安装和使用Ansible的完整流程。

准备工作

在开始之前,请确保:
1. 已安装Fedora 38操作系统
2. 拥有sudo权限的用户账户
3. 稳定的网络连接

第一部分:安装Ansible

1. 更新系统软件包

首先更新系统所有软件包到最新版本:

代码片段
sudo dnf update -y

说明-y参数表示自动确认所有提示,避免交互式询问。

2. 安装Ansible核心包

Fedora官方仓库已经包含了Ansible软件包:

代码片段
sudo dnf install -y ansible

3. 验证安装

安装完成后检查版本:

代码片段
ansible --version

正常输出应类似于:

代码片段
ansible [core 2.14.x]

第二部分:基础配置

1. 配置Inventory文件

Inventory文件定义了Ansible管理的主机列表:

代码片段
sudo mkdir -p /etc/ansible
sudo nano /etc/ansible/hosts

添加以下示例内容(根据实际情况修改):

代码片段
[web_servers]
192.168.1.100 ansible_user=admin
192.168.1.101 ansible_user=admin

[db_servers]
192.168.1.200 ansible_user=admin

[all:vars]
ansible_python_interpreter=/usr/bin/python3

注意事项
ansible_user指定SSH连接使用的用户名
– Fedora默认使用Python3,所以需要明确指定解释器路径

2. SSH密钥配置(推荐)

为免密码登录配置SSH密钥:

代码片段
ssh-keygen -t rsa -b 4096
ssh-copy-id admin@192.168.1.100

原理说明:Ansible通过SSH连接远程主机,配置密钥认证可以避免每次操作输入密码。

第三部分:基本使用示例

1. Ad-hoc命令测试

执行简单的ping测试:

代码片段
ansible all -m ping -u admin

成功输出应包含:

代码片段
192.168.1.100 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

2. Playbook示例:部署Nginx服务

创建playbook文件nginx.yml

代码片段
---
- name: Install and start Nginx on web servers
  hosts: web_servers
  become: yes

  tasks:
    - name: Install Nginx package
      dnf:
        name: nginx
        state: latest

    - name: Start and enable Nginx service
      service:
        name: nginx
        enabled: yes 
        state: started

    - name: Ensure firewall allows HTTP traffic 
      firewalld:
        service: http 
        permanent: yes 
        state: enabled 
        immediate: yes

    - name: Create default index.html 
      copy:
        content: "Hello from Ansible-managed server!"
        dest: /usr/share/nginx/html/index.html

    - name: Verify Nginx is running 
      uri:
        url: http://localhost/
        return_content: yes 
      register: nginx_status 

    - debug:
        var: nginx_status.content 

代码说明
become: yes表示使用sudo权限执行任务
dnf模块用于Fedora的包管理
service模块管理系统服务
firewalld模块配置防火墙规则
uri模块用于HTTP请求测试

执行playbook:

代码片段
ansible-playbook nginx.yml -K --limit web_servers --extra-vars "host_key_checking=False"

参数说明:
-K:提示输入sudo密码
--limit:限制执行的主机组
--extra-vars:临时变量

第四部分:常见问题解决

Q1:SSH连接超时问题

如果遇到连接超时,检查:
1. SSH服务是否正常运行
2. 防火墙是否阻止了SSH端口(默认22)
3. Inventory文件中IP地址是否正确

Q2:”Failed to connect to the host via ssh”错误

解决方法:

代码片段
export ANSIBLE_HOST_KEY_CHECKING=False   #临时关闭主机密钥检查 
ansible-playbook playbook.yml --extra-vars "ansible_ssh_private_key_file=/path/to/key"

Q3:Python解释器路径问题

如果报错”Python interpreter not found”,在Inventory中添加:

代码片段
[all:vars]
ansible_python_interpreter=/usr/bin/python3 

第五部分:进阶建议

1.Galaxy角色管理

代码片段
ansible-galaxy install username.rolename   #从Galaxy下载社区角色  

2.变量分离
将变量单独存放在groupvars或hostvars目录中,提高可维护性

3.标签(Tags)
给任务添加标签实现选择性执行:

代码片段
tasks:
    - name: Install packages 
      tags:
          - packages  
          - setup  

然后运行:

代码片段
ansible-playbook playbook.yml --tags "packages"   

总结

本文详细介绍了在Fedora38上安装和使用Ansible的全过程,包括:
1️⃣ Ansible核心包的安装方法
2️⃣ Inventory文件的基本配置
3️⃣ Playbook的编写与执行技巧
4️⃣ SSH密钥认证的最佳实践

作为一款强大的自动化工具,Ansible可以显著提高运维效率。建议从简单的任务开始练习,逐步掌握更复杂的自动化场景。

原创 高质量