您现在的位置是:首页 > 编程 > 

Ansible基本使用

2025-07-22 03:53:26
Ansible基本使用 一、Ansible概述和安装Ansible 是一款功能强大的 IT 自动化工具,通过无代理机制实现高效的配置管理、应用部署、任务执行以及多节点间的 IT 编排。其主要特点包括:无代理:无需在目标节点上安装任何额外的代理服务。易于学习:基于简单的 YAML 语法定义任务。模块化设计:提供丰富的模块库,适配多种任务需求。高效安全:基于 SSH 进行通信,无需额外开放端口。1.安

Ansible基本使用

一、Ansible概述和安装

Ansible 是一款功能强大的 IT 自动化工具,通过无代理机制实现高效的配置管理、应用部署、任务执行以及多节点间的 IT 编排。其主要特点包括:

  1. 无代理:无需在目标节点上安装任何额外的代理服务。
  2. 易于学习:基于简单的 YAML 语法定义任务。
  3. 模块化设计:提供丰富的模块库,适配多种任务需求。
  4. 高效安全:基于 SSH 进行通信,无需额外开放端口。
1.安装指南

在安装时,需根据使用环境选择适配方案:

  • CentOS 7

CentOS 7 在生产环境中依然应用广泛,使用 yum 进行安装:

代码语言:bash复制
yum install epel-release -y
yum install ansible -y
  • CentOS 9

CentOS 9 为官方维护版本,推荐使用 dnf 进行安装:

代码语言:bash复制
dnf install epel-release -y
dnf install ansible -y
  • Ubuntu

Ubuntu 系统上可通过 APT 包管理安装:

代码语言:bash复制
sudo apt update
sudo apt install ansible -y
2.验证安装正确性

安装完成后,可以运行下列命令确认:

代码语言:bash复制
ansible --version
二、Inventory 文件的配置和解释

Inventory 文件是用于定义目标节点和管理节点组的核心文件。

1.基本格式

Inventory 文件默认位置为 /etc/ansible/hosts,其格式如下:

代码语言:ini复制
[group1]
host1 ansible_host=192.168.1.10 ansible_user=root
host2 ansible_host=192.168.1.11 ansible_user=admin

[group2]
host ansible_host=192.168.1.12 ansible_port=2222
  • group1group2:节点分组。
  • ansible_host:目标节点的 IP 地址。
  • ansible_user:用于连接的用户。
  • ansible_port:指定目标节点的 SSH 端口,默认为 22。
2.高级配置
  • 公共变量

公共变量可以为全局或指定组设定默认值:

代码语言:ini复制
[all:vars]
ansible_python_interpreter=/usr/bin/python
  • 分组维护

通过分组进行节点的根据配置:

代码语言:ini复制
[group1:children]
subgroup1
subgroup2
三、动态配置 Inventory 文件

动态 Inventory 的优点在于能够根据实时环境生成节点清单,避免手动维护带来的繁琐和错误。以下为动态配置的步骤和注意事项:

1.从简单脚本入手

以下是一个简单的 Python 脚本示例,用于生成动态 Inventory 文件:

代码语言:python代码运行次数:0运行复制
import argparse
import json

def lists():
    r = {}
    h = ['192.168.119.1' + str(i) for i in range(1, )]
    hosts = {'hosts': h}
    r['mysql'] = hosts
    return json.dumps(r, indent=4)

def hosts(name):
    cpis = {
        'ansible__port': 22,
        'ansible__user': 'root',
        'ansible__pass': '12456'
    }
    return json.dumps(cpis)

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument(
        '-l',
        '--list',
        help="hosts list",
        action='store_true'
    )
    parser.add_argument(
        '-H',
        '--host',
        help='hosts vars'
    )
    args = vars(parser.parse_args())
    if args['list']:
        print(lists())
    elif args['host']:
        print(hosts(args['host']))
    else:
        print(parser.print_help())
2.如何使用动态脚本

将上述脚本保存为 dynamic_inventory.py,并赋予执行权限:

代码语言:bash复制
chmod +x dynamic_inventory.py

运行以下命令验证脚本功能:

  • 获取主机列表:
代码语言:bash复制
./dynamic_inventory.py --list
  • 获取单个主机的变量信息:
代码语言:bash复制
./dynamic_inventory.py --host <hostname>

在 Ansible 中使用动态 Inventory:

代码语言:bash复制
ansible -i ./dynamic_inventory.py all -m ping
.扩展到结合工具

在实际生产中,可以结合工具如 JumpServer 动态生成 Inventory。以下是基于 JumpServer 数据库的 Python 示例:

代码语言:python代码运行次数:0运行复制
import pymysql

connection = (
    host='jumpserver_db_host',
    user='db_user',
    password='db_password',
    database='jumpserver_db'
)

try:
    with () as cursor:
        ("SELECT ip, username FROM assets")
        hosts = cursor.fetchall()

    with open('/etc/ansible/hosts', 'w') as inventory:
        inventory.write('[dynamic]\n')
        for host in hosts:
            inventory.write(f"{host[0]} ansible_user={host[1]}\n")
finally:
    ()

此脚本适用于需要与 JumpServer 或其他外部系统集成的场景。

4.动态 Inventory 的注意事项
  • 确保脚本输出符合 JSO 格式,并且结构正确。
  • 在复杂环境中,脚本需处理异常以保证健壮性。
  • 对于大规模节点,测试脚本性能和兼容性至关重要。
四、常用 Ad-Hoc 命令

Ad-Hoc 命令是 Ansible 最基础的操作工具,能够快速执行临时任务。以下是详细使用方法和常用模块介绍:

1.Ad-Hoc 的基本用法

Ad-Hoc 命令格式如下:

代码语言:bash复制
ansible <pattern> -m <module> -a <arguments>
  • <pattern>:目标主机模式(如 all 或指定组)。
  • <module>:执行任务的模块。
  • <arguments>:模块的参数。
2.常用命令示例
  • 检查节点连通性
代码语言:bash复制
ansible all -m ping
  • 执行命令
代码语言:bash复制
ansible all -a "df -h"
  • 上传文件
代码语言:bash复制
ansible all -m copy -a "src=/local/file dest=/remote/path"
  • 删除文件
代码语言:bash复制
ansible all -m file -a "path=/remote/file state=absent"
  • 安装软件
代码语言:bash复制
ansible all -m yum -a "name=httpd state=present"
  • 启动服务
代码语言:bash复制
ansible all -m service -a "name=httpd state=started"
.常用模块
  • ping:测试节点是否可用。
  • command:执行简单命令。
  • shell:执行复杂 Shell 命令。
  • copy:复制文件到目标节点。
  • file:管理文件和目录的属性。
  • yum / apt:管理软件包。
  • service:管理系统服务。
  • user:管理用户账户。
  • cron:管理计划任务。

通过 Ad-Hoc 命令与模块的灵活组合,Ansible 能够快速响应多样化的管理需求。

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1179151.html

相关标签:无
上传时间: 2025-07-21 23:26:55
留言与评论(共有 19 条评论)
本站网友 奶茶店加盟
20分钟前 发表
无需额外开放端口
本站网友 独活的功效与作用
7分钟前 发表
高效安全:基于 SSH 进行通信
本站网友 灰指甲图片
30分钟前 发表
'--list'
本站网友 nap是什么意思
0秒前 发表
默认为 22
本站网友 六安声屏网
29分钟前 发表
help="hosts list"
本站网友 玳玳花的功效与作用
5分钟前 发表
file:管理文件和目录的属性
本站网友 三星b7732
6分钟前 发表
高效安全:基于 SSH 进行通信
本站网友 宁波舞蹈培训
28分钟前 发表
Ansible基本使用 一
本站网友 楼市传来大消息
20分钟前 发表
Ansible概述和安装Ansible 是一款功能强大的 IT 自动化工具
本站网友 油墨印刷
13分钟前 发表
file:管理文件和目录的属性
本站网友 鹿胎膏的功效
25分钟前 发表
Ansible基本使用 一
本站网友 327国债期货
11分钟前 发表
print(lists()) elif args['host']
本站网友 蜕变是什么意思
3分钟前 发表
shell:执行复杂 Shell 命令
本站网友 金宝
12分钟前 发表
推荐使用 dnf 进行安装:代码语言:bash复制dnf install epel-release -y dnf install ansible -yUbuntu:Ubuntu 系统上可通过 APT 包管理安装:代码语言:bash复制sudo apt update sudo apt install ansible -y2.验证安装正确性安装完成后
本站网友 赤石脂的功效
16分钟前 发表
可以结合工具如 JumpServer 动态生成 Inventory
本站网友 传神
15分钟前 发表
需根据使用环境选择适配方案:CentOS 7:CentOS 7 在生产环境中依然应用广泛
本站网友 2月汽车销量
3分钟前 发表
可以结合工具如 JumpServer 动态生成 Inventory
本站网友 缱绻决绝
19分钟前 发表
Ansible 能够快速响应多样化的管理需求