每一台 PC 都使用 Puppet 来建立 image 做初始化的安装,在维护方面会在 PC 使用 Puppet Standalone 的方法 (不需要 Puppet Master) 来定时确认设定没有被更改,所以即使被修改了,也会在 Puppet 更新时恢复设定。
而不使用 Puppet Master 架构的原因是不用建立庞大的 Puppet infra 并且单机就可以执行,不需要网络,第二个原因是 BeyondCorp 的 Policy。
Google 针对 OS 在 image 有使用不同的工具来安装套件:
对于使用者,Google 还是尽可能的让使用者可以选择自己想要装的软件,但是过度自由也会有安全上的疑虑,所以 Google 选择在 PC 上安装 Puppet,确保 Device 有被加密并且更新到最新版本。
Google 强制加密 Device
Google 一样在一开始会使用弹窗的方式一直跳出来告诉使用者要升级 XDD … 但是总是有赖皮鬼,所以当时间过了非常久后还是会被强制更新并 reboot。
在内部还是会有一些禁用的软件清单 (santa),或是恶意病毒的软件侦测 (Carbon Black),比较有趣的是当被 Carbon Black 误判的时候还可以 “投票” 的方式来加入软件白名单。
除了 Google 以外,使用同样一套系统的还有 indeed,但是这篇提到的许多工具,有一些还在 pre-production,甚至有些还未开发出来,但多数已经 Open Source 在 Google 的 Github 上,当规模大到一定程度,完全的自动化更是一大挑战。