Ansible 是否可以使用类似于散列字符串的查找方式对文件进行散列(例如,{{ 'test1' | hash('sha1') }})?

发布于 2025-01-11 11:17:53 字数 1238 浏览 0 评论 0原文

Ansible 是否可以使用类似于散列字符串的查找方式对文件进行散列(例如,{{ 'test1' | hash('sha1') }})?

请参阅 https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#hashing-and-encrypting-strings-and-passwords

Linux 命令行 (WORKS)

sha1sum /etc/default/grub

返回哈希值:f2de8d3dfe08c34615145f212e5a32facf575cb3

Ansible stat 模块 (WORKS)

- name: checksum | /etc/default/grub (stat)
  delegate_to: localhost
  stat:
    path: "/etc/default/grub"
    checksum_algorithm: sha1
  register: local_grub_orig_sha1

返回哈希值: f2de8d3dfe08c34615145f212e5a32facf575cb3

使用哈希过滤器进行 Ansible 查找(失败)

- name: checksum | /etc/default/grub (lookup)
  delegate_to: localhost
  set_fact:
    local_grub_sha1: "{{ lookup('file', '/etc/default/grub') | hash('sha1') }}"

返回哈希:834f3f662f6a19cf273d87a00d4af2645ab18dcd

注意:此实现仅限于本地主机。请参阅下面 @Vladimir Botka 的回答,了解使用 stat 的一般解决方案。

Can Ansible hash files using lookup similar to how it can hash strings (e.g., {{ 'test1' | hash('sha1') }})?

See, https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#hashing-and-encrypting-strings-and-passwords

Linux command line (WORKS)

sha1sum /etc/default/grub

returns hash: f2de8d3dfe08c34615145f212e5a32facf575cb3

Ansible stat module (WORKS)

- name: checksum | /etc/default/grub (stat)
  delegate_to: localhost
  stat:
    path: "/etc/default/grub"
    checksum_algorithm: sha1
  register: local_grub_orig_sha1

returns hash: f2de8d3dfe08c34615145f212e5a32facf575cb3

Ansible lookup with hash filter (FAILS)

- name: checksum | /etc/default/grub (lookup)
  delegate_to: localhost
  set_fact:
    local_grub_sha1: "{{ lookup('file', '/etc/default/grub') | hash('sha1') }}"

returns hash: 834f3f662f6a19cf273d87a00d4af2645ab18dcd

NOTE: This implementation is limited to localhost. See @Vladimir Botka's answer below for a general solution using stat.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

记忆消瘦 2025-01-18 11:17:53

使用 统计。例如,对其进行测试

    - stat:
        path: /etc/passwd
        checksum_algorithm: sha256
      register: result
    - debug:
        var: result.stat.checksum

    - command: sha256sum /etc/passwd
      register: result
    - debug:
        var: result.stdout

您应该会从 commandstat 中看到相同的结果。

Use stat. Test it, for example

    - stat:
        path: /etc/passwd
        checksum_algorithm: sha256
      register: result
    - debug:
        var: result.stat.checksum

    - command: sha256sum /etc/passwd
      register: result
    - debug:
        var: result.stdout

You should see the same results from the command and stat.

活雷疯 2025-01-18 11:17:53

通过使用 lookup('template', ...) 而不是 lookup('file', ...) 解决了该问题。但是,我不清楚是什么导致了行为差异。

- name: set_fact checksum | /etc/default/grub
  set_fact:
    grub_template_result_sha1: "{{ lookup('template', '/etc/default/grub') | hash('sha1') }}"

返回哈希:f2de8d3dfe08c34615145f212e5a32facf575cb3

The issue was solved by using lookup('template', ...) rather than lookup('file', ...). However, it is not clear to me what is causing the difference in behavior.

- name: set_fact checksum | /etc/default/grub
  set_fact:
    grub_template_result_sha1: "{{ lookup('template', '/etc/default/grub') | hash('sha1') }}"

returns hash: f2de8d3dfe08c34615145f212e5a32facf575cb3

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文