将 puppet 与 terraform 结合使用

Nit*_*aji 2 linux puppet terraform devops

我想使用 Terraform 创建一个 AWS 实例并在其中运行 Puppet 模块。我已经尝试了 github 上的许多模块,但似乎没有任何效果。有人试过这个吗?

Mat*_*ard 5

您基本上必须执行此操作的方法是使用remote-exec配置程序在本地安装 puppet,然后执行applyagent执行。resource首先,像这样设置您的实例:

resource "aws_instance" "instance_name" {
  ...

  provisioner "remote-exec" {
    script = "puppet.sh"
  }
}
Run Code Online (Sandbox Code Playgroud)

如果/不使用 AWS(Azure、DO、GCE 等),则更换aws_instance为其他云提供商。然后,使用脚本安装 Puppet,执行applyagent,然后卸载 Puppet(如果您之后不主动管理实例) ,您可能不会在云中)。

#!/bin/sh
# debian family example; swap out 'apt' and package names where necessary
# prep puppet
sudo apt-get update && sudo apt-get install ruby -y
sudo gem install --no-document puppet
# apply puppet
sudo puppet apply manifest.pp
# remove puppet
sudo gem uninstall -aIx
sudo apt-get remove ruby -y
sudo apt-get autoremove -y
Run Code Online (Sandbox Code Playgroud)

这有一些变化。例如,您可以curl针对 Puppet Master 或订阅 Puppetlabs 软件包存储库来安装 Puppet AIO。您也可以puppet agent -t稍后执行而不是puppet apply. 这可能是更好的选择,因为将模块转移到一起使用apply可能会很麻烦。