每日學習-ansible raw模塊

Ansible 的raw 模塊用於在遠程主機上執行 ansible 管理主機上的腳本,與command、shell和script模塊類似,raw模塊也支持管理windows主機。
raw模塊參數:

executable:通過使用絕對路徑修改並指定shell解釋器執行命令
= free_form:必須參數,自由的指定需要在遠程主機上執行的命令,free_form是指自由指定,所以並沒有具體的參數名叫free_form

注意:
1、與environment關鍵字一起使用必須配置有executable參數
2、如果被控主機無python環境,可以使用raw模塊,但是要想安全可預測的執行命令,最好使用command或shell模塊。

raw模塊與command、shell、script模塊的區別

command 模塊:遠程執行簡單的 shell 命令和腳本,不可以使用環境變量,支持變量和操作符,但不支持解析特殊符號< > | &等,因爲不受用戶環境的影響,避免了shell注入的風險,相對shell更安全一些。
shell 模塊:遠程執行shell命令和腳本,可以使用環境變量,支持變量和操作符,支持特殊符號,存在一定的shell注入風險。
raw 模塊:執行底層 shell 命令。command 和 shell 模塊都是通過目標主機上的 python 代碼啓動 /bin/bash 來執行命令的,但目標主機上可能沒有安裝 python,這時只能使用 raw 模塊在遠程主機上直接啓動。
script 模塊:在遠程主機上執行腳本文件 ,和 raw 模塊一樣,不要求目標主機上已經裝好 python。


raw模塊示例:
修改主機名

- name: change host name file
  raw: "echo {{host_name|quote}} > /etc/hostname"
- name: change host name
  shell: hostnamectl set-hostname {{host_name|quote}}

Ps:在使用ansible變量加上quote時,防止shell注入。

參考:
https://www.jianshu.com/p/2e1931bfb3cb
ansible-doc raw

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章