Ansible检查文件是否由ansible-vault加密

3

我需要使用 ansible-vault 对文件进行加密。如果文件已经被 ansible vault 加密过,那么我希望可以跳过加密步骤。我正在尝试在我的 Ansible playbook 中使用以下任务:

- local_action: command
    ansible-vault encrypt path/to/file
  when: <when file is not already encrypted by ansible-vault>

有没有一种逻辑可以用在条件语句中,检查一个文件是否已经被 ansible-vault 加密过了?

1个回答

2

有很多方法可以做到这一点,这与Ansible和Ansible Vault本身几乎没有什么关系。这是其中之一:

- local_action: shell
    head -1 {{ file }} | grep -v -q \$ANSIBLE_VAULT && ansible-vault encrypt {{ file }}

您还需要 --vault-password-file,否则 Ansible 将停止处理并等待提示。

谢谢!是的,我已经按照你说的设置了保险库密码文件。在 grep -v -q \$ANSIBLE_VAULT 中,你只是检查文件是否以文本 $ANSIBLE_VAULT 开头吗? - edesz
1
检查标准输入中的行是否不包含 $ANSIBLE_VAULT 字符串。 - techraf
哦,是的,只有在它不存在时才加密。我发现这比我想象中简单....我以为ansible-vault有一些内置功能可以实现这个。谢谢! - edesz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接