Ansible如何仅在未安装相同版本的情况下安装软件包
Ansible how to install a package only if same version not installed
我正在尝试检查软件包的现有版本和 运行 安装任务(如果尚未安装相同版本)。
下面是我正在尝试的代码。
- 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
第一次 运行ning 如何实现?
因为您正在使用 make install
,所以您正在使用 shell 个模块。
vars:
software_version: "1.2.3"
tasks:
First time this will fail ...
使用以下方法时,这不是绝对必要的
- name: Check for existing version
shell:
cmd: software --version
warn: false
register: result
changed_when: false
failed_when: false
请注意some software packages like Java or Python are reporting his version to 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
作为软件来测试此示例剧本。
我正在尝试检查软件包的现有版本和 运行 安装任务(如果尚未安装相同版本)。
下面是我正在尝试的代码。
- 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
第一次 运行ning 如何实现?
因为您正在使用 make install
,所以您正在使用 shell 个模块。
vars:
software_version: "1.2.3"
tasks:
First time this will fail ...
使用以下方法时,这不是绝对必要的
- name: Check for existing version
shell:
cmd: software --version
warn: false
register: result
changed_when: false
failed_when: false
请注意some software packages like Java or Python are reporting his version to 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
作为软件来测试此示例剧本。