Ansible,当yum包安装时设置事实



我有点被这个难住了。我试图编写一个完整的oracle安装脚本,我已经整理了所有OSB套件和其他部分,但是JDK让我发疯。验证运行,但我无法让它正确地设置事实。我肯定错过了一些简单的东西。

var/主要:

# vars for jdk
java_jdk_already_installed: false
java_jdk_installer: "jdk-8u271-linux-x64.rpm"
java_jdk_definition: 'jdk1.8.x86_64'

任务/验证:

- name: "validate java installation {{ java_jdk_installer }}"
yum:
list: "{{ java_jdk_definition }}"
disable_gpg_check: yes
register: java_yum_output
- debug:
msg: "java state {{ java_yum_output }}"
- set_fact:
java_jdk_already_installed: true
when: java_yum_output|length > 0

调试包存在时的输出:

ok: [localhost] => {
"msg": "java state {'msg': '', 'results': [{'name': 'jdk1.8', 'arch': 'x86_64', 'epoch': '2000', 'release': 'fcs', 'version': '1.8.0_271', 'repo': '@System', 'nevra': '2000:jdk1.8-1.8.0_271-fcs.x86_64', 'yumstate': 'installed'}], 'failed': False, 'changed': False}"
}

在包丢失的情况下调试:

ok: [localhost] => {
"msg": "java state {'msg': '', 'results': [], 'failed': False, 'changed': False}"
}

我可以让它跳过如果我使用

when: java_yum_output.results[0].yumstate == "installed"

但是如果包不存在,则列表没有元素并且出现错误。有人能帮忙吗?

谢谢!

Try

- set_fact:
java_jdk_already_installed: true
when: java_yum_output.results.0.yumstate|default('') == "installed"

最新更新