每日學習-ansible raw模塊

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

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

注意:
一、與environment關鍵字一塊兒使用必須配置有executable參數
二、若是被控主機無python環境,能夠使用raw模塊,可是要想安全可預測的執行命令,最好使用command或shell模塊。windows

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

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

raw模塊示例:
修改主機名ide

- 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注入。code

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

相關文章
相關標籤/搜索