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