Vla*_*șan 9 md5 integrity md5-file ansible ansible-playbook
我在服务器上有几个文件需要从a下载ansible playbook,但因为连接很有可能中断我想在下载后检查它们的完整性.
我正在考虑两种方法:
file.extension和file.extension.md5.第一种方法引入了维护md5s的开销.因此,每当有人添加新文件时,他需要确保将md5添加到正确的位置.
但作为一个优势,有一个解决方案,使用内置的get_url行动检查与结合checksum=md5.例如:
action: get_url: url=http://example.com/path/file.conf dest=/etc/foo.conf checksum=md5:66dffb5228a211e61d6d7ef4a86f5758
Run Code Online (Sandbox Code Playgroud)
在第二个方法是更优雅和缩小的责任.当有人在服务器上添加新文件时,他会确保添加该文件.md5,甚至不需要使用ansible playbooks.
有没有办法使用该checksum方法匹配文件中的md5?
bar*_*999 19
如果您希望使用在服务器上的文件中存储校验和的方法,您肯定可以使用get_url校验和arg来验证它.
下载.md5文件并将其读入var:
- set_fact:
md5_value: "{{ lookup('file', '/etc/myfile.md5') }}"
Run Code Online (Sandbox Code Playgroud)
然后在下载文件时,将md5_value的内容传递给get_url:
- get_url:
url: http://example.com
dest: /my/dest/file
checksum: "md5:{{ md5_value }}"
force: true
Run Code Online (Sandbox Code Playgroud)
请注意,指定文件的路径至关重要dest; 如果将其设置为目录(并且文件名为url),则行为会发生显着变化.
另请注意,您可能需要force:true.这将导致每次运行时都下载新文件.仅在下载文件时触发校验和.如果您的主机上已存在该文件,则无需验证现有文件的总和,这可能是不可取的.
为了避免每次你可以使用stat来查看文件是否已经存在,请查看其总和是什么,并有条件地设置force param.
- stat:
path: /my/dest/file
register: existing_file
- set_fact:
force_new_download: "{{ existing_file.stat.md5 != md5_value }}"
when: existing_file.stat.exists
- get_url:
url: http://example.com
dest: /my/dest/file
checksum: "md5:{{ md5_value }}"
force: "{{ force_new_download | default ('false') }}"
Run Code Online (Sandbox Code Playgroud)
此外,如果您从某种Web服务器中提取总和/工件,您实际上可以从URL获得总和的值,而无需实际将文件下载到主机.以下是使用Nexus服务器的示例,该服务器将托管工件及其总和:
- set_fact:
md5_value: "{{ item }}"
with_url: http://my_nexus_server.com:8081/nexus/service/local/artifact/maven/content?g=log4j&a=log4j&v=1.2.9&r=central&e=jar.md5
Run Code Online (Sandbox Code Playgroud)
这可以用来代替使用get_url下载md5文件,然后使用lookup来读取它.
| 归档时间: |
|
| 查看次数: |
14347 次 |
| 最近记录: |