news 2026/4/21 16:51:13

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 10:09:36

AI时代的设计师:专业化vs.泛化

也许这篇文章会像我们在过去几年中看到的行业中所有变化一样迅速过时。但即使我冒着这个风险&#xff0c;我觉得我需要写一些关于我在与数字产品合作的设计师中看到越来越多的传播的感觉&#xff1a;职业身份危机。 随着LLM在全球范围向所有受众普及&#xff0c;人工智能已经不…

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

机器视觉工程师职位深度解析与面试指南

南京大树智能科技股份有限公司 机器视觉工程师 职位信息 岗位职责: 1、从事机器视觉类检测产品的部分的现场安装、调试、客户培训及售后服务工作; 2、参与部分产品设计工作,并能对生产过程中出现的问题进行指导; 3、对工作富有思考,能够结合产品调试向设计师提出产品质量反…

作者头像 李华
网站建设 2026/4/21 8:17:42

EasyX:从入门到入土

◆博主名称&#xff1a;少司府 欢迎来到少司府的博客☆*: .&#xff61;. o(≧▽≦)o .&#xff61;.:*☆ ⭐数据结构系列个人专栏&#xff1a; 初阶数据结构_少司府的博客-CSDN博客 ⭐编程基础训练系列个人专栏&#xff1a; 编程基础50题_少司府的博客-CSDN博客 ⭐那些看…

作者头像 李华
网站建设 2026/4/17 16:16:52

viepress:vue组件展示和源码功能

VitePress实战&#xff1a;vue组件展示和源码功能 一、项目结构与基础配置 1.1 侧边栏配置&#xff08;sidebar.ts&#xff09; // docs/.vitepress/sidebar.ts export default {/example/: [{text: Examples,items: [{ text: Markdown Examples, link: /example/markdown }…

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

基于Spring Boot的躲猫猫书店管理系统

目录 摘要 演示视频 系统功能实现 代码实现 推荐项目 项目案例 项目开发总结 为什么选择我 源码获取 博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于…

作者头像 李华
网站建设 2026/4/19 1:39:17

基于Spring Boot的校园闲置物品交易系统

&#x1f345; 作者主页&#xff1a;Selina .a &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。 主要内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据…

作者头像 李华