仅在未安装相同版本的情况下,才可确定如何安装软件包



我正在尝试检查包的现有版本,如果尚未安装相同版本,则运行安装任务。

下面是我正在尝试的代码。

- name: Check for existing mono installation
command: "mono --version"
register: current_mono
ignore_errors: true
- name: Running "make install" for Mono
command: make install
args: 
chdir: "{{ mono_install_dir }}"
become: yes
when: "mono_version|string not in current_mono.stdout"
  • 第一次这将失败,因为current_monovar中没有stdout

第一次跑步时如何做到这一点?

由于使用的是make install,因此使用的是shell模块。

vars:
software_version: "1.2.3"
tasks:

这将是第一次失败。。。

当使用以下方法时,这不是绝对必要的

- name: Check for existing version
shell:
cmd: software --version
warn: false
register: result
changed_when: false
failed_when: false

请注意,一些软件包(如Java或Python(正在向stderr报告他的版本。

- name: Show result
debug:
msg: "{{ result.stderr }}"

现在您可以运行安装程序了。

- name: Install latest version
shell:
cmd: "echo 'installing ...'"
warn: false
register: result
when: "software_version | string not in result.stderr"
- name: Show result
debug:
msg: "{{ result.stdout | default('was on latest version') }}"

您可以使用javapython作为软件来测试这个示例剧本。

最新更新