首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ansible get将文件复制到多个linux服务器时,参数校验和失败

使用ansible get将文件复制到多个linux服务器时,参数校验和失败
EN

Stack Overflow用户
提问于 2021-02-07 06:47:53
回答 1查看 250关注 0票数 0

我正在尝试使用Ansible将文件复制到Linux服务器

将Linux服务器的IP、用户名、密码放入/etc/ansible/hosts

代码语言:javascript
运行
复制
[servers]
server1 ansible_host=10.1.12.525 ansible_user=sun ansible_ssh_pass=lB7oG
server2 ansible_host=10.1.12.55 ansible_connection=ssh ansible_user=sun ansible_ssh_pass=l

IP pinging成功。

带有校验和参数的服务器复制命令成功,但服务器中不存在文件。

代码语言:javascript
运行
复制
root@nithin-virtual-machine:/# ansible servers -m copy -a "src=./copy_module.txt dest=/tmp/"

server1 | SUCCESS => {
    "changed": true,

当添加参数checksum时,会显示以下错误:

代码语言:javascript
运行
复制
root@nithin-virtual-machine:/# ansible servers -m copy -a "checksum=SHA1 src=./copy_module22.txt dest=/tmp/"

server1 | FAILED! => {
    "changed": false,
    "checksum": "64277314ebb19680f67ef0ac4cede5c3db883b11",
    "expected_checksum": "SHA1",
    "msg": "Copied file does not match the expected checksum. Transfer failed."
}

试了很多,还是找不到解决方案。

EN

回答 1

Stack Overflow用户

发布于 2021-02-07 15:15:59

copy modulechecksum参数采用文件的实际SHA1校验和,而不是校验和算法SHA1。注意,这个错误是非常准确的,checksum是一个实际的SHA1校验和,而expected_checksumSHA1,所以它不匹配。

同样,如果您跳过此参数,Ansible仍将使用来自源文件的自己的校验和。

如果没有提供,ansible将使用本地计算的src文件的校验和。

要复制带checksum参数的文件,正确的方法是:

  1. 记下文件的校验和,例如r.txt

$ sha1sum r.txt 663eca7fa8a326aab7299b2c11f3d97bbb34637b r.txt

  1. 通过指定上述校验和,使用Ansible copy模块复制文件:

$ ansible localhost -m copy -a "src=r.txt dest=/tmp主机

因此,您需要运行的命令是(使用错误消息中的):

代码语言:javascript
运行
复制
ansible servers -m copy -a "src=./copy_module22.txt dest=/tmp/ checksum=64277314ebb19680f67ef0ac4cede5c3db883b11"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66082770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档