一千萬個為什麽

搜索

是否有可能在salt狀態下使用多個if語句?



我有一個Salt狀態,用於檢查我們的Web服務器上是否存在多個文件,我們有4個Web服務器和2個環境,因此總共有8個。這種狀態通過使用谷歌'web服務器'應用於所有。

由於網絡服務器是不同的(相同的底層後端,不同的目錄/文件名稱),我實現了一個if語句,它使用內置的谷歌功能“主機”。

{% if grains['host'] == 'dev-server1', 'test-server1' %}

dart-index.html:
  file.exists:
    - name: /opt/tomcat/webapps/example1/index.html

{% endif %}

在將我的狀態應用於所有'網絡服務器'的時候,這個按預期工作。它檢查目標機器上的上述文件(dev-server1/test-server1)並忽略其他文件。不過,我已經為dev-server2/test-server2添加了另一個if語句:

{% if grains['host'] == 'dev-server2', 'test-server2' %}

tees-index.html:
  file.exists:
    - name: /opt/tomcat/webapps/example2/index.html

{% endif %}

現在每當我對敵人運行狀態時,它都會失敗,因為它試圖檢查上述兩個文件是否存在於所有小兵(當然不存在)。

那麽,是否可以在一個狀態中使用多個if語句?或者還有另一種方法可以達到同樣的目標?我想在每種類型的Web服務器中標識具有特定目錄/文件名的多個文件。

轉載註明原文: 是否有可能在salt狀態下使用多個if語句?

一共有 1 個回答:

每個狀態可以有多個if語句。問題是你的條件似乎並沒有真正檢查主機名,它只是傳遞一切。嘗試這個:

{% if grains['host'] in ['dev-server2', 'test-server2'] %}