Je souhaite créer une instance AWS à l'aide de Terraform et y exécuter un module Puppet. J'ai essayé beaucoup de modules de github et rien ne semble fonctionner. Quelqu'un at-il essayé cela?Utilisation de marionnettes avec terraform
Répondre
Pour un cas d'utilisation similaire mais en utilisant ansible au lieu de marionnette, nous utilisons null_resource avec local-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"
}
}
La façon dont vous avez essentiellement à faire est d'installer localement avec un pantin remote-exec
approvisionneur puis soit faire une exécution apply
ou agent
. Tout d'abord, la configuration de votre instance resource
comme ceci:
resource "aws_instance" "instance_name" {
...
provisioner "remote-exec" {
script = "puppet.sh"
}
}
Swap sur aws_instance
pour un fournisseur de nuage différent si/quand ne pas utiliser AWS (Azure, DO, GCE, etc.) Ensuite, utilisez le script pour installer marionnettes, execute apply
ou agent
, puis désinstaller Puppet (si vous ne parvenez pas à gérer l'instance par la suite, ce qui ne serait probablement pas le cas dans le cloud).
#!/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
Il existe quelques variations à ce sujet. Par exemple, vous pouvez curl
contre votre Puppet Master ou vous abonner au référentiel de Puppetlabs pour installer Puppet AIO. Vous pouvez également faire puppet agent -t
par la suite au lieu d'un puppet apply
. Cela peut être préférable car le transfert de vos modules pour être utilisé avec apply
peut être onéreux.