2017-09-28 7 views
0

Terraformを使用してAWSインスタンスを作成し、その内部にPuppetモジュールを実行したいとします。私はgithubから多くのモジュールを試したが、何も動作していないようだ。誰もこれを試しましたか?terraformで人形を使用する

答えて

0

同様の使用例ですが、人形の代わりに安全なものを使用するために、私たちはlocal-execと共にnull_resourceを使用します。

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

あなたは基本的にこれをしなければならない方法はremote-execプロビジョニングでローカルに人形をインストールしてから、いずれかapplyまたはagent実行を行います。まず、このようなセットアップインスタンスresource

resource "aws_instance" "instance_name" { 
    ... 

    provisioner "remote-exec" { 
    script = "puppet.sh" 
    } 
} 

異なるクラウドプロバイダのaws_instanceアウトスワップAWS(アズール、DO、GCE、など)を使用していない/場合は、その後、実行し、人形をインストールするためのスクリプトを使用しますapplyまたはagentを削除し、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 

これにはいくつかのバリエーションがあります。たとえば、Puppet Masterに対してcurlを入力するか、Puppetlabsパッケージリポジトリに登録してPuppet AIOをインストールします。後でpuppet applyの代わりにpuppet agent -tを実行することもできます。これは、applyで使用するモジュールを転送することが面倒になる可能性があるため、好ましい可能性があります。

関連する問題