我正在尝试使用Ansible将文件复制到Linux服务器
将Linux服务器的IP、用户名、密码放入/etc/ansible/hosts
[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=lIP pinging成功。
带有校验和参数的服务器复制命令成功,但服务器中不存在文件。
root@nithin-virtual-machine:/# ansible servers -m copy -a "src=./copy_module.txt dest=/tmp/"
server1 | SUCCESS => {
"changed": true,当添加参数checksum时,会显示以下错误:
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."
}试了很多,还是找不到解决方案。
发布于 2021-02-07 15:15:59
copy module的checksum参数采用文件的实际SHA1校验和,而不是校验和算法SHA1。注意,这个错误是非常准确的,checksum是一个实际的SHA1校验和,而expected_checksum是SHA1,所以它不匹配。
同样,如果您跳过此参数,Ansible仍将使用来自源文件的自己的校验和。
如果没有提供,ansible将使用本地计算的src文件的校验和。
要复制带checksum参数的文件,正确的方法是:
r.txt:$ sha1sum r.txt 663eca7fa8a326aab7299b2c11f3d97bbb34637b r.txt
copy模块复制文件:$ ansible localhost -m copy -a "src=r.txt dest=/tmp主机
因此,您需要运行的命令是(使用错误消息中的):
ansible servers -m copy -a "src=./copy_module22.txt dest=/tmp/ checksum=64277314ebb19680f67ef0ac4cede5c3db883b11"https://stackoverflow.com/questions/66082770
复制相似问题