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

Ansible:强大的自动部署工具_第1张图片
Ansible:强大的自动部署工具_第2张图片

下文会具体举例



二、配置SSH密钥

1.检查密钥是否存在

ls -l ~/.ssh/id_rsa.pub

若不存在,则生成一个

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

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

src传密钥给des:

ssh-copy-id [email protected]

des传密钥给src:

ssh-copy-id [email protected]



三、自动部署

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同步压缩包到 dest
  hosts: dest
  become: yes
 
  tasks:
    - name: 确保压缩包存在
      stat:
        path: /root/BLT_BurnIn/blt_i30-1.0.2-x86_64-linux-dbg-1e06f45522.tar.gz
      register: file_stat
 
    - name: 将压缩包copy到目标主机
      copy:
        src: /root/BLT_BurnIn/blt_i30-1.0.2-x86_64-linux-dbg-1e06f45522.tar.gz
        dest: /root/BLT_BurnIn/
 
    - name: 解压tar包
      unarchive:
        src: /root/BLT_BurnIn/blt_i30-1.0.2-x86_64-linux-dbg-1e06f45522.tar.gz
        dest: /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: dest
  become: yes  # 使用 sudo 权限
  tasks:
    - name: 创建目录 /root/BLT_BurnIn/tool_install_package
      file:
        path: /root/BLT_BurnIn/tool_install_package
        state: directory
        mode: '0755'
 
    - name: 下载软件包 efvs-1.0.29-x86_64-linux-dbg.deb
      get_url:
        url: http://xnas.riverbegin.com/Enrigin/release/validation_tool2/2025-07-10_15f836cf57/efvs-1.0.29-x86_64-linux-dbg.deb
        dest: /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

你可能感兴趣的:(Ansible:强大的自动部署工具)