ansible之template介紹

ansible的template模塊,(在puppet叫資源),能夠將帶有參數的配置文件傳遞到目標地址,能夠對文件進行屬組屬主的修改以及備份。java

backup no no yes/no 創建個包括timestamp在內的文件備份,以備不時之需.
dest yes     遠程節點上的絕對路徑,用於放置template文件。
group no     設置遠程節點上的的template文件的所屬用戶組
mode no     設置遠程節點上的template文件權限。相似Linuxchmod的用法
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_usernameadmin_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

相關文章
相關標籤/搜索