获取文件的校验和并在 ansible 中使用该校验和更新另一个文件?

获取文件的校验和并在 ansible 中使用该校验和更新另一个文件?

我在特定目录中有一个文件test_proc.init。并且在同一目录中还有一个文件,desc.cmd其内容如下:

set_poc 204 6
send_data_file goldy_proc.init 4e8ee8946f7a89d2eb501a752c5e3ee6ea266e5b
set_poc 204 7
send_data_file goldy_proc.init 4e8ee8946f7a89d2eb501a752c5e3ee6ea266e5b
set_poc 204 8
send_data_file goldy_proc.init 4e8ee8946f7a89d2eb501a752c5e3ee6ea266e5b
set_poc 204 9
send_data_file goldy_proc.init 4e8ee8946f7a89d2eb501a752c5e3ee6ea266e5b

以下是我想要做的事情:

  • 我想要获取文件sha1sumtest_proc.initsha1sum test_proc.init
  • 无论该命令的输出是什么sha1sum,我都想复制该校验和并更新desc.cmd文件。

因此,如果新的校验和是e32313118e53b60140d2024dfa7578c3fd89b346我的desc.cmd文件将会是这样的:

set_poc 204 6
send_data_file goldy_proc.init e32313118e53b60140d2024dfa7578c3fd89b346
set_poc 204 7
send_data_file goldy_proc.init e32313118e53b60140d2024dfa7578c3fd89b346
set_poc 204 8
send_data_file goldy_proc.init e32313118e53b60140d2024dfa7578c3fd89b346
set_poc 204 9
send_data_file goldy_proc.init e32313118e53b60140d2024dfa7578c3fd89b346

这可以在 ansible 中完成吗?我不确定如何粘贴校验和并更新文件。

- name: Get sha1sum of file
  stat:
    path: /data/test_proc.init
    checksum_algorithm: sha1sum
    get_checksum: yes
  register: shell_stat

答案1

该命令的输出stat应该已经包含该文件的 sha:

- name: Get sha1sum of file
  stat:
    path: /data/test_proc.init
    checksum_algorithm: sha1sum
    get_checksum: yes
  register: sha

然后它可以与类似模块一起使用lineinfile,或者像这样blockinfile更新文件:desc.cmd

- name: insert sha
  lineinfile:
    path: /data/desc.cmd
    line: "{{ sha.stat.checksum }}"

相关内容