最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Linux技術(shù)分享 Ansible常用模塊-copy模塊

2021-06-09 18:41 作者:夜灬長夢多  | 我要投稿


一、概述

copy 模塊的作用就是拷貝文件,它與之前介紹過的 fetch 模塊類似,不過,fetch 模塊是從遠程主機中拉取文件到 ansible 管理主機,而 copy 模塊是將 ansible 管理主機上的文件拷貝到遠程主機中。

二、常用參數(shù)

src參數(shù) :用于指定需要copy的文件或目錄。

dest參數(shù) :用于指定文件將被拷貝到遠程主機的哪個目錄中,dest為必須參數(shù)。

content參數(shù) :當不使用src指定拷貝的文件時,可以使用content直接指定文件內(nèi)容,src與content兩個參數(shù)必有其一,否則會報錯。

force參數(shù) : 當遠程主機的目標路徑中已經(jīng)存在同名文件,并且與ansible主機中的文件內(nèi)容不同時,是否強制覆蓋,可選值有yes和no,默認值為yes,表示覆蓋,如果設置為no,則不會執(zhí)行覆蓋拷貝操作,遠程主機中的文件保持不變。

backup參數(shù) : 當遠程主機的目標路徑中已經(jīng)存在同名文件,并且與ansible主機中的文件內(nèi)容不同時,是否對遠程主機的文件進行備份,可選值有yes和no,當設置為yes時,會先備份遠程主機中的文件,然后再將ansible主機中的文件拷貝到遠程主機。

owner參數(shù) : 指定文件拷貝到遠程主機后的屬主,但是遠程主機上必須有對應的用戶,否則會報錯。

group參數(shù) : 指定文件拷貝到遠程主機后的屬組,但是遠程主機上必須有對應的組,否則會報錯。

mode參數(shù) : 指定文件拷貝到遠程主機后的權(quán)限,如果你想將權(quán)限設置為”rw-r--r--“,則可以使用mode=0644表示,如果你想要在user對應的權(quán)限位上添加執(zhí)行權(quán)限,則可以使用mode=u+x表示。

三、示例

1.將 ansible 管理主機中 /testdir/copytest 文件復制到遠程主機的 /testdir 目錄下。

ansible 管理主機中的文件內(nèi)容為:

[root@ansible-manager ~]# cat /testdir/copytest

123

456123

執(zhí)行 copy:

[root@ansible-manager ~]# ansible ansible-demo3 -m copy -a "src=/testdir/copytest dest=/testdir/"

ansible-demo3 | FAILED! => {

"changed": false,

"checksum": "

47ce3ac56f911ac44537d6a3802b72ceed71e152",

"msg": "Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"

}123456

根據(jù)報錯信息,ansible-demo3 主機需要安裝 libselinux-python。

[root@ansible-demo3 ~]# yum install libselinux-python -y1

安裝完畢后,再次執(zhí)行:

[root@ansible-manager ~]# ansible ansible-demo3 -m copy -a "src=/testdir/copytest dest=/testdir/"

ansible-demo3 | SUCCESS => {

"changed": true,

"checksum": "

47ce3ac56f911ac44537d6a3802b72ceed71e152",

"dest": "/testdir/copytest",

"gid": 0,

"group": "root",

"md5sum": "

c010aff9dc6276fdb7efefd1a2757658",

"mode": "0644",

"owner": "root",

"secontext": "

system_u:object_r:default_t:s0",

"size": 8,

"src": "

/root/.ansible/tmp/ansible-tmp-1526023671.74-99930404286274/source",

"state": "file",

"uid": 0

}12345678910111213141516

成功執(zhí)行后,看看 ansible-demo3 的 /testdir/copytest 文件:

[root@ansible-demo3 ~]# cat /testdir/copytest

123

456123

2.在遠程主機的 /testdir 目錄下生成文件 testfile1,testfile1 文件中有兩行文本,第一行文本為 aaa,第二行為 bbb,當使用 content 指定文件內(nèi)容時,dest 參數(shù)對應的值必須是一個文件,而不能是一個路徑。

[root@ansible-manager ~]# ansible ansible-demo3 -m copy -a 'content="aaa\nbbb\n" dest=/testdir/testfile1'

ansible-demo3 | SUCCESS => {

"changed": true,

"checksum": "

90c206af0bfefa95541d3e724efe1dbc1ed3877f",

"dest": "/testdir/testfile1",

"gid": 0,

"group": "root",

"md5sum": "

8b652b8c79f357694a04bd793f533c96",

"mode": "0644",

"owner": "root",

"secontext": "

unconfined_u:object_r:default_t:s0",

"size": 8,

"src": "

/root/.ansible/tmp/ansible-tmp-1526113265.26-187047800648668/source",

"state": "file",

"uid": 0

}12345678910111213141516

因為 ansible-demo3 主機上面之前已經(jīng)存在 /testdir/testfile1 文件,所以執(zhí)行成功后返回 “changed” 為 true。

可以看到,文件內(nèi)容已經(jīng)改寫:

執(zhí)行前

[root@ansible-demo3 ~]# cat /testdir/testfile11

執(zhí)行后

[root@ansible-demo3 ~]# cat /testdir/testfile1

aaa

bbb123

3.將 ansible 主機中 /testdir/copytest 文件復制到遠程主機的 /testdir 目錄中時,如果遠程主機中已經(jīng)存在 /testdir/copytest 文件,并且文件內(nèi)容與 ansible 主機中的 copytest 文件的內(nèi)容不一致,則不執(zhí)行拷貝操作,遠程主機中的 /testdir/copytest 文件內(nèi)容不會被改變。

[root@ansible-manager ~]# ansible ansible-demo3 -m copy -a "src=/testdir/copytest dest=/testdir/ force=no"

ansible-demo3 | SUCCESS => {

"changed": false,

"dest": "/testdir/",

"src": "/testdir/copytest"

}123456

4.將 ansible 主機中 /testdir/copytest 文件復制到遠程主機的 /testdir 目錄中時,如果遠程主機中已經(jīng)存在 /testdir/copytest 文件,并且文件內(nèi)容與 ansible 主機中的 /testdir/copytest 文件的內(nèi)容不一致,會執(zhí)行拷貝操作,但是在執(zhí)行拷貝操作之前,會將遠程主機中的原文件重命名,以作備份,然后再進行拷貝操作。

先修改 /testdir/copytest 文件

[root@ansible-manager ~]# cat /testdir/copytest

123

456

[root@ansible-manager ~]# vi /testdir/copytest

[root@ansible-manager ~]# cat /testdir/copytest

123

456

78912345678

執(zhí)行 copy

[root@ansible-manager ~]# ansible ansible-demo3 -m copy -a "src=/testdir/copytest dest=/testdir/ backup=yes"

ansible-demo3 | SUCCESS => {

"backup_file": "

/testdir/copytest.20579.2018-05-12@16:31:27~",

"changed": true,

"checksum": "

a8d207d098d939cb0dc9df1f3a2b986d6d4499b2",

"dest": "/testdir/copytest",

"gid": 0,

"group": "root",

"md5sum": "

a2ef74a76b2bfcfe14817a27c511759c",

"mode": "0644",

"owner": "root",

"secontext": "

system_u:object_r:default_t:s0",

"size": 12,

"src": "

/root/.ansible/tmp/ansible-tmp-1526113886.45-35720740584873/source",

"state": "file",

"uid": 0

}1234567891011121314151617

查看 ansible-demo3 主機 /testdir 下面的文件

copytest.20579.2018-05-12@16:31:27~ 為備份的文件

[root@ansible-demo3 ~]# ls /testdir/

copytest copytest.20579.2018-05-12@16:31:27~ test testfile1 testfile2

[root@ansible-demo3 ~]# cat /testdir/copytest

123

456

789

[root@ansible-demo3 ~]# cat

/testdir/copytest.20579.2018-05-12\@16\:31\:27~

123

456123456789

5.拷貝文件時,指定文件的屬主,需要注意,遠程主機上必須存在對應的用戶。

[root@ansible-manager ~]# ansible ansible-demo3 -m copy -a "src=/testdir/copytest dest=/testdir/ owner=ding"

ansible-demo3 | SUCCESS => {

"changed": true,

"checksum": "

a8d207d098d939cb0dc9df1f3a2b986d6d4499b2",

"dest": "/testdir/copytest",

"gid": 0,

"group": "root",

"mode": "0644",

"owner": "ding",

"path": "/testdir/copytest",

"secontext": "

system_u:object_r:default_t:s0",

"size": 12,

"state": "file",

"uid": 1000

}123456789101112131415

可以看到,執(zhí)行前后的變化

6.拷貝文件時,指定文件的屬組,需要注意,遠程主機上必須存在對應的組。

[root@ansible-manager ~]# ansible ansible-demo3 -m copy -a "src=/testdir/copytest dest=/testdir/ group=ding"

ansible-demo3 | SUCCESS => {

"changed": true,

"checksum": "

a8d207d098d939cb0dc9df1f3a2b986d6d4499b2",

"dest": "/testdir/copytest",

"gid": 1000,

"group": "ding",

"mode": "0644",

"owner": "ding",

"path": "/testdir/copytest",

"secontext": "

system_u:object_r:default_t:s0",

"size": 12,

"state": "file",

"uid": 1000

}123456789101112131415

7.拷貝文件時,指定文件的權(quán)限。

[root@ansible-manager ~]# ansible ansible-demo3 -m copy -a "src=/testdir/copytest dest=/testdir/ mode=0640"

ansible-demo3 | SUCCESS => {

"changed": true,

"checksum": "

a8d207d098d939cb0dc9df1f3a2b986d6d4499b2",

"dest": "/testdir/copytest",

"gid": 1000,

"group": "ding",

"mode": "0640",

"owner": "ding",

"path": "/testdir/copytest",

"secontext": "

system_u:object_r:default_t:s0",

"size": 12,

"state": "file",

"uid": 1000

}123456789101112131415


Linux技術(shù)分享 Ansible常用模塊-copy模塊的評論 (共 條)

分享到微博請遵守國家法律
石嘴山市| 潜江市| 噶尔县| 馆陶县| 夹江县| 靖西县| 泾川县| 宿松县| 肇庆市| 定结县| 大余县| 瑞金市| 浙江省| 吉水县| 安乡县| 山阴县| 于都县| 德化县| 兴海县| 千阳县| 尼玛县| 依安县| 竹溪县| 西丰县| 闸北区| 屯门区| 通道| 襄汾县| 福建省| 鲁山县| 南丰县| 达拉特旗| 鄂托克旗| 泌阳县| 珲春市| 潼南县| 长顺县| 泾源县| 贵港市| 原平市| 大足县|