我有 2 臺名為 testserver 和 vSphere 服務器的服務器。Ansible 安裝在 testserver 上,我有一個存盤在文本檔案 packages.txt 中的包串列。如何通過 ansible 在 vsphere 服務器上安裝這些軟體包?這是我的 packages.txt 檔案。我只需要從 packages.txt 中獲取包名
hyperv-daemons| x86_64
hypervkvpd |x86_64
hyperv-tool | x86_64
nginx | x84_64
這是 testserver 中的 yml 檔案
- hosts: vsphere
tasks:
- name: Install the packages
shell: sh /root/test.sh
Test.sh 包含
#/bin/bash
for i in `cat /root/packages`
do
echo $i
yum install $i
done
當我運行這個 ansible 腳本時,我收到一個錯誤:在 vsphere 上找不到 packages.txt。任何幫助,將不勝感激
uj5u.com熱心網友回復:
首先,我建議您使用yum 模塊來安裝軟體包。我們可以通過讀取packages.txt檔案來傳遞要安裝的軟體包串列。似乎這個檔案在 Ansible 機器上,所以我們可以lookup用來獲取檔案內容。
例子:
# Run the awk command to get only package names
- command: awk '{print $1}' path/to/packages.txt
register: _pkgs
delegate_to: localhost
run_once: true
- name: install packages
yum:
- name: "{{ _pkgs.stdout_lines }}"
state: present
編輯
如果您 | x86_64在每個包的檔案中都有,它也不適用于您的 shell 腳本。最簡單的方法是獲取帶有awk(以上示例更新)的軟體包的干凈串列,并將其用于軟體包安裝。
uj5u.com熱心網友回復:
改為使用回圈只需添加到角色:
- name: PREREQUISITES INSTALL install-linux | Install rpm software Linux
yum:
name: "{{ item }}"
state: installed
loop:
- "{{ software_packages }}"
到默認的 vars 目錄:
software_packages:
packages:
- package: "hyperv-daemons"
- package: "hypervkvpd"
- package: "hyperv-tool"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/458972.html
