我必須遍歷包串列檔案,其中包含具有其架構的包串列。如何將這些輸入提供給我的劇本檔案?我找到了一種單獨獲取包名稱的方法,但架構版本不會到來。這是我的 package_list 檔案
nginx | x86_64
telnet| x86_64
openssh | i386
這是我的劇本
- name: get contents of package.txt
command: cat "/root/packages.txt"
register: _packages
- name: get contents of architecture from packages.txt
command: cat "/root/packages.txt" | awk '{print $3}'
register: _arch
- name: Filter
theforeman.foreman.content_view_filter:
username: "admin"
password: "mypass"
server_url: "myhost"
name: "myfilter"
organization: "COT"
content_view: "M_view"
filter_type: "rpm"
architecture: "{{ _arch }}"
package_name: "{{ item }}"
inclusion: True
loop: "{{ _packages.stdout_lines }}"
loop: "{{ _arch.stdout_lines }}"
任何幫助,將不勝感激
所需的輸出是包名稱和架構應該通過 ansible-playbook 從 packages.txt 檔案中讀取
uj5u.com熱心網友回復:
試試這個劇本:
- name: Reproduce issue
hosts: localhost
gather_facts: no
tasks:
- name: get contents of package.txt
command: cat "/root/packages.txt"
register: _packages
- debug:
msg: "package: {{ line.0 }}, arch: {{ line.1 }}"
loop: "{{ _packages.stdout_lines }}"
vars:
line: "{{ item.split('|')|list }}"
結果:
ok: [localhost] => (item=nginx | x86_64) => {
"msg": "package: nginx , arch: x86_64 "
}
ok: [localhost] => (item=telnet| x86_64) => {
"msg": "package: telnet, arch: x86_64 "
}
ok: [localhost] => (item=openssh | i386) => {
"msg": "package: openssh , arch: i386 "
}
對于您的情況:
- name: Filter
theforeman.foreman.content_view_filter:
:
:
architecture: "{{ line.1 }}"
package_name: "{{ line.0 }}"
inclusion: True
loop: "{{ _packages.stdout_lines }}"
vars:
line: "{{ item.split('|')|list }}"
按照ansible的版本你也可以寫line: "{{ item | split('|') | list }}"
uj5u.com熱心網友回復:
您需要通過過濾將行拆分為必要的值。
---
- hosts: localhost
become: false
gather_facts: false
tasks:
- name: Gahter package list
shell:
cmd: cat package.txt
register: _packages
- name: Show packages
debug:
msg: "Name: {{ item.split('|')[0] }}, Arch: {{ item.split('|')[1] }}"
loop: "{{ _packages.stdout_lines }}"
更多檔案
- 劇本過濾器 - 操作字串
- Jinja 模板設計器 - 過濾器
進一步問答
- 在 Jinja 中將字串拆分為串列?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/446310.html
上一篇:從另一個表中查找不存在的ID
