如何在同一个linux目录下安装不同补丁的软件,同时保持ansible的幂等性

问题描述 投票:0回答:0

我正在尝试使用 Ansible 角色调用 installCognosBI 安装 Cognos Analytics 软件。在我的角色 /tasks 下,我有一个调用文件 installCognos.yml 的 main.yml。此文件 installCognos.yml 有 3 个任务,它们使用命令模块使用 /opt/IBM/cognos 文件夹。为了保持幂等性,我在整个路径中使用了 creates 。 /vars 下定义的所有脚本路径都具有在 shell 脚本本身中定义的相同安装路径。

下面是包含在 role/tasks/installCognos.yml 下的示例代码,它由同一任务文件夹中的 main.yml 调用。

- name: Install CognosBI
  command: 
    cmd: "bash -e {{ COGNOSBI_SCRIPT }}" 
    creates: "/opt/IBM/cognos"
  environment: 
    PATH: "{{ ansible_env.PATH }}:/sbin:/usr/sbin"

- name: Install CognosBI FP01
  command: 
    cmd: "bash -e {{ COGNOSBIFP01_SCRIPT }}"  
  environment: 
    PATH: "{{ ansible_env.PATH }}:/sbin:/usr/sbin"

- name: Install CognosBI InterimFP09
  command: 
    cmd: "bash -e {{ COGNOSBIFP01_SCRIPT }}"  
  environment: 
    PATH: "{{ ansible_env.PATH }}:/sbin:/usr/sbin"

我只在第一个任务下维护创建,以便执行接下来的 2 个任务并保持幂等性。我尝试使用这种方法,但只执行了第一个任务。接下来的 2 个任务根本没有被执行。我不确定这种方法是否正确。 有人可以建议我吗!

ansible yaml command idempotent
© www.soinside.com 2019 - 2024. All rights reserved.