Ansible RunDeck中的跨平台部署作业

Ansible RunDeck中的跨平台部署作业,ansible,rundeck,Ansible,Rundeck,我在RunDeck中有很多Nix和Win环境 我需要创建一个像安装监控服务这样的作业。这应该为linux和windows机器安装和配置一些服务。安装脚本肯定会有所不同 但我希望有一个逻辑作业安装监控服务,但它应该为Linux执行script1,为Windows执行script2,或者类似的东西 在作业定义中有一个过滤器选项,但我不能将其应用于具体步骤,只能应用于整个作业 看起来我需要一个步骤的过滤器:通过一些过滤器,Linux实例的Windows步骤将被跳过,等等。我使用一个简单的bash代码来

我在RunDeck中有很多Nix和Win环境

我需要创建一个像安装监控服务这样的作业。这应该为linux和windows机器安装和配置一些服务。安装脚本肯定会有所不同

但我希望有一个逻辑作业安装监控服务,但它应该为Linux执行script1,为Windows执行script2,或者类似的东西

在作业定义中有一个过滤器选项,但我不能将其应用于具体步骤,只能应用于整个作业


看起来我需要一个步骤的过滤器:通过一些过滤器,Linux实例的Windows步骤将被跳过,等等。

我使用一个简单的bash代码来启动特定于操作系统的代码。此代码同时在Windows和Linux节点上运行。它将在Linux节点上运行runLinuxFunction,在Windows节点上运行runWindowsFunction

 #!/bin/bash
function windowsOrLinux() {
    if [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
        runLinuxFunction  #<------------Linux
        returnCode=$?
    elif [ "$(expr substr $(uname -s) 1 6)" == "CYGWIN" ]; then
        runWindowsFunction  #<------------Windows
        returnCode=$?
    else
        echo $(hostname) "Unknown OS type. Skip..."
        returnCode=1
    fi
    if [ $returnCode == 0 ]; then
        return 0
    else
        return 1
    fi
}

注意:我的所有windows节点都安装了Cygwin,因此windows的操作系统类型为Cygwin。如果您的windows不支持bash,您可以使用python。

它没有那么漂亮,但是您是否可以在操作系统特定的步骤周围设置一个when子句来关闭ansible\u OS\u系列变量?或者基于ansible_os_系列调用install_windows或install_redhat或install_debian角色?有关想法,请参见此示例: