Ansible常用模組 file模組

2021-09-28 20:59:53 字數 3783 閱讀 1425

一、概述

file 模組可以幫助我們完成一些對檔案的基本操作。比如,建立檔案或目錄、刪除檔案或目錄、修改檔案許可權等。

二、常用引數

path引數 :必須引數,用於指定要操作的檔案或目錄,在之前版本的ansible中,使用dest引數或者name引數指定要操作的檔案或目錄,為了相容之前的版本,使用dest或name也可以。

state引數 :此引數非常靈活,其對應的值需要根據情況設定。比如,我們想要在遠端主機上建立/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」為缺席之意,當我們想讓操作的目標」缺席」時,就表示我們想要刪除目標。

force引數 : 當state=link的時候,可配合此引數強制建立鏈結檔案,當force=yes時,表示強制建立鏈結檔案。不過強制建立鏈結檔案分為三種情況。情況一:當要建立的鏈結檔案指向的原始檔並不存在時,使用此引數,可以先強制建立出鏈結檔案。情況二:當要建立鏈結檔案的目錄中已經存在與鏈結檔案同名的檔案時,將force設定為yes,會將同名檔案覆蓋為鏈結檔案,相當於刪除同名檔案,建立鏈結檔案。情況三:當要建立鏈結檔案的目錄中已經存在與鏈結檔案同名的檔案,並且鏈結檔案指向的原始檔也不存在,這時會強制替換同名檔案為鏈結檔案。

owner引數 :用於指定被操作檔案的屬主,屬主對應的使用者必須在遠端主機中存在,否則會報錯。

group引數 :用於指定被操作檔案的屬組,屬組對應的組必須在遠端主機中存在,否則會報錯。

mode引數:用於指定被操作檔案的許可權,比如,如果想要將檔案許可權設定為」rw-r-x---「,則可以使用mode=650進行設定,或者使用mode=0650,效果也是相同的。如果想要設定特殊許可權,比如為二進位制檔案設定suid,則可以使用mode=4700。

recurse引數:當要操作的檔案為目錄,將recurse設定為yes,可以遞迴的修改目錄中檔案的屬性。

三、示例

1.在 ansible-demo3 主機上建立乙個名為 testfile1 的檔案,如果 testfile1 檔案已經存在,則會更新檔案的時間戳,與 touch 命令的作用相同。

[root@ansible-manager ~]# ansible ansible-demo3 -m file -a "path=/testdir/testfile1 state=touch"

ansible-demo3 | success =>

2.在 ansible-demo3 主機上建立乙個名為 /testdir/testdir 的目錄,如果 /testdir/testdir 目錄已經存在,則不進行任何操作。

[root@ansible-manager ~]# ansible ansible-demo3 -m file -a "path=/testdir/testdir state=directory"

ansible-demo3 | success =>

3.在 ansible-demo3 上為 testfile1 檔案建立軟鏈結檔案,軟鏈結名為 linkfile1,執行下面命令的時候,testfile1 已經存在。

[root@ansible-manager ~]# ansible ansible-demo3 -m file -a "path=/testdir/linkfile1 state=link src=/testdir/testfile1"

ansible-demo3 | success =>

4.在 ansible-demo3 上為 testfile2 檔案建立硬鏈結檔案,硬鏈結名為 hardfile2,執行下面命令的時候,testfile2 已經存在。

[root@ansible-manager ~]# ansible ansible-demo3 -m file -a "path=/testdir/hardfile2 state=hard src=/testdir/testfile2"

ansible-demo3 | success =>

5.在建立鏈結檔案時,如果原始檔不存在,或者鏈結檔案與其他檔案同名時,強制覆蓋同名檔案或者建立鏈結檔案,參考上述 force 引數的解釋。

[root@ansible-manager ~]# ansible ansible-demo3 -m file -a "path=/testdir/linkfile3 state=link src=/testdir/sourcefile force=yes"

ansible-demo3 | success =>

返回的 state 為 absent,表示原始檔不存在。

6.刪除遠端機器上的指定檔案或目錄。

[root@ansible-manager ~]# ansible ansible-demo3 -m file -a "path=/testdir/testdir state=absent"

ansible-demo3 | success =>

7.在建立檔案或目錄的時候指定屬主,或者修改遠端主機上的檔案或目錄的屬主。

ansible ansible-demo3 -m file -a "path=/testdir/abc state=touch owner=ding"

ansible ansible-demo3 -m file -a "path=/testdir/abc owner=ding"

ansible ansible-demo3 -m file -a "path=/testdir/abc state=directory owner=ding"

8.在建立檔案或目錄的時候指定屬組,或者修改遠端主機上的檔案或目錄的屬組。

ansible ansible-demo3 -m file -a "path=/testdir/abb state=touch group=ding"

ansible ansible-demo3 -m file -a "path=/testdir/abb group=ding"

ansible ansible-demo3 -m file -a "path=/testdir/abb state=directory group=ding"

9.在建立檔案或目錄的時候指定許可權,或者修改遠端主機上的檔案或目錄的許可權。

ansible ansible-demo3 -m file -a "path=/testdir/abb state=touch mode=0644"

ansible ansible-demo3 -m file -a "path=/testdir/abb mode=0644"

ansible ansible-demo3 -m file -a "path=/testdir/binfile mode=4700"

ansible ansible-demo3 -m file -a "path=/testdir/abb state=directory mode=0644"

10.當操作遠端主機中的目錄時,同時遞迴的將目錄中的檔案的屬主屬組都設定為ding。

ansible ansible-demo3 -m file -a "path=/testdir/abd state=directory owner=ding group=ding recurse=yes"

Ansible常用模組

1.ping模組2.ansible command模組是ansible預設模組,主要用於執行linux基礎命令,可以執行遠端伺服器命令執行 任務執行等操作。但command模組不支援變數 重定向 管道符等,這些操作需要用shell模組執行 command模組使用詳解 chdir 執行命令前,切換到目...

ansible常用模組

1.setup 該模組主要用於收集資訊,是通過呼叫facts元件來實現的 ansible doc s setup ansible mysql m setup 檢視mysql伺服器上所有資訊檢視遠端主機基本資訊 ansible all m setup2.ping測試遠端主機執行狀態 ansible a...

Ansible 常用模組

ansible是基於python開發,集合了眾多運維工具 puppet cfengine chef func fabric 的優點 具有批量系統配置 批量程式部署 批量執行命令等功能。是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所執行的模組,ansible只是提供一種...