ansible-playbook 使用子目录作为变量

ansible-playbook 使用子目录作为变量

/var/lib/phoronix-测试套件/测试结果/

它有 3 个子目录:

2018-04-22-1850
2018-04-23-1850
2018-04-24-1850

每个文件中都有一个小文件:composite.xml

部分内容:

  <结果>
    <标识符>pts/ramspeed-1.4.1</标识符>
    <Title>RAMspeed SMP</Title>
    <AppVersion>3.5.0</AppVersion>
    <参数>ADD -b 3</参数>
    <Description>类型:添加 - 基准:整数</Description>
    <Scale>MB/s</Scale>
    <比例>HIB</比例>
    <DisplayFormat>BAR_GRAPH</DisplayFormat>
    <数据>
      <条目>
        <Identifier>4096 MB RAM - 英特尔酷睿</Identifier>
        <值>19292.13</值>
        <RawString></RawString>
        <JSON>{“编译器选项”:{“编译器类型”:“CC”,“编译器”:“gcc”,“编译器选项”:“-O3 -march = native”} } </ JSON>
      </条目>
    </数据>
  </结果>

我想更换<标识符>pts/ramspeed-1.4.1</标识符>使用 {{ ansible_host }} {{ dirname }}

假设:

grep 标识符 /var/lib/phoronix-test-suite/test-results/2018-04-24-1850/composite.xml
*<标识符>主机名 2018-04-24-1850</标识符>*

我已经建立了一些剧本,这是我的“示例”配置:

- 名称:设置 /PhoronixTestSuite/System/Identifier={{ ansible_host }}
  xml文件:
    路径:/var/lib/phoronix-test-suite/test-results/*/composite.xml
    xpath:/PhoronixTestSuite/系统/标识符
    值:“{{ ansible_host }}”
- 名称:设置 /PhoronixTestSuite/Result/Data/Entry/Identifier={{ ansible_host }}
  xml文件:
    路径:/var/lib/phoronix-test-suite/test-results/*/composite.xml
    xpath:/PhoronixTestSuite/结果/数据/条目/标识符
    值:“{{ ansible_host }}”

但它没有达到我想要的效果,也许你能帮忙?

答案1

我用过这个:

---
- 名称:查找 /var/lib/phoronix-test-suite/test-results/ 所有目录
  寻找:
    路径:/var/lib/phoronix-test-suite/test-results
    递归:否
    文件类型:目录
    #patterns:'20*'
  注册:dir_list
#- 调试:var=dir_list

- 名称:PhoronixTestSuite/System/Identifier 中的 /var/lib/phoronix-test-suite/test-results/*/composite.xml
  xml文件:
    路径:'{{ item.path }}/composite.xml'
    xpath:/PhoronixTestSuite/系统/标识符
    值:'{{ ansible_hostname }} {{ item.path|basename }}'
  循环:'{{ dir_list.files }}'
- 名称:PhoronixTestSuite/Result/Data/Entry/Identifier 中的 /var/lib/phoronix-test-suite/test-results/*/composite.xml
  xml文件:
    路径:'{{ item.path }}/composite.xml'
    xpath:/PhoronixTestSuite/结果/数据/条目/标识符
    值:'{{ ansible_hostname }} {{ item.path|basename }}'
  循环:'{{ dir_list.files }}'

- 名称:phoronix-test-suite merge-results {{ dir_list.files | map(attribute="path") | map('basename') | join(' ') }}
  命令:phoronix-test-suite merge-results {{ dir_list.files | map(attribute="path") | map('basename') | join(' ') }}

- 名称:查找 /var/lib/phoronix-test-suite/test-results/ 所有目录
  寻找:
    路径:/var/lib/phoronix-test-suite/test-results
    递归:否
    文件类型:目录
    模式:'合并*'
    #use_regex:是
  注册:dir_list

- 名称:phoronix-test-suite result-file-to-pdf merge-*
  命令:phoronix-test-suite result-file-to-pdf {{ item.path|basename }}
  循环:'{{ dir_list.files }}'

我认为可以使用当地的事实来实现更小巧/整洁/漂亮/可爱的外观。但现在这样就很好了。

相关内容