news 2026/4/16 14:51:11

Ansible的常见用法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ansible的常见用法

目录

一、Ansible 安装

1.pip 安装(推荐,版本最新)

2.CentOS/RHEL 安装

3.Ubuntu/Debian 安装

二、Ansible 基础配置

1. 免密登录配置(核心)

2. 配置主机清单(Inventory)

3. 核心配置文件(ansible.cfg)

三、Ansible 常见用法

1. 基础命令(Ad-Hoc 临时命令)

2. Playbook(剧本)

3. 常用模块速查


一、Ansible 安装

Ansible 是基于 Python 开发的自动化工具,支持多种安装方式,这里推荐最常用的pip 安装系统包管理器安装

前置条件

  • 控制节点(运行 Ansible 的机器):Linux/macOS(Windows 需用 WSL),Python 3.8+
  • 被管理节点:无需安装 Ansible,只需开启 SSH 服务,且控制节点能免密登录

1.pip 安装(推荐,版本最新)

# 升级 pip pip3 install --upgrade pip # 安装 Ansible pip3 install ansible # 验证安装 ansible --version

2.CentOS/RHEL 安装

# 安装 EPEL 源(CentOS 7) yum install -y epel-release # 安装 Ansible yum install -y ansible # CentOS 8/RHEL 8 需先启用 PowerTools dnf install -y epel-release dnf config-manager --set-enabled powertools dnf install -y ansible

3.Ubuntu/Debian 安装

# 更新源 apt update # 安装依赖 apt install -y software-properties-common # 添加 Ansible 源 add-apt-repository --yes --update ppa:ansible/ansible # 安装 Ansible apt install -y ansible

二、Ansible 基础配置

1. 免密登录配置(核心)

Ansible 通过 SSH 连接被管理节点,免密登录是基础:

# 1. 在控制节点生成 SSH 密钥(一路回车即可) ssh-keygen -t rsa -b 4096 # 2. 将公钥拷贝到被管理节点(替换为目标主机 IP 和用户名) ssh-copy-id root@192.168.1.100

2. 配置主机清单(Inventory)

主机清单是 Ansible 管理的节点列表,默认路径:/etc/ansible/hosts

# 编辑主机清单 vim /etc/ansible/hosts # 示例配置(按实际节点修改) [web_servers] # 分组名(自定义) 192.168.1.100 ansible_ssh_user=root ansible_ssh_port=22 192.168.1.101 ansible_ssh_user=ubuntu [db_servers] 192.168.1.200 # 分组嵌套 [all_servers:children] web_servers db_servers

3. 核心配置文件(ansible.cfg)

默认路径:/etc/ansible/ansible.cfg,常用配置项:

[defaults] # 主机清单路径 inventory = /etc/ansible/hosts # 禁用 SSH 密钥检查(避免首次连接报错) host_key_checking = False # 默认远程用户 remote_user = root # 超时时间 timeout = 10 [privilege_escalation] # 提权(如需 sudo) become = True become_method = sudo become_user = root become_ask_pass = False # 无需输入 sudo 密码

三、Ansible 常见用法

1. 基础命令(Ad-Hoc 临时命令)

临时命令用于快速执行简单操作,无需编写 Playbook,格式:

ansible <主机/分组> -m <模块> -a <模块参数>

常用示例:

# 1. 测试所有节点连通性(ping 模块) ansible all -m ping # 2. 在 web_servers 分组执行 shell 命令(查看内存) ansible web_servers -m shell -a "free -h" # 3. 安装 nginx(yum/apt 模块) # CentOS ansible web_servers -m yum -a "name=nginx state=present" # Ubuntu ansible web_servers -m apt -a "name=nginx state=present update_cache=yes" # 4. 启动并开机自启 nginx(service 模块) ansible web_servers -m service -a "name=nginx state=started enabled=yes" # 5. 拷贝文件到被管理节点(copy 模块) ansible web_servers -m copy -a "src=/root/nginx.conf dest=/etc/nginx/nginx.conf mode=644" # 6. 创建目录(file 模块) ansible all -m file -a "path=/data/test state=directory mode=755" # 7. 查看远程主机信息(setup 模块,收集facts) ansible 192.168.1.100 -m setup

2. Playbook(剧本)

Playbook 是 Ansible 的核心,用 YAML 格式编写,用于执行复杂的自动化任务。

示例:部署 nginx 的 Playbook(nginx.yml)

--- - name: 部署 Nginx 服务 # Play 名称 hosts: web_servers # 目标主机/分组 gather_facts: yes # 收集主机信息(默认开启) become: yes # 提权 tasks: # 任务列表 - name: 安装依赖包 # 任务1:安装依赖 yum: name: epel-release state: present when: ansible_os_family == "RedHat" # 仅 CentOS/RHEL 执行 - name: 安装 Nginx # 任务2:安装 nginx package: name: nginx state: present - name: 拷贝 nginx 配置文件 # 任务3:替换配置 copy: src: /root/nginx.conf dest: /etc/nginx/nginx.conf mode: 0644 notify: 重启 Nginx # 配置变更时触发 handler - name: 启动 Nginx 并开机自启 # 任务4:启动服务 service: name: nginx state: started enabled: yes handlers: # 处理器(仅被触发时执行) - name: 重启 Nginx service: name: nginx state: restarted

执行 Playbook:

ansible-playbook nginx.yml # 可选参数: # -v:显示详细输出 # --check:模拟执行(不实际修改) # --limit:指定仅执行部分主机 ansible-playbook nginx.yml --limit 192.168.1.100

3. 常用模块速查

模块名用途核心参数
ping测试主机连通性
shell执行 shell 命令command(要执行的命令)
yum/apt安装软件包name(包名)、state(present/absent)
service管理系统服务name、state(started/stopped/restarted)、enabled
copy拷贝文件 / 目录src、dest、mode
file管理文件 / 目录权限path、state(directory/file/link)、mode
setup收集主机信息(facts)filter(过滤参数,如 ansible_os_family)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:14:03

为 Zensical 添加多语言翻译

为 Zensical 网站添加多语言翻译 本文基于当前本站正在使用的 硅基流动 Qwen3-8B 客户端翻译系统&#xff08;glm-config.js glm-translate.js&#xff09;整理而成。 只要按步骤接入&#xff0c;你就能获得和 wcowin.work 一样的多语言体验。 功能概述 客户端翻译&#xff…

作者头像 李华
网站建设 2026/4/16 11:01:32

从概念到落地:AI原生应用如何实现真正的人机协作

从概念到落地:AI原生应用实现真正人机协作的全面剖析 关键词 AI原生应用;人机协作;概念基础;实现机制;实际应用 摘要 本技术分析聚焦于AI原生应用中实现真正人机协作这一关键主题。从概念基础出发,追溯其历史轨迹并明确问题空间,构建起理论框架。进而深入探讨架构设…

作者头像 李华
网站建设 2026/4/16 13:32:12

2026年02月08日最热门的开源项目(Github)

本期榜单展示了一系列优秀的开源项目&#xff0c;主要集中在人工智能和编程工具领域。以下是对榜单的详细分析&#xff1a; 项目概述 类型和语言&#xff1a;榜单中大部分项目使用了 TypeScript 和 Python 语言&#xff0c;显示了这两种语言在现代开发中的受欢迎程度。TypeScr…

作者头像 李华
网站建设 2026/4/16 11:57:22

PETRV2-BEV模型训练全流程:从环境配置到可视化分析

PETRV2-BEV模型训练全流程&#xff1a;从环境配置到可视化分析 1. 引言 如果你对自动驾驶技术感兴趣&#xff0c;一定听说过BEV&#xff08;鸟瞰图&#xff09;感知。简单来说&#xff0c;就是让AI模型像鸟一样从空中俯视道路&#xff0c;识别出车辆、行人、障碍物等目标的三…

作者头像 李华
网站建设 2026/4/13 17:07:07

SiameseUIE在医疗文本分析中的应用:病历信息结构化

SiameseUIE在医疗文本分析中的应用&#xff1a;病历信息结构化 1. 当医生还在手动翻病历时&#xff0c;AI已经完成了结构化整理 上周和一位三甲医院信息科的朋友聊天&#xff0c;他提到一个很实际的困扰&#xff1a;科室每天收治30多位患者&#xff0c;每位患者的电子病历平均…

作者头像 李华