Ansible基本使用
Ansible基本使用
一、Ansible概述和安装
Ansible 是一款功能强大的 IT 自动化工具,通过无代理机制实现高效的配置管理、应用部署、任务执行以及多节点间的 IT 编排。其主要特点包括:
- 无代理:无需在目标节点上安装任何额外的代理服务。
- 易于学习:基于简单的 YAML 语法定义任务。
- 模块化设计:提供丰富的模块库,适配多种任务需求。
- 高效安全:基于 SSH 进行通信,无需额外开放端口。
1.安装指南
在安装时,需根据使用环境选择适配方案:
- CentOS 7:
CentOS 7 在生产环境中依然应用广泛,使用 yum
进行安装:
yum install epel-release -y
yum install ansible -y
- CentOS 9:
CentOS 9 为官方维护版本,推荐使用 dnf
进行安装:
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
,其格式如下:
[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
group1
和group2
:节点分组。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
,并赋予执行权限:
chmod +x dynamic_inventory.py
运行以下命令验证脚本功能:
- 获取主机列表:
./dynamic_inventory.py --list
- 获取单个主机的变量信息:
./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.常用命令示例
- 检查节点连通性:
ansible all -m ping
- 执行命令:
ansible all -a "df -h"
- 上传文件:
ansible all -m copy -a "src=/local/file dest=/remote/path"
- 删除文件:
ansible all -m file -a "path=/remote/file state=absent"
- 安装软件:
ansible all -m yum -a "name=httpd state=present"
- 启动服务:
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组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 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 能够快速响应多样化的管理需求 |