Linux 将木偶与地形结合使用
我想使用Terraform创建一个AWS实例,并在其中运行一个Puppet模块。我从github尝试了许多模块,但似乎没有任何效果。有人尝试过这个吗?对于类似的用例,但是使用ansible而不是puppet,我们使用null\u资源和本地execLinux 将木偶与地形结合使用,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
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
上使用可能会非常繁重