ansible的template模塊,(在puppet叫資源),能夠將帶有參數的配置文件傳遞到目標地址,能夠對文件進行屬組屬主的修改以及備份。java
backup | no | no | yes/no | 創建個包括timestamp在內的文件備份,以備不時之需. |
dest | yes | 遠程節點上的絕對路徑,用於放置template文件。 | ||
group | no | 設置遠程節點上的的template文件的所屬用戶組 | ||
mode | no | 設置遠程節點上的template文件權限。相似Linux中chmod的用法 | ||
owner | no | 設置遠程節點上的template文件所屬用戶 | ||
src | yes | 本地Jinjia2模版的template文件位置。 |
# 把/mytemplates/foo.j2文件通過填寫參數後,複製到遠程節點的/etc/file.conf,文件權限相關略過 - template: src=/mytemplates/foo.j2 dest=/etc/file.conf owner=bin group=wheel mode=0644 # 跟上面同樣的效果,不同的文件權限設置方式 - template: src=/mytemplates/foo.j2 dest=/etc/file.conf owner=bin group=wheel mode="u=rw,g=r,o=r"
咱們能夠查看這裏。
roles/templates/server.xml中的template文件關鍵部分以下:linux
<user username="{{ admin_username }}" password="{{ admin_password }}" roles="manager-gui" />
當這個文件還沒被template執行的時候,本地的admin_username及admin_password 都是變量狀態。
當playbook執行完template的時候,遠程的admin_username*及admin_password 會變成變量所對應的值。shell
例如:
前面的那個Playbook,若是咱們在tomcat-servers設置了這兩個變量以下:tomcat
dmin_username: admin admin_password: adminsecret
那麼在執行這個Playbook前,對應的那個template文件(俗稱模版),將在本地保持{{ admin_username }}及{{ admin_password }}的狀態。在Ansible調用template模版執行的時候,這裏將由Jinjia2從」tomcat-servers」讀取對應的值,而後替換掉模版裏的變量,而後把這個替換變量值後的文件拷貝到遠程節點。ui
這個就是template的意義所在。code
明白Ansible的方便之處了麼?server