2017-04-06 10 views
5

एक टीम ने पहले से ही एक क्लाउडॉर्मेशन टेम्पलेट .yml फ़ाइल के रूप में लिखा है जो संसाधनों के ढेर का प्रावधान करता है।क्या टेराफॉर्म में क्लाउडफॉर्मेशन फ़ाइल निष्पादित करना संभव है?

क्या यह फ़ाइल टेराफॉर्म के भीतर से निष्पादित करके इस फ़ाइल का लाभ उठाना संभव है? या क्या इसे फिर से लिखा जाना है?

मैं टेराफॉर्म के लिए नया हूं और बस शुरू कर रहा हूं।

अगर मैं एडब्ल्यूएस CLI उपयोग कर रहे थे मैं इस तरह के आदेश पर अमल होता है,

एडब्ल्यूएस cloudformation बनाने-ढेर my-new-ढेर --template शरीर फ़ाइल --stack से नामकरण: // mystack .yml --parameters ParameterKey = AmiId

मैं अपने टेराफॉर्म कॉन्फ़िगरेशन में इस कमांड के समतुल्य को शामिल करना चाहता हूं।

यदि यह संभव है और आप मुझे एक उदाहरण के लिए इंगित कर सकते हैं, तो मैं वास्तव में इसकी सराहना करता हूं।

धन्यवाद!

+0

मुझे डर है कि आपको इसे फिर से लिखना है, मुझे नहीं लगता कि आप जो पूछते हैं वह संभव है। – Bram

+1

https://www.terraform.io/docs/providers/aws/r/cloudformation_stack.html#template_url –

+0

यदि आपको yml फ़ाइल पढ़ने में परेशानी हो रही है, तो टेराफॉर्म के अपने संस्करण को अपग्रेड करने का प्रयास करें। मैंने आज देखा कि यह 7.7 में काम नहीं करता है लेकिन यह पुष्टि कर सकता है कि यह काम करता है। 9.3 – user1521567

उत्तर

9

The aws_cloudformation_stack resource terraform से एक पुल CloudFormation में है, जो CloudFormation से माइग्रेशन terraform करने के लिए एक सहायता के रूप में या तो किया जा सकता है के रूप में कार्य करता है (यदि आप जाहिरा तौर पर यहाँ कर रहे हैं के रूप में) या में से कुछ का उपयोग करने के लिए CloudFormation के विशेषताएं जो टेराफॉर्म वर्तमान में संभाल नहीं पाती हैं, जैसे कि एएसजी में नए उदाहरणों की तैनाती को रोल करना।

resource "aws_cloudformation_stack" "example" { 
    name = "example" 
    parameters = { 
    VpcId = "${var.vpc_id}" 
    } 
    template_body = "${file("${path.module}/example.yml")}" 
} 

parameters तर्क Cloudformation ढेर में terraform से डेटा गुजर अनुमति देता है। यह भी outputs विशेषता का उपयोग करना संभव है परिणाम terraform में कहीं CloudFormation ढेर के का उपयोग करना, एक दो तरह से एकीकरण के लिए:

resource "aws_route_53_record" "example" { 
    name = "service.example.com" 
    type = "CNAME" 
    ttl = 300 

    records = ["${aws_cloudformation_stack.example.outputs["ElbHostname"]}"] 
} 

आप एक पूर्व मौजूदा CloudFormation ढेर है, तो कि terraform द्वारा प्रबंधित नहीं है, तो आप अभी भी the aws_cloudformation_stackdata source का उपयोग कर अपने आउटपुट का उपयोग कर सकते:

data "aws_cloudformation_stack" "example" { 
    name = "example" 
} 

resource "aws_route_53_record" "example" { 
    name = "service.example.com" 
    type = "CNAME" 
    ttl = 300 

    records = ["${data.aws_cloudformation_stack.example.outputs["ElbHostname"]}"] 
} 

ये सुविधाएं आपको विभिन्न संयोजनों में एक सिस्टम में क्लाउडफॉर्मेशन और टेराफॉर्म को प्रभावी रूप से मिश्रित करने की अनुमति देती हैं, चाहे यह एक अस्थायी उपाय हो, जहां हाइब्रिड समाधान वांछित स्थितियों में माइग्रेटिंग या स्थायी रूप से हो।

1

मैं पुष्टि कर सकता हूं कि टेम्पलेट_बॉडी एक क्लाउडॉर्मेशन टेम्पलेट कार्यों के संदर्भ में फ़ाइल के साथ है। मुझे लगता है कि template_url भी महान काम करेगा। उदाहरण

resource "aws_cloudformation_stack" "my-new-stack" { 
    name = "my-new-stack" 
    parameters { 
    Name="my-new-stack" 
    Port="22" 
    VpcId = "${var.vpc_id}" 
    } 
    template_body = "${file("${path.module}/mystack.yml")}" 
} 
संबंधित मुद्दे