像gocryptfs这样的工具在与 systemd 结合使用时具有一些优势,因为可以轻松定义依赖关系、状态和权限。
由于它需要密码,它要么需要系统上的纯文本文件,要么需要使用systemd-ask-password
. 通常首选标准输入变体,因为纯文本文件中的密码短语有一些缺点。
虽然Ansible 有一个 systemd 模块,但它似乎无法直接插入此类参数。
因此,我很好奇在使用 Ansible 时,使用密码输入处理服务(重新)重启的首选方式是什么。
会做类似这个伪代码的事情
- name: Start GoCryptFs
systemd:
name: gocryptfs
state: started
daemon_reload: true
args:
stdin: "{{ gocryptfs_password }}"
配置gocryptfs以使用 option
-extpass CMD
。引用man gocryptfs例如,在远程主机上创建一个脚本,该脚本返回变量gocryptfs_password的值
也可以通过 Ansible 实现自动化
将密码放入控制器的文件中并加密
下面的剧本从文件中读取密码并为命令设置环境
给
如果您设法将gocryptfs配置为使用
-extpass /root/bin/gocryptfs-extpass.sh
下面的任务应该可以完成这项工作(未测试)
笔记
该方案应通过大部分安全要求:
适当设置gocryptfs_password的值。有很多选择。例如,使用密码存储。然后,使用community.general.passwordstore查找插件而不是ansible.builtin.file