17.2. 使用 nbde_client RHEL 系统角色设置带有 DHCP 的 Clevis 客户端
nbde_client
系统角色使您能够以自动化的方式部署多个Clevis客户端。
此角色支持将 LUKS 加密卷绑定到一个或多个网络绑定的(NBDE)服务器 - Tang 服务器。您可以使用密码短语保留现有的卷加密,或者将其删除。删除密码短语后,您只能使用 NBDE 解锁卷。当卷最初是使用在置备系统后会删除的临时密钥或密码进行加密时,这非常有用,
如果您同时提供密语和密钥文件,角色将使用您首先提供的那一个。如果找不到任何有效密语或密码,它将尝试从现有的绑定中检索密码短语。
基于策略的解密(PBD)将绑定定义为设备到插槽的映射。这意味着对同一个设备你可以有多个绑定。默认插槽是插槽 1。
nbde_client
系统角色只支持 Tang 绑定。因此,您无法将其用于 TPM2 绑定。
先决条件
- 您已准备好控制节点和受管节点。
- 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
-
您用于连接到受管节点的帐户对它们具有
sudo
权限。 - 已使用 LUKS 加密的卷。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个示例 playbook 配置 Clevis 客户端,以便在两个 Tang 服务器中至少有一个可用时自动解锁两个 LUKS 加密的卷。
示例 playbook 中指定的设置包括如下:
state: present
-
state
的值表示运行 playbook 后的配置。使用present
值来创建新绑定或更新现有绑定。与clevis luks bind
命令不同,您可以使用state: present
来覆盖其设备插槽中的现有绑定。absent
的值会删除指定的绑定。 nbde_client_early_boot: true
nbde_client
角色确保 Tang pin 的网络默认在早期引导过程中可用。如果您需要禁用此功能,请在 playbook 中添加nbde_client_early_boot: false
变量。有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.nbde_client/README.md
文件。
验证 playbook 语法:
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在 NBDE 客户端上,检查应被您的 Tang 服务器自动解锁的加密卷是否在其 LUKS pin 中包含相应的信息:
ansible managed-node-01.example.com -m command -a 'clevis luks list -d /dev/rhel/root'
# ansible managed-node-01.example.com -m command -a 'clevis luks list -d /dev/rhel/root' 1: tang '{"url":"<http://server1.example.com/>"}' 2: tang '{"url":"<http://server2.example.com/>"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果不使用
nbde_client_early_boot: false
变量,请验证绑定是否可用于早期引导,例如:ansible managed-node-01.example.com -m command -a 'lsinitrd | grep clevis-luks'
# ansible managed-node-01.example.com -m command -a 'lsinitrd | grep clevis-luks' lrwxrwxrwx 1 root root 48 Jan 4 02:56 etc/systemd/system/cryptsetup.target.wants/clevis-luks-askpass.path -> /usr/lib/systemd/system/clevis-luks-askpass.path …
Copy to Clipboard Copied! Toggle word wrap Toggle overflow