file模塊可以幫助我們完成一些對文件的基本操作,比如,創建文件或目錄、刪除文件或目錄、修改文件權限等
path參數 :必須參數,用於指定要操作的文件或目錄,在之前版本的ansible中,使用dest參數或者name參數指定要操作的文件或目錄,為了兼容之前的版本,使用dest或name也可以。
state參數 :此參數非常靈活,此參數對應的值需要根據情況設定,比如,當我們需要在遠程主機中創建一個目錄的時候,我們需要使用path參數指定對應的目錄路徑,假設,我想要在遠程主機上創建/testdir/a/b目錄,那么我則需要設置path=/testdir/a/b,但是,我們無法從"/testdir/a/b"這個路徑看出b是一個文件還是一個目錄,ansible也同樣無法單單從一個字符串就知道你要創建文件還是目錄,所以,我們需要通過state參數進行說明,當我們想要創建的/testdir/a/b是一個目錄時,需要將state的值設置為directory,"directory"為目錄之意,當它與path結合,ansible就能知道我們要操作的目標是一個目錄,同理,當我們想要操作的/testdir/a/b是一個文件時,則需要將state的值設置為touch,當我們想要創建軟鏈接文件時,需將state設置為link,想要創建硬鏈接文件時,需要將state設置為hard,當我們想要刪除一個文件時(刪除時不用區分目標是文件、目錄、還是鏈接),則需要將state的值設置為absent,"absent"為缺席之意,當我們想讓操作的目標"缺席"時,就表示我們想要刪除目標。
src參數 :當state設置為link或者hard時,表示我們想要創建一個軟鏈或者硬鏈,所以,我們必須指明軟鏈或硬鏈鏈接的哪個文件,通過src參數即可指定鏈接源。
force參數 : 當state=link的時候,可配合此參數強制創建鏈接文件,當force=yes時,表示強制創建鏈接文件,不過強制創建鏈接文件分為兩種情況,情況一:當你要創建的鏈接文件指向的源文件並不存在時,使用此參數,可以先強制創建出鏈接文件。情況二:當你要創建鏈接文件的目錄中已經存在與鏈接文件同名的文件時,將force設置為yes,回將同名文件覆蓋為鏈接文件,相當於刪除同名文件,創建鏈接文件。情況三:當你要創建鏈接文件的目錄中已經存在與鏈接文件同名的文件,並且鏈接文件指向的源文件也不存在,這時會強制替換同名文件為鏈接文件。
owner參數 :用於指定被操作文件的屬主,屬主對應的用戶必須在遠程主機中存在,否則會報錯。
group參數 :用於指定被操作文件的屬組,屬組對應的組必須在遠程主機中存在,否則會報錯。
mode參數:用於指定被操作文件的權限,比如,如果想要將文件權限設置為"rw-r-x---",則可以使用mode=650進行設置,或者使用mode=0650,效果也是相同的,如果你想要設置特殊權限,比如為二進制文件設置suid,則可以使用mode=4700,很方便吧。
recurse參數:當要操作的文件為目錄,將recurse設置為yes,可以遞歸的修改目錄中文件的屬性。
[root@Jenkins filemodule]# cat file.yml
---
- hosts: all
remote_user: root
gather_facts: false
tasks:
- name: "file模塊在目標服務器創建文件夾"
file:
path: "/opt/filemodule"
state: directory
owner: root
group: root
mode: 755
- name: "file模塊在目標服務器上創建文件"
file:
path: /opt/filemodule/filemodulesetup.txt
state: touch
owner: root
group: root
mode: 755
- name: "file模塊在目標服務器上創建要刪除的文件"
file:
path: /opt/filemodule/filemoduledelete.txt
state: touch
owner: root
group: root
mode: 755
- name: "file模塊在目標服務器上刪除文件"
file:
path: "/opt/filemodule/filemoduledelete.txt"
state: absent