文章目錄
- 零、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