自動化運維工具——Ansible(七)——文件操作之file模塊

1. file模塊介紹

file模塊可以幫助我們完成一些對文件的基本操作,比如,創建文件或目錄、刪除文件或目錄、修改文件權限等

2. 常用參數

此處我們介紹一些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,可以遞歸的修改目錄中文件的屬性。

3. 使用示例

3.1 示例一

在testB主機上創建一個名爲testfile的文件,如果testfile文件已經存在,則會更新文件的時間戳,與touch命令的作用相同。

#server4中
mkdir /testdir
cd /testdir/

在這裏插入圖片描述

#server1中
ansible testB -m file -a "path=/testdir/testfile state=touch"  

在這裏插入圖片描述

server4中查看:
在這裏插入圖片描述

再次執行:

如果testfile文件已經存在,則會更新文件的時間戳,與touch命令的作用相同
在這裏插入圖片描述

在這裏插入圖片描述

3.2 示例二

在testB主機上創建一個名爲testdir的目錄,如果testdir目錄已經存在,則不進行任何操作。

#server1中
ansible testB -m file -a "path=/testdir/testdir state=directory"  

在這裏插入圖片描述
server4中查看:
在這裏插入圖片描述

再次執行:

如果testdir目錄已經存在,則不進行任何操作。
在這裏插入圖片描述

3.3 示例三

在testB上爲testfile文件創建軟鏈接文件,軟鏈接名爲linkfile,執行下面命令的時候,testfile已經存在。

#server1中
ansible testB -m file -a "path=/testdir/linkfile state=link src=/testdir/testfile"  

在這裏插入圖片描述

server4中查看:
在這裏插入圖片描述

3.4 示例四

在testB上爲testfile文件創建硬鏈接文件,硬鏈接名爲hardfile,執行下面命令的時候,testfile已經存在。

#server1中
ansible testB -m file -a "path=/testdir/hardfile state=hard src=/testdir/testfile"  

在這裏插入圖片描述server4中查看:
在這裏插入圖片描述

3.5 示例五

在創建鏈接文件時,如果源文件不存在,或者鏈接文件與其他文件同名時,強制覆蓋同名文件或者創建鏈接文件,參考上述force參數的解釋。

#server1中
ansible testB -m file -a "path=/testdir/linkfile state=link src=sourcefile force=yes"  

在這裏插入圖片描述
server4中查看:
在這裏插入圖片描述

3.6 示例六

刪除遠程機器上的指定文件或目錄

#server1中
ansible testB -m file -a "path=/testdir/testdir state=absent"  

在這裏插入圖片描述
server4中查看:
在這裏插入圖片描述

3.7 示例七

在創建文件或目錄的時候指定屬主,或者修改遠程主機上的文件或目錄的屬主。

touch命令會修改時間戳

#server1中
ansible testB -m file -a "path=/testdir/abc state=touch owner=kaiser"  

在這裏插入圖片描述

server4中查看:
在這裏插入圖片描述

#server1中
ansible testB -m file -a "path=/testdir/abc owner=kaiser"  

在這裏插入圖片描述
server4中查看:

在這裏插入圖片描述

#server1中
ansible testB -m file -a "path=/testdir/aaa state=directory owner=kaiser"

在這裏插入圖片描述

server4中查看:
在這裏插入圖片描述

3.8 示例八

在創建文件或目錄的時候指定屬組,或者修改遠程主機上的文件或目錄的屬組。

#server1中
ansible testB -m file -a "path=/testdir/abb state=touch group=kaiser"  

在這裏插入圖片描述

server4中查看:
在這裏插入圖片描述

#server1中
ansible testB -m file -a "path=/testdir/abb group=kaiser"  

在這裏插入圖片描述
server4中查看:
在這裏插入圖片描述

#server1中
ansible testB -m file -a "path=/testdir/bbb state=directory group=kaiser"  

在這裏插入圖片描述
server4中查看:
在這裏插入圖片描述

3.9 示例九

在創建文件或目錄的時候指定權限,或者修改遠程主機上的文件或目錄的權限。

#server1中
ansible testB -m file -a "path=/testdir/abb state=touch mode=0666"  

在這裏插入圖片描述

server4中查看:
在這裏插入圖片描述

#server1中
ansible testB -m file -a "path=/testdir/abb mode=0666"  

在這裏插入圖片描述server4中查看:
在這裏插入圖片描述

#server1中
ansible testB -m file -a "path=/testdir/abb mode=4700"  

在這裏插入圖片描述

server4中查看:
在這裏插入圖片描述

#server1中
ansible testB -m file -a "path=/testdir/abb state=directory mode=0644"  

server4中查看:

在這裏插入圖片描述

3.10 示例十

當操作遠程主機中的目錄時,同時遞歸的將目錄中的文件的屬主屬組都設置爲kaiser。

#server1中
ansible testB -m file -a "path=/testdir/123/321 state=directory owner=kaiser group=kaiser recurse=yes"  

在這裏插入圖片描述

server4中查看:

在這裏插入圖片描述

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