Ansible在多台服务器上运行python脚本

使用 Ansible 在多台服务器上批量运行 Python 脚本是一种高效且可靠的方式。以下是具体的实现步骤和示例代码:


1. 准备工作

  • **安装 Ansible**:确保您的 Ansible 控制节点已安装 Ansible。如果没有安装,可以通过以下命令安装:

```bash

pip install ansible

```

  • **配置 Inventory 文件**:在 Ansible 控制节点上创建一个 `hosts.ini` 文件,列出需要运行脚本的目标服务器:

```ini

servers

server1 ansible_host=192.168.1.10 ansible_user=root

server2 ansible_host=192.168.1.11 ansible_user=root

server3 ansible_host=192.168.1.12 ansible_user=root

```

根据实际环境修改 IP 地址和用户名。

  • **编写 Python 脚本**:将您的 Python 脚本(例如 `script.py`)上传到 Ansible 控制节点,或者确保目标服务器上已存在该脚本。

2. 创建 Ansible Playbook

创建一个 YAML 文件(例如 `run_python.yml`),定义 Ansible 任务以批量运行 Python 脚本:

```yaml


  • name: Run Python script on remote servers

hosts: servers

become: yes

tasks:

  • name: Ensure Python is installed

apt:

name: python3

state: present

when: ansible_os_family == 'Debian'

  • name: Ensure Python3 is installed

yum:

name: python3

state: present

when: ansible_os_family == 'RedHat'

  • name: Copy Python script to remote server

copy:

src: script.py

dest: /tmp/script.py

mode: '0755'

  • name: Execute Python script

command: python3 /tmp/script.py

```

  • **解释**:
  1. **Ensure Python is installed**:确保目标服务器上安装了 Python(根据不同的 Linux 发行版使用不同的包管理工具)。

  2. **Copy Python script to remote server**:将 Python 脚本从控制节点复制到目标服务器的 `/tmp` 目录。

  3. **Execute Python script**:在目标服务器上运行 Python 脚本。


3. 运行 Ansible Playbook

在 Ansible 控制节点上运行以下命令,执行 Playbook:

```bash

ansible-playbook run_python.yml -i hosts.ini

```

  • **解释**:

  • `-i hosts.ini`:指定 Inventory 文件路径。

  • `run_python.yml`:Playbook 文件名。

运行后,Ansible 将依次连接到每个目标服务器,执行上述任务,包括安装 Python(如果尚未安装)、复制脚本并运行脚本。


4. 注意事项

  1. **Python 版本**:确保目标服务器上安装了 Python 3(或其他您脚本所需的版本),并根据 Playbook 中的条件语句适配不同的 Linux 发行版。

  2. **脚本路径**:确保脚本路径正确,或者修改 Playbook 中的 `dest` 和 `command` 字段。

  3. **权限问题**:确保目标服务器上的 `/tmp` 目录对执行用户(通常是 root)有写权限。

  4. **日志查看**:运行 Playbook 后,可以通过命令 `ansible-playbook run_python.yml -i hosts.ini --start-at-task="Execute Python script"` 查看任务执行日志。


通过以上步骤,您可以轻松使用 Ansible 在多台服务器上批量运行 Python 脚本。如果有其他问题或需要进一步帮助,请随时联系!

相关推荐
高级程序源2 分钟前
django房屋租赁系统28636-计算机课程设计、毕业设计
python·mysql·elasticsearch·小程序·django·flask·课程设计
skywalk81633 分钟前
windows10 explorer占用太多内存问题解决
服务器·内存·windows10·explorer
deepseek236 分钟前
SQLite WAL 开了仍报 database is locked?Python 后台任务的事务与幂等修复
数据库·python·sqlite·并发编程·wal
计算机编程指导师31 分钟前
计算机大数据项目推荐:基于Hadoop+Django的人工智能社交媒体情绪数据分析可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·毕业设计·社交媒体
天意__37 分钟前
Linux部署Qwen轻量模型
linux·服务器·qwen
对空六课1 小时前
无头浏览器访问对跳出率的过滤规则
服务器·前端·算法·数据分析
高级程序源1 小时前
springboot荆州旅游推介平台24175-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·django·课程设计
企业数字化笔记1 小时前
新租户注册成功却不能用?开通状态、初始化恢复与可用性验收
开发语言·python
Guarding and trust1 小时前
项目拆解(二):模型输出是‘野‘的——三层兜底+重分析,把AI变成可靠零件
java·人工智能·python·大模型·fastapi·ollama·错误兜底
用户298698530141 小时前
Python 实战:将 HTML 内容保存为图像文件
后端·python·html