Terraform为提供者(在我的例子中是chef)提供了连接的配置,我使用实例默认帐户设置了连接,而出于安全原因,我从sudoer中删除了默认帐户。
那么chef有一个安全行为,它会在配置后删除验证器密钥,这样的操作需要sudo。由于从sudo中删除默认帐户,操作失败。
解决方案可以是
- 为terraform中的提供者连接提供多个用户,
- 禁用chef验证器键移除行为
目前我能想出的一个愚蠢的解决方案是:
在chef provision之前,我做了一个pre-provision,创建一个授权帐户,然后使用这个帐户进行chef provision。不太优雅,但我会先试一下。