ansible文件模塊使用


ansible文件模塊使用

版權聲明:https://blog.csdn.net/kellyseeme/article/details/50545521

1、 文件組裝模塊-assemble

assemble主要是將多份配置文件組裝為一份配置文件。

參數

必填

默認

選項

說明

Backup

No

Yes/no

是否創建備份文件,使用時間戳

Delimiter

 

 

配置文件內容之間的分隔符

Dest

 

 

目的文件用來連接所有的源文件

Follow

No

Yes/no

表示文件系統的鏈接,如果存在,應該follow

Group

 

 

文件所屬組,相當於chown

Mode

 

 

文件屬性,0644,記住保留前面的0

Owner

 

 

文件所屬用戶

Regexp

 

 

組裝的時候是否匹配相關的文件進行組合

Remote_src

True

True/False

False表示src文件在本機上,True表示src在遠程主機上

Src

 

 

已經存在的目錄文件

1.1 將本機上的配置文件組裝發送到遠程主機

[root@ansibleserver kel]# ansible pythonserver -m assemble -a "src=/root/kel/ dest=/tmp/kel.conf remote_src=False"

SSH password:

192.168.1.60 | success >> {

"changed": true,

"dest": "/tmp/kel.conf",

"gid": 0,

"group": "root",

"md5sum": "23245453347840c2aa288bcc274bc298",

"mode": "0600",

"owner": "root",

"size": 32,

"src": "/root/.ansible/tmp/ansible-tmp-1453144282.9-4482221307096/src",

"state": "file",

"uid": 0

}

在本機目錄/root/kel的文件進行組裝,發送到遠程配置文件/tmp/kel.conf中,在此注意參數remote_src為False表示組裝本機的配置文件

如果在本機目錄中不存在文件,那么將會顯示python代碼和亂碼

1.2 使用分隔符

[root@ansibleserver kel]# ansible pythonserver -m assemble -a "src=/root/kel/ dest=/tmp/kel.conf remote_src=False delimiter='####'"

SSH password:

192.168.1.60 | success >> {

"changed": true,

"dest": "/tmp/kel.conf",

"gid": 0,

"group": "root",

"md5sum": "b46dcc49d69688a6be5bfd5b82737c0c",

"mode": "0600",

"owner": "root",

"size": 42,

"src": "/root/.ansible/tmp/ansible-tmp-1453144492.01-279709420329993/src",

"state": "file",

"uid": 0

}

使用分隔符進行分割每個配置文件的內容,分隔符參數為delimiter

2、 文件復制模塊-copy

copy模塊是將本機中的文件復制到遠程主機當中,fetch模塊是將遠程主機中的內容復制到本機中,如果在復制文件的過程當中需要使用變量,那么就使用template模塊

參數

必填

默認

選項

說明

Backup

No

Yes/no

是否創建備份文件,使用時間戳

Content

 

 

當使用content替代src的時候,可以把文檔中內容設定為特定值

Dest

 

 

文件復制的目的地

Follow

No

Yes/no

表示文件系統的鏈接,如果存在,應該follow

Group

 

 

文件所屬組,相當於chown

Mode

 

 

文件屬性,0644,記住保留前面的0

Owner

 

 

文件所屬用戶

Directory_mode

 

 

設定目錄的權限,只有在新建的時候才會使用,不會影響已經存在的目錄

Remote_src

True

True/False

False表示src文件在本機上,True表示src在遠程主機上

Src

 

 

已經存在的目錄文件

Force

No

Yes/no

是否覆蓋

Validate

 

 

復制前是否需要檢驗復制的目的地

2.1 設定權限進行拷貝

[root@ansibleserver kel]# ansible pythonserver -m copy -a "src=/root/kel/1 dest=/tmp/kel owner=root group=root mode=0777"

SSH password:

192.168.1.60 | success >> {

"changed": true,

"dest": "/tmp/kel",

"gid": 0,

"group": "root",

"md5sum": "799e373c68e4b72dd2eb7ed715cfced9",

"mode": "0777",

"owner": "root",

"size": 4,

"src": "/root/.ansible/tmp/ansible-tmp-1453145233.73-276909183600356/source",

"state": "file",

"uid": 0

}

設定了文件的權限,設定mode為0777,用戶和組均為root

2.2 拷貝的時候備份

[root@ansibleserver kel]# ansible pythonserver -m copy -a "src=/root/kel/1 dest=/tmp/kel owner=root group=root backup=yes"

SSH password:

192.168.1.60 | success >> {

"backup_file": "/tmp/kel.2016-01-18@14:34~",

"changed": true,

"dest": "/tmp/kel",

"gid": 0,

"group": "root",

"md5sum": "a8cb3ba3ab8a8840e019c6b21521c483",

"mode": "0777",

"owner": "root",

"size": 8,

"src": "/root/.ansible/tmp/ansible-tmp-1453145701.59-117060156554446/source",

"state": "file",

"uid": 0

}

備份的時候,只有在文件發生了變化的時候,那么會在遠程主機上進行備份,而不是在本機上進行備份源文件,備份的是遠程主機上被修改的文件

2.3 拷貝文件之后進行驗證

[root@ansibleserver kel]# ansible pythonserver -m copy -a "src=/etc/sudoers dest=/tmp/2 validate='visudo -cf %s'"

SSH password:

192.168.1.60 | success >> {

"changed": true,

"dest": "/tmp/2",

"gid": 0,

"group": "root",

"md5sum": "4093e52552d97099d003c645f15f9372",

"mode": "0644",

"owner": "root",

"size": 3797,

"src": "/root/.ansible/tmp/ansible-tmp-1453146150.33-246902811238377/source",

"state": "file",

"uid": 0

}

拷貝之后進行驗證

3、 文件拉取模塊-fetch

文件拉取模塊主要是將遠程主機中的文件拷貝到本機中,和copy模塊的作用剛剛相反,並且在保存的時候使用hostname來進行保存,當文件不存在的時候,會出現錯誤,除非設置了選項fail_on_missing為yes

參數

必填

默認值

選項

說明

Dest

Yes

 

 

用來存放文件的目錄,例如存放目錄為backup,源文件名稱為/etc/profile在主機pythonserver中,那么保存為/backup/pythonserver/etc/profile

Fail_on_missing

No

No

Yes/no

當源文件不存在的時候,標識為失敗

Flat

No

 

 

允許覆蓋默認行為從hostname/path到/file的,如果dest以/結尾,它將使用源文件的基礎名稱

Src

Yes

 

 

在遠程拉取的文件,並且必須是一個file,不能是目錄

Validate_checksum

No

Yes

Yes/no

當文件fetch之后進行md5檢查

3.1 fetch一個文件進行保存

[root@ansibleserver ~]# ansible pythonserver -m fetch -a "src=/root/123 dest=/root"

SSH password:

192.168.1.60 | success >> {

    "changed": true,

    "dest": "/root/192.168.1.60/root/123",

    "md5sum": "31be5a34915d52fe0a433d9278e99cac",

    "remote_md5sum": "31be5a34915d52fe0a433d9278e99cac"

}

src表示為遠程主機上需要傳送的文件路徑,dest表示為本機上的路徑,在傳送過來的文件,是按照IP地址進行分類,然后路徑是源文件的路徑

在拉取文件的時候,必須拉取的是文件,不能拉取文件夾

3.2 指定路徑目錄進行保存

[root@ansibleserver ~]# ansible pythonserver -m fetch -a "src=/root/Ssh.py dest=/root/kel/ flat=yes"

SSH password:

192.168.1.60 | success >> {

    "changed": true,

    "dest": "/root/kel/Ssh.py",

    "md5sum": "63f8a200d1d52d41f6258b41d7f8432c",

    "remote_md5sum": "63f8a200d1d52d41f6258b41d7f8432c"

}

在使用參數為flat的時候,如果dest的后綴名為/,那么就會保存在目錄中,然后直接保存為文件名;當dest后綴不為/的時候,那么就會直接保存為kel的文件,如上例所示。

主要是在於dest是否已/結尾,從而來區分這是個目錄還是路徑。

 

4、 文件管理模塊-file

主要用來設置文件、鏈接、目錄的屬性,或者移除文件、鏈接、目錄,很多其他的模塊也會包含這種作用,例如copy,assemble和template

參數

必填

默認

選項

說明

Follow

No

No

Yes/no

這個標識說明這是系統鏈接文件,如果存在,應該遵循

Force

No

No

Yes/no

強制創建鏈接在兩種情況下:源文件不存在(過會會存在);目標存在但是是文件(創建鏈接文件替代)

Group

No

 

 

文件所屬用戶組

Mode

No

 

 

文件所屬權限

Owner

No

 

 

文件所屬用戶

Path

Yes

 

 

要控制文件的路徑

Recurse

No

No

Yes/no

當文件為目錄時,是否進行遞歸設置權限

Src

No

 

 

文件鏈接路徑,只有狀態為link的時候,才會設置,可以是絕對相對不存在的路徑

State

No

File

File/link

Directory

Hard/touch

Absent

如果是目錄不存在,那么會創建目錄;如果是文件不存在,那么不會創建文件;如果是link,那么軟鏈接會被創建或者修改;如果是absent,那么目錄下的所有文件都會被刪除,如果是touch,會創建不存在的目錄和文件

4.1 設置文件屬性

[root@ansibleserver ~]# ansible pythonserver -m file -a "path=/root/123 owner=kel group=kel mode=0644"

SSH password:

192.168.1.60 | success >> {

    "changed": true,

    "gid": 500,

    "group": "kel",

    "mode": "0644",

    "owner": "kel",

    "path": "/root/123",

    "size": 294,

    "state": "file",

    "uid": 500

}

文件路徑為path,表示文件路徑,設定所屬用戶和所屬用戶組,權限為0644

[root@ansibleserver ~]# ansible pythonserver -m file -a "path=/tmp/kel/ owner=kel group=kel mode=0644 recurse=yes"

SSH password:

192.168.1.60 | success >> {

    "changed": true,

    "gid": 500,

    "group": "kel",

    "mode": "0644",

    "owner": "kel",

    "path": "/tmp/kel/",

    "size": 4096,

    "state": "directory",

    "uid": 500

}

文件路徑為path,使用文件夾進行遞歸修改權限,使用的參數為recurse表示為遞歸

4.2 創建目錄

[root@ansibleserver ~]# ansible pythonserver -m file -a "path=/tmp/kel state=directory mode=0755"

SSH password:

192.168.1.60 | success >> {

    "changed": true,

    "gid": 0,

    "group": "root",

    "mode": "0755",

    "owner": "root",

    "path": "/tmp/kel",

    "size": 4096,

    "state": "directory",

    "uid": 0

}

創建目錄,使用的參數主要是state為directory

4.3 修改權限

[root@ansibleserver ~]# ansible pythonserver -m file -a "path=/tmp/kel mode=0444"

SSH password:

192.168.1.60 | success >> {

    "changed": true,

    "gid": 0,

    "group": "root",

    "mode": "0444",

    "owner": "root",

    "path": "/tmp/kel",

    "size": 4096,

    "state": "directory",

    "uid": 0

}

直接使用mode來進行修改權限

4.4 創建軟連接

[root@ansibleserver tmp]# ansible pythonserver -m file -a "src=/tmp/1 dest=/tmp/2 owner=kel state=link"

SSH password:

192.168.1.60 | success >> {

    "changed": true,

    "dest": "/tmp/2",

    "gid": 0,

    "group": "root",

    "mode": "0777",

    "owner": "kel",

    "size": 6,

    "src": "/tmp/1",

    "state": "link",

    "uid": 500

}

 src表示已經存在的文件,dest表示創建的軟連接的文件名,最后的state狀態為link

5、 ini文件管理模塊-ini_file

Ini_file模塊主要是用來設置ini文件的格式的文件。

添加、刪除、修改單獨的ini格式的文件,其中主要是用來修改部分的配置信息,而不是template或者是assemble,添加失去的section。

參數

必填

默認

選擇

說明

Backup

No

No

Yes/no

在修改之前進行備份

Dest

Yes

 

 

Ini類型文件的路徑,如果不存在會創建

Follow

No

No

Yes/no

標識是否文件系統鏈接,如果存在,那么將遵循

Group

No

 

 

組名

Mode

No

 

 

權限

Option

No

 

 

如果需要修改一個值,那么可以設置,如果添加刪除一個整段,那么可以忽略

Others

No

 

 

文件模塊所使用的參數可以在這里使用

Owner

No

 

 

用戶名

Section

Yes

 

 

在ini文件中的section名稱,如果狀態為present並且設置了一個值,那么會添加

State

No

Present

Absent

Present

新增/刪除

Value

No

 

 

這個值和option相關聯,如果刪除那么會忽略

5.1 添加其中的節的值

[root@ansibleserver tmp]# ansible pythonserver -m ini_file -a "dest=/tmp/kel section=kel option=kel value=kel mode=0600 backup=yes"

SSH password:

192.168.1.60 | success >> {

    "changed": true,

    "dest": "/tmp/kel",

    "gid": 0,

    "group": "root",

    "mode": "0600",

    "msg": "OK",

    "owner": "root",

    "size": 29,

    "state": "file",

    "uid": 0

}

表示在ini文件格式中添加一個值,路徑為/tmp/kel,節名稱為kel,字符為kel值為kel,在修改之前進行備份,ini文件格式如下:

[section]

key=value

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM