2017-09-28 1 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 : 그런 다음 인형을 설치 스크립트를 사용하여 AWS (푸른, DO, GCE 등)을 사용하지 않을 경우 다른 클라우드 제공 업체를위한 밖으로 aws_instance

resource "aws_instance" "instance_name" { 
    ... 

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

스왑 경우/실행 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과 함께 사용할 모듈을 전송할 때 번거롭기 때문에이 방법이 더 좋습니다.

관련 문제