当前位置: 首页 > ops >正文

Ansible:强大的自动部署工具

文章目录

  • 零、Ansible介绍
  • 一、安装 ansible
  • 二、配置SSH密钥
    • 1.检查密钥是否存在
    • 2.两边的机器要互相有对方的密钥
  • 三、自动部署
    • 1.传输文件
      • (1)inventory.ini
      • (2)sync_blt.yml
      • (3)执行命令
    • 2.安装软件
      • (1)inventory.ini
      • (2)install_efvs.yml
      • (3)执行命令

零、Ansible介绍

Ansible 是一个开源、易于使用的功能强大的 IT 自动化工具,通过 SSH 在客户端节点上执行任务。
它是用 Python 构建的,这是当今世界上最流行、最强大的编程语言之一。两端都需要使用 Python 才能执行所有模块。

它可以配置系统、部署软件和安排高级 IT 任务,例如连续部署或零停机滚动更新。你可以通过 Ansible 轻松执行任何类型的自动化任务,包括简单和复杂的任务。



一、安装 ansible

sudo apt update
sudo apt install ansible

在该控制机器上,创建专门的目录来管理Ansible项目:

mkdir -p ~/ansible/sync_blt
cd ~/ansible/sync_blt

然后把两个文件放在这个目录下:

~/ansible/sync_blt/
├── inventory.ini
└── sync_blt.yml

①inventory.ini:用来存放主机和目标机器的IP
②yml:用来存放要自动执行的task

在这里插入图片描述
在这里插入图片描述

下文会具体举例



二、配置SSH密钥

1.检查密钥是否存在

ls -l ~/.ssh/id_rsa.pub

若不存在,则生成一个

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

2.两边的机器要互相有对方的密钥

src传密钥给des:

ssh-copy-id root@10.42.129.11

des传密钥给src:

ssh-copy-id root@10.42.128.25



三、自动部署

1.传输文件

(1)inventory.ini

定义主机组和连接参数

[source]
source ansible_host=10.42.128.25 ansible_user=root[dest]
dest01 ansible_host=10.42.129.11 ansible_user=root
dest02 ansible_host=10.42.129.12 ansible_user=root

(2)sync_blt.yml

Playbook 文件,用来执行你的同步任务

传压缩包并解压:

- name: 从source同步压缩包到 desthosts: destbecome: yestasks:- name: 确保压缩包存在stat:path: /root/BLT_BurnIn/blt_i30-1.0.2-x86_64-linux-dbg-1e06f45522.tar.gzregister: file_stat- name: 将压缩包copy到目标主机copy:src: /root/BLT_BurnIn/blt_i30-1.0.2-x86_64-linux-dbg-1e06f45522.tar.gzdest: /root/BLT_BurnIn/- name: 解压tar包unarchive:src: /root/BLT_BurnIn/blt_i30-1.0.2-x86_64-linux-dbg-1e06f45522.tar.gzdest: /root/BLT_BurnIn/remote_src: yes  # 表示源文件已经在目标机器上,直接解压creates: /root/BLT_BurnIn/blt_i30-1.0.2-x86_64-linux-dbg-1e06f45522

(3)执行命令

在/root/ansible/sync_blt目录下执行

ansible-playbook -i inventory.ini sync_burnin.yml

2.安装软件

(1)inventory.ini

[source]
source ansible_host=10.42.128.25 ansible_user=root[dest]
dest01 ansible_host=10.42.128.44 ansible_user=root

(2)install_efvs.yml

- name: 在目标主机上创建目录,下载并安装软件hosts: destbecome: yes  # 使用 sudo 权限tasks:- name: 创建目录 /root/BLT_BurnIn/tool_install_packagefile:path: /root/BLT_BurnIn/tool_install_packagestate: directorymode: '0755'- name: 下载软件包 efvs-1.0.29-x86_64-linux-dbg.debget_url:url: http://xnas.riverbegin.com/Enrigin/release/validation_tool2/2025-07-10_15f836cf57/efvs-1.0.29-x86_64-linux-dbg.debdest: /root/BLT_BurnIn/tool_install_package/efvs-1.0.29-x86_64-linux-dbg.deb- name: 安装下载的 .deb 软件包command:cmd: dpkg -i /root/BLT_BurnIn/tool_install_package/efvs-1.0.29-x86_64-linux-dbg.deb

(3)执行命令

在/root/ansible/tool_install目录下执行

ansible-playbook -i inventory.ini install_efvs.yml
http://www.xdnf.cn/news/15056.html

相关文章:

  • 线上事故处理记录
  • STM32单片机_3
  • Linux驱动开发(platform 设备驱动)
  • RV1126平台(Buildroot Linux)+ SunplusIT SPCA2688 USB摄像头 RTSP推流全流程复盘与问题解决记录
  • 对象序列化与反序列化
  • 快速将照片从三星手机传输到电脑
  • 节点小宝:手机图片备份至电脑功能实测体验
  • linux系统---ISCSI存储服务
  • GitHub信息收集
  • Flutter跨平台开发全解析
  • 从Rust模块化探索到DLB 2.0实践|得物技术
  • Spring Boot 企业级动态权限全栈深度解决方案,设计思路,代码分析
  • 深度学习与图像处理案例 │ 基于深度学习的自动驾驶小车
  • 降低新品试错成本,助力可持续增长
  • ubuntu server远程连接
  • AT9850B北斗双频导航定位芯片简介
  • 9N70-ASEMI太阳能逆变器专用9N70
  • 搭建自动化工作流:探寻解放双手的有效方案(1)
  • 测试开发和后端开发到底怎么选?
  • Leetcode刷题营第十九题:对链表进行插入排序
  • (LeetCode 每日一题) 3440. 重新安排会议得到最多空余时间 II (贪心)
  • 智能体的记忆系统:短期记忆、长期记忆与知识图谱
  • EFK/ELK9.0.3 windows搭建
  • ASP.NET Core 8 轻松配置Serilog日志
  • STM32-定时器输入捕获
  • 通用游戏前端架构设计思考
  • 20-C#构造函数--虚方法
  • 小程序软装: 组件库开发
  • 爬虫-正则表达式
  • 汽车功能安全-软件单元验证 (Software Unit Verification)【用例导出方法、输出物】8