2017-01-31 25 views

回答

2

簡而言之:每個任務 Ansible包所需的模塊和庫加數據輸入到微型封裝,傳送到目標系統(通常通過ssh)上的臨時位置,之後本身就存在和清理執行它。

Ansible不會將您的劇本作爲整體複製到目標系統。只有每個單獨任務需要的數據。

有關開發人員指南中的工作流程的更多詳細信息here

1

對於運行Unix/Linux中,控制機目標機器:

  1. 打開SSH會話到目標節點,執行基本的製劑(例如創建臨時目錄);

  2. 創建自定義腳本(主要是Python)並將它們使用SFTP(默認)或SCP(configurable)傳輸到目標;

  3. 最後它執行目標主機上的腳本。

對每個單個主機上的每個單個任務都重複該過程(Ansible也可以優化爲爲多個任務保留開放的SSH會話)。


在Ansible,工作的基本單元進行編碼,modules和(從調用)的任務規定。

  • 對於大多數模塊來說,邏輯是用Python編寫的。無論特定的模塊是否使用外部程序,要執行的動作都被封裝在Python腳本中。

  • 以上的一個例外是raw module,它在SSH會話中直接執行特定命令。

  • 另一個特例是synchronize module它在控制機器上執行並使用rsync傳輸文件。


一些模塊,其目標主要是cloud服務和network設備,是本地主機(或代理機)訪問目標系統和設備與他們的API上執行。

對於Windows目標計算機,Ansible與WinRM連接,並通過Windows本機PowerShell遠程處理功能在目標計算機上運行PowerShell腳本。