2017-09-28 3 views

Répondre

0

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" 
    } 
} 
2

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.