首页 > 解决方案 > 如何将多行作为值传递给 Ansible

问题描述

我正在尝试将多行作为值传递给我的 Ansible 文件,但这只是传递了第一行。

cat slot_number.txt
slot4
slot2
slot1
slot3

我的 ansible 文件如下 update_bios.yml

tasks:
   - name: Powering off slot number
     command: "/usr/local/bin/power-util {{slot_number}} off"

   - name: Starting to update BIOS
     command: "/usr/bin/fw-util {{slot_number}} --update --bios"

ansible-playbook -l myhosts update_bios.yml -e "slot_number=$(cat slot_number.txt)"

我想像下面这样运行我的命令:

/usr/local/bin/power-util slot1 关闭

/usr/local/bin/power-util slot2 关闭

/usr/local/bin/power-util slot3 关闭

标签: ansible

解决方案


像这样的东西应该工作。

  vars:                                                                                                                                                 
    slot_numbers: "{{ lookup('file', './slot_number.txt').splitlines() }}"                                                                              

  tasks:                                                                                                                                                
    - name: Powering off slot number                                                                                                                    
      command: "/usr/local/bin/power-util {{ item }} off"                                                                                               
      loop: "{{ slot_numbers }}"                                                                                                                        

    - name: Starting to update BIOS                                                                                                                     
      command: "/usr/bin/fw-util {{ item }} --update --bios"                                                                                            
      loop: "{{ slot_numbers }}"                                                                                                                        

推荐阅读