2017-02-22 84 views
0

我在RunDeck中有很多Nix和Win環境。RunDeck中的跨平臺部署作業

我需要創建一個像「安裝監控服務」這樣的工作。這應該安裝和配置一些服務的Linux和Windows機器。安裝腳本肯定會有所不同。

但我想有1個邏輯工作「安裝監控服務」,但它應該執行script1 for Linux和script2 for Windows,或類似的東西。

在作業定義中有一個過濾器選項,但我不能將它應用於具體步驟,僅適用於整個作業。

它看起來像我需要一個步驟的過濾器:通過一些過濾器的Windows一步可以跳過對Linux實例等

+0

這不是很漂亮,但是你可以在「ansible_os_family」變量的操作系統特定步驟中添加一個「when」子句嗎?或者根據「ansible_os_family」調用install_windows或install_redhat或install_debian角色?有關創意,請參閱此示例:https://github.com/GoogleCloudPlatform/stackdriver-ansible-role/blob/master/tasks/main.yml –

回答

1

我用一個簡單的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。