ansile(2)模块之synchronize

ansible synchronize作用跟rsync很相似,具体参数如下:

参数内容,均来自官网,如果有出入,以官网为主

参数 是否必须 默认 选项 说明
archive no yes
yes

no

rsync镜像递归标志,启用递归,链接,权限,时间,属主,属组标志和 -D
checksum no no
yes

no

跳过基本的校验
compress no yes
yes

no

在传输过程中压缩文件数据。在大多数情况下,请保持启用,除非它导致问题。
copy_links no no
yes

no

将符号链接复制为它们所指向的项(引用对象),而不是符号链接。
delete no no
yes

no

删除src路径中不存在的dest中的文件(传输后,不在之前)。此选项需要recursive = yes。
dest yes
要同步源的目标主机上的路径;该路径可以是绝对路径或相对路径。
dest_port no  ansible_ssh_port的值设定,remote_port配置设置,如果ssh客户端没有设置的话
目标主机上ssh的端口号。在ansible 2.0之前,ansible_ssh_port库存变量优先于此值。
dirs no no
yes

no

传输目录而不进行递归
existing_only no no
yes

no

跳过在接收器上创建一个新文件。
group no 递归选项的值
yes

no

保留组
links no 递归选项的值
yes

no

将符号链接复制为符号链接。
mode no push
yes

no

指定同步的方向。在推模式下,localhost或delegate是源;在拉模式下,远程主机在上下文中是源。
owner no 递归选项的值
yes

no

保留属主
partial no 告诉rsync保留一些文件,这应该使以后的文件传输的其余部分。
perms no 递归选项的值
yes

no

保留权限
recursive no 递归选项的值
yes

no

递归到目录。
rsync_opts no 通过传入数组来指定其他rsync选项。
rsync_path no 指定要在远程主机上运行的rsync命令。请参见rsync手册页上的--rsync-path。
rsync_timeout no 以秒为单位指定rsync命令的--timeout。
set_remote_user no True put user @为远程路径。如果您有自定义ssh配置为与库存用户不匹配的主机定义远程用户,则应将此参数设置为“no”。
src yes 将同步到目标的源主机上的路径;路径可以是绝对路径或相对路径。
times no 递归选项的值
yes

no

保存修改时间
use_ssh_args no no
yes

no

使用ansible.cfg中指定的ssh_args
verify_host no 验证目标主机密钥。

1.同步目录下文件:

源文件:

# ll
total 4
lrwxrwxrwx 1 root root    8 Dec 28 17:39 fk -> /data/fm
-rw-r--r-- 1 root root 4096 May 31  2016 p.txt

同步目录下文件,而不是目录:

# ansible webserver -m synchronize -a "src=/root/dog/ dest=/tmp/"
172.16.110.48 | SUCCESS => {
    "changed": true, 
    "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh ‘ssh  -S none -o StrictHostKeyChecking=no‘ --out-format=‘<<CHANGED>>%i %n%L‘ \"/root/dog/\" \"172.16.110.48:/tmp/\"", 
    "msg": ".d..t...... ./\n", 
    "rc": 0, 
    "stdout_lines": [
        ".d..t...... ./"
    ]
}
172.16.110.47 | SUCCESS => {
    "changed": true, 
    "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh ‘ssh  -S none -o StrictHostKeyChecking=no‘ --out-format=‘<<CHANGED>>%i %n%L‘ \"/root/dog/\" \"172.16.110.47:/tmp/\"", 
    "msg": ".d..t...... ./\n", 
    "rc": 0, 
    "stdout_lines": [
        ".d..t...... ./"
    ]
}

同步了所有文件

# ll
total 8
drwxr-xr-x  2 root root   29 Dec 28 17:39 dog
lrwxrwxrwx  1 root root    8 Dec 28 17:39 fk -> /data/fm //无效链接,源不存在

2.同步整个目录:

# ansible webserver -m synchronize -a "src=/root/dog dest=/tmp/" 
172.16.110.48 | SUCCESS => {
    "changed": true, 
    "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh ‘ssh  -S none -o StrictHostKeyChecking=no‘ --out-format=‘<<CHANGED>>%i %n%L‘ \"/root/dog\" \"172.16.110.48:/tmp/\"", 
    "msg": "cd+++++++++ dog/\ncL+++++++++ dog/fk -> /data/fm\n<f+++++++++ dog/p.txt\n", 
    "rc": 0, 
    "stdout_lines": [
        "cd+++++++++ dog/", 
        "cL+++++++++ dog/fk -> /data/fm", 
        "<f+++++++++ dog/p.txt"
    ]
}
172.16.110.47 | SUCCESS => {
    "changed": true, 
    "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh ‘ssh  -S none -o StrictHostKeyChecking=no‘ --out-format=‘<<CHANGED>>%i %n%L‘ \"/root/dog\" \"172.16.110.47:/tmp/\"", 
    "msg": "cd+++++++++ dog/\ncL+++++++++ dog/fk -> /data/fm\n<f+++++++++ dog/p.txt\n", 
    "rc": 0, 
    "stdout_lines": [
        "cd+++++++++ dog/", 
        "cL+++++++++ dog/fk -> /data/fm", 
        "<f+++++++++ dog/p.txt"
    ]
}

同步了整个目录

# ll
total 8
drwxr-xr-x  2 root root   29 Dec 28 17:39 dog

3.同步时候保持属主,属组,权限,链接,同时传输的时候使用压缩

同步前文件详情:

# ll dog/
total 8
-rw-r--r-- 1 ckl  ckl     9 Dec 29 13:05 em_f
lrwxrwxrwx 1 root root    8 Dec 28 17:39 fk -> /data/fm
-rwx------ 1 root root 4096 May 31  2016 p.txt

同步:

# ansible webserver -m synchronize -a "compress=yes group=yes links=yes  src=/root/dog/ dest=/tmp/sync_dir"         
172.16.110.47 | SUCCESS => {
    "changed": true, 
    "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh ‘ssh  -S none -o StrictHostKeyChecking=no‘ --out-format=‘<<CHANGED>>%i %n%L‘ \"/root/dog/\" \"172.16.110.47:/tmp/sync_dir\"", 
    "msg": ".d..t...... ./\n<f+++++++++ em_f\ncL+++++++++ fk -> /data/fm\n<f+++++++++ p.txt\n", 
    "rc": 0, 
    "stdout_lines": [
        ".d..t...... ./", 
        "<f+++++++++ em_f", 
        "cL+++++++++ fk -> /data/fm", 
        "<f+++++++++ p.txt"
    ]
}
172.16.110.48 | SUCCESS => {
"changed": true, 
    "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh ‘ssh  -S none -o StrictHostKeyChecking=no‘ --out-format=‘<<CHANGED>>%i %n%L‘ \"/root/dog/\" \"172.16.110.48:/tmp/sync_dir\"", 
    "msg": ".d..t...... ./\n<f+++++++++ em_f\ncL+++++++++ fk -> /data/fm\n<f+++++++++ p.txt\n", 
    "rc": 0, 
    "stdout_lines": [
        ".d..t...... ./", 
        "<f+++++++++ em_f", 
        "cL+++++++++ fk -> /data/fm", 
        "<f+++++++++ p.txt"
    ]
}

结果:(权限及属性保持不变)

# ll
total 8
-rw-r--r-- 1 ckl  ckl     9 Dec 29 13:05 em_f
lrwxrwxrwx 1 root root    8 Dec 28 17:39 fk -> /data/fm //无效链接,源不存在
-rwx------ 1 root root 4096 May 31  2016 p.txt

4.删除目标上的文件:

删除前文件:

# ll
total 8
-rw-r--r-- 1 ckl  ckl     9 Dec 29 13:05 em_f
lrwxrwxrwx 1 root root    8 Dec 28 17:39 fk -> /data/fm
-rwx------ 1 root root 4096 May 31  2016 p.txt

删除:

# ansible webserver -m synchronize -a "src=/root/dele/ dest=/tmp/sync_dir delete=yes"
172.16.110.47 | SUCCESS => {
    "changed": true, 
    "cmd": "/usr/bin/rsync --delay-updates -F --compress --delete-after --archive --rsh ‘ssh  -S none -o StrictHostKeyChecking=no‘ --out-format=‘<<CHANGED>>%i %n%L‘ \"/root/dele/\" \"172.16.110.47:/tmp/sync_dir\"", 
    "msg": "*deleting   dele/\n*deleting   p.txt\n*deleting   fk\n*deleting   em_f\n", 
    "rc": 0, 
    "stdout_lines": [
        "*deleting   dele/", 
        "*deleting   p.txt", 
        "*deleting   fk", 
        "*deleting   em_f"
    ]
}
172.16.110.48 | SUCCESS => {
    "changed": true, 
    "cmd": "/usr/bin/rsync --delay-updates -F --compress --delete-after --archive --rsh ‘ssh  -S none -o StrictHostKeyChecking=no‘ --out-format=‘<<CHANGED>>%i %n%L‘ \"/root/dele/\" \"172.16.110.48:/tmp/sync_dir\"", 
    "msg": "*deleting   dele/\n*deleting   p.txt\n*deleting   fk\n*deleting   em_f\n", 
    "rc": 0, 
    "stdout_lines": [
        "*deleting   dele/", 
        "*deleting   p.txt", 
         "*deleting   fk", 
        "*deleting   em_f"
    ]
}

查看目标文件:

# ll /tmp/sync_dir/
total 0

5.同步链接时,同步源文件

# ll
total 8
-rw-r--r-- 1 ckl  ckl     9 Dec 29 13:05 em_f
lrwxrwxrwx 1 root root    8 Dec 28 17:39 fk -> /data/fm
-rwx------ 1 root root 4096 May 31  2016 p.txt
drwxr-xr-x 2 root root   20 Dec 29 13:15 wu
[[email protected] dog]# ll *
-rw-r--r-- 1 ckl  ckl     9 Dec 29 13:05 em_f
lrwxrwxrwx 1 root root    8 Dec 28 17:39 fk -> /data/fm
-rwx------ 1 root root 4096 May 31  2016 p.txt
wu:
total 4
-rw-r--r-- 1 root root 14 Dec 29 13:15 kk.txt

同步:

# ansible webserver -m synchronize -a "compress=yes group=yes copy_links=yes dirs=yes src=/root/dog/ dest=/tmp/sync_dir" 
172.16.110.48 | SUCCESS => {
    "changed": true, 
    "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --copy-links --dirs --rsh ‘ssh  -S none -o StrictHostKeyChecking=no‘ --out-format=‘<<CHANGED>>%i %n%L‘ \"/root/dog/\" \"172.16.110.48:/tmp/sync_dir\"", 
    "msg": ".d..t...... ./\n<f+++++++++ em_f\n<f+++++++++ fk\n<f+++++++++ p.txt\ncd+++++++++ wu/\n<f+++++++++ wu/kk.txt\n", 
    "rc": 0, 
    "stdout_lines": [
        ".d..t...... ./", 
        "<f+++++++++ em_f", 
        "<f+++++++++ fk", 
        "<f+++++++++ p.txt", 
        "cd+++++++++ wu/", 
        "<f+++++++++ wu/kk.txt"
    ]
}
172.16.110.47 | SUCCESS => {
    "changed": true, 
    "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --copy-links --dirs --rsh ‘ssh  -S none -o StrictHostKeyChecking=no‘ --out-format=‘<<CHANGED>>%i %n%L‘ \"/root/dog/\" \"172.16.110.47:/tmp/sync_dir\"", 
    "msg": ".d..t...... ./\n<f+++++++++ em_f\n<f+++++++++ fk\n<f+++++++++ p.txt\ncd+++++++++ wu/\n<f+++++++++ wu/kk.txt\n",
    "rc": 0, 
    "stdout_lines": [
        ".d..t...... ./", 
        "<f+++++++++ em_f", 
        "<f+++++++++ fk", 
        "<f+++++++++ p.txt", 
        "cd+++++++++ wu/", 
        "<f+++++++++ wu/kk.txt"
    ]
}

查看结果:

# ll
total 12
-rw-r--r-- 1 ckl  ckl     9 Dec 29 13:05 em_f
-rw-r--r-- 1 root root    7 Dec 28 16:49 fk //不再是链接
-rwx------ 1 root root 4096 May 31  2016 p.txt
drwxr-xr-x 2 root root   20 Dec 29 13:15 wu
时间: 2024-11-03 21:30:22

ansile(2)模块之synchronize的相关文章

ansile(2)模块之get_url

ansible  get_url将文件从HTTP,HTTPS或FTP下载到节点 参数 是否必须 默认 选项 说明 attributes no None yes no 文件或目录的属性应该是.要获得支持的标志,请查看taget系统上chattr的手册页. backup no no 创建一个包括时间戳信息的备份文件,这样你可以得到原始文件,如果你不正确地弄错了. checksum no 如果将校验和传递给此参数,则将在下载目标文件的摘要后计算摘要,以确保其完整性,并验证传输是否成功完成.格式:<al

ansile(2)模块之iptable

ansible iptables 模块说明 Iptables用于设置,维护和检查Linux内核中的IP包过滤规则的表.此模块不处理保存和/或加载规则,而是仅处理存在于内存中的当前规则.这与该模块在内部使用的"iptables"和"ip6tables"命令的行为相同. 以列表参数均来自官网,如果有出入,请参考官方文档 参数 是否必需 默认 选项 说明 action no append append insert 规则是应附加在底部还是插入在顶部.如果规则已经存在,则不

ansile(2)模块之copy

ansible copy模块用来文件复制,说明如下: 参数名 选项 必须 参数说明 backup yes/no no 备份远程节点上的原始文件,在拷贝之前.如果发生什么意外,原始文件还能使用. content yes/no no 用来替代src,用于将指定文件的内容,拷贝到远程文件内 dest  yes/no yes 用于定位远程节点上的文件,需要绝对路径.如果src指向的是文件夹,这个参数也必须是指向文件夹 directory_mode  yes/no no 这个参数只能用于拷贝文件夹时候,这

ansile(2)模块之service

ansible service模块 参数选项来自官网,如果有出入,以官网为主 参数 是否必须 默认 选项 说明 arguments no 命令行参数 enabled no yes no 设置服务是否开机启动 name yes 服务名称 pattern no 定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行 runlevel no default 服务运行级别 sleep no 设置start和sto

ansile(2)模块之script

ansible script模块用来为远端目标主机运行管理机(本地)的脚本 参数 是否必须 默认 选项 说明 creates no 当文件存在,这步不运行 free_form yes 运行参数 removes no 当文件不存在时,这步不允许 运行脚本示例 # cat ckl.sh  #!/bin/bash ps -ef | grep httpd | grep -v grep date echo "*******************" # ansible webserver -m 

ansile(2)模块之cron

ansible cron 模块就是计划任务,很简单 backup:操作之前先备份目标主机上的原计划任务 cron_file:如果指定该选项,则用该文件替换远程主机上的cron.d目录下的用户的任务计划 day: 指定日(1-31,*,*/1,--) hour:指定小时(0-23,*,*/2,--) minute:指定分钟(0-59,*,*/3,--) month:指定月(1-12,*,*/4,--) weekday:指定周(0-7,*,--) job:要执行的任务,依赖于state=presen

ansile(2)模块之group

ansible group模块与系统命令使用相似 参数 是否必要 默认 选项 说明 gid no 选择需要设置的GID name yes 需要配置的组名 state no present present absent 添加或删除组 system no no yes no yes时添加的是系统组 添加组 # ansible dbserver -m group -a "name=zld state=present" 172.16.110.49 | SUCCESS => {     &

ansile(2)模块之file

ansbile file模块大体功能同copy模块,下面看看参数 参数 选项 必须 说明 follow yes/no no 如果原来的文件是link,拷贝后依旧是link follow yes/no no 强制文件操作 recurse yes/no no 递归设置目录的属性 group yes/no no 设定一个群组拥有拷贝到远程节点的文件权限 mode  yes/no no 等同于chmod,参数可以为"u+rwx or u=rw,g=r,o=r" owner yes/no no

ansile(2)模块之yum

ansible yum 使用yum软件包管理器安装,升级,删除和列出软件包和组. 参数来自官网,如有出入,以官网为准 参数 是否必须 默认 选项 说明 conf_file no 用于事务的远程yum配置文件. disable_gpg_check no yes no 是否禁用GPG检查正在安装的软件包的签名.只有当状态存在或最新时才有效. disablerepo no 复制存储库以禁用安装/更新操作.这些回购将不会持续到事务之外.指定多个回购时,请用","分隔它们. enablerepo