2016-04-15 44 views
1

有以下兩種方式向目標機器上運行腳本:哪一個更好?直接從控制機執行腳本或複製並在本地執行?

1. - name: run the script from the control machine directly. 
     script: "{{path_to_scripts}}/script.sh" 

2. - name: Copying the script from target machine. 
     copy: src="{{path_to_scripts}}/script.sh" dest="{{path_to_scripts}}/script.sh" mode=0777 

    - name: Execute script locally. 
     command: /bin/sh {{path_to_scripts}}/script.sh 

,因爲我對運行超過30臺目標機器的劇本。我想知道哪一個會是更好的選擇?

如果我比其他人更喜歡一個,那麼性能會受到什麼影響?

+0

注意「運行性能」問題最好通過運行代碼來解決。 – tedder42

回答

2

如果您正在執行來自可控機器的腳本,則負責的服務器會將腳本複製到遠程機器中的臨時位置以執行。

所以,更好的選擇是「運行從直接控制機器的腳本」,因爲以下原因

  1. 你不需要ssh到所有30臺機器用於複製腳本
  2. 你可以有一個一行代碼做需要2個 步驟相同(複製和執行)
  3. 沒有性能差作爲這兩種方法在做同樣的操作
+0

我在本地運行以驗證目標主機上的某些內容。但它只在本地進行驗證,例如 如果必須驗證目錄是否爲空或不在目標熱點中,那麼它僅在本地進行驗證。 例如, - 名稱:檢查空目錄 腳本:/home/npwa-ansible/utility/xyz/files/empty_dir_bash.sh「/ some_target_dir_location」 –

0

如果腳本必須在遠程計算機上執行某些操作,如果將其複製並直接在遠程執行,效果會更好。我認爲在這兩種情況下,你都不會看到任何明顯的性能下降。

唯一的情況是,你將不得不ssh到遠程並執行你需要的命令,這個事情已經爲你做了。