我正在尝试检查包的现有版本,如果尚未安装相同版本,则运行安装任务。
下面是我正在尝试的代码。
- 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_mono
var中没有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') }}"
您可以使用java
或python
作为软件来测试这个示例剧本。