Linux 将木偶与地形结合使用

Linux 将木偶与地形结合使用,linux,puppet,devops,terraform,Linux,Puppet,Devops,Terraform,我想使用Terraform创建一个AWS实例,并在其中运行一个Puppet模块。我从github尝试了许多模块,但似乎没有任何效果。有人尝试过这个吗?对于类似的用例,但是使用ansible而不是puppet,我们使用null\u资源和本地exec resource "null_resource" "lvm_housekeeping" { triggers { ebs_volume_ids = "${join(",", aws_volume_attachment.instance_eb

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

对于类似的用例,但是使用ansible而不是puppet,我们使用null\u资源和本地exec

resource "null_resource" "lvm_housekeeping" {
  triggers {
    ebs_volume_ids = "${join(",", aws_volume_attachment.instance_ebs_attachment.*.volume_id)}"
  }

  provisioner "local-exec" {
    command = "ANSIBLE_CONFIG=$HOME/'${var.ansible_repo_location}'/ansible.cfg ansible-playbook -u ec2-user -e target=all -i '${join(",",aws_instance.my_instance.*.private_ip)}, ' $HOME/'${var.ansible_repo_location}'/main.yml"

    on_failure = "continue"
  }
}

对于类似的用例,但使用ansible而不是puppet,我们使用null_资源和本地exec

resource "null_resource" "lvm_housekeeping" {
  triggers {
    ebs_volume_ids = "${join(",", aws_volume_attachment.instance_ebs_attachment.*.volume_id)}"
  }

  provisioner "local-exec" {
    command = "ANSIBLE_CONFIG=$HOME/'${var.ansible_repo_location}'/ansible.cfg ansible-playbook -u ec2-user -e target=all -i '${join(",",aws_instance.my_instance.*.private_ip)}, ' $HOME/'${var.ansible_repo_location}'/main.yml"

    on_failure = "continue"
  }
}

基本上,您必须使用
远程执行
供应器在本地安装puppet,然后执行
应用
代理
执行。首先,按如下方式设置实例
资源

resource "aws_instance" "instance_name" {
  ...

  provisioner "remote-exec" {
    script = "puppet.sh"
  }
}
如果/当不使用aws(Azure、DO、GCE等)时,将
aws_实例
换成另一个云提供商,然后使用脚本安装Puppet,执行
apply
代理
,然后卸载Puppet(如果您之后没有积极管理该实例,您可能不会在云中)


这方面有一些变化。例如,您可以
curl
针对您的Puppet主机,或者订阅Puppetlabs包存储库来安装Puppet AIO。您也可以在之后执行
puppet代理-t
,而不是执行
puppet应用。这可能更可取,因为将您的模块转移到
apply
上使用可能会很繁重。

基本上必须使用
remote exec
provisioner在本地安装puppet,然后执行
apply
agent
执行。首先,按如下方式设置实例
资源

resource "aws_instance" "instance_name" {
  ...

  provisioner "remote-exec" {
    script = "puppet.sh"
  }
}
如果/当不使用aws(Azure、DO、GCE等)时,将
aws_实例
换成另一个云提供商,然后使用脚本安装Puppet,执行
apply
代理
,然后卸载Puppet(如果您之后没有积极管理该实例,您可能不会在云中)

这方面有一些变化。例如,您可以
curl
针对您的Puppet主机,或者订阅Puppetlabs包存储库来安装Puppet AIO。您也可以在之后执行
puppet代理-t
,而不是执行
puppet应用。这可能更可取,因为将模块转移到
apply
上使用可能会非常繁重