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