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

ops/2025/2/6 14:41:53/

使用 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 脚本。如果有其他问题或需要进一步帮助,请随时联系!
 


http://www.ppmy.cn/ops/156176.html

相关文章

PVE 中 Debian 虚拟机崩溃后,硬盘数据怎么恢复

问题 在 PVE 中给 Debian 虚拟机新分配硬盘后,通过 Debian 虚拟机开启 Samba 共享该硬盘。如果这个 Debian 虚拟机崩溃后,怎么恢复 Samba 共享硬盘数据。 方法 开启 Samba 共享相关知识:挂载硬盘和开启Samba共享。 新建一个虚拟机&#xf…

CH340G上传程序到ESP8266-01(S)模块

文章目录 概要ESP8266模块外形尺寸模块原理图模块引脚功能 CH340G模块外形及其引脚模块引脚功能USB TO TTL引脚 程序上传接线Arduino IDE 安装ESP8266开发板Arduino IDE 开发板上传失败上传成功 正常工作 概要 使用USB TO TTL(CH340G)将Arduino将程序上传…

如何使用C#的using语句释放资源?什么是IDisposable接口?与垃圾回收有什么关系?

在 C# 中,using语句用于自动释放实现了IDisposable接口的对象所占用的非托管资源,如文件句柄、数据库连接、图形句柄等。其使用方式如下: 基础用法 声明并初始化资源对象:在using关键字后的括号内声明并初始化一个实现了IDisposable接口的对象。使用资源:在using语句块内…

React中useState()钩子和函数式组件底层渲染流程详解

useState()钩子底层渲染流程 React中useState的底层渲染机理。首先,我知道useState是React Hooks的一部分,用于在函数组件中添加状态。但底层是如何工作的呢?可能涉及到React的调度器、Fiber架构以及闭包等概念。 首先,React使用F…

计算机毕业设计开题答辩PPT怎么写?【答辩PPT】

本文将介绍如何制作毕业设计开题答辩PPT,并提供一个实际的示例,帮助你更好地准备答辩。 一、答辩PPT的制作技巧 1. 明确结构,层次分明 答辩PPT的结构需要清晰、简洁,每个部分应该有清晰的主题。通常PPT的结构可以分为以下几个部…

【大数据技术】编写Python代码实现词频统计(python+hadoop+mapreduce+yarn)

编写Python代码实现词频统计(python+hadoop+mapreduce+yarn) 搭建完全分布式高可用大数据集群(VMware+CentOS+FinalShell) 搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn) 本机PyCharm连接CentOS虚拟机 在阅读本文前,请确保已经阅读过以上三篇文章,成功搭建了…

MongoDB学习笔记-解析jsonCommand内容

如果需要屏蔽其他项目对MongoDB的直接访问操作&#xff0c;统一由一个入口访问操作MongoDB&#xff0c;可以考虑直接传入jsonCommand语句解析执行。 相关依赖包 <!-- SpringBootDataMongodb依赖包 --> <dependency><groupId>org.springframework.boot</…

使用MATLAB进行雷达数据采集可视化

本文使用轮趣科技N10雷达&#xff0c;需要源码可在后台私信或者资源自取 1. 项目概述 本项目旨在通过 MATLAB 读取 N10 激光雷达 的数据&#xff0c;并进行 实时 3D 点云可视化。数据通过 串口 传输&#xff0c;并经过解析后转换为 三维坐标点&#xff0c;最终使用 pcplayer 进…