Как преобразовать шаблон CloudFormation в код terraform

#terraform #amazon-cloudformation

#terraform #aws-cloudformation

Вопрос:

У меня есть шаблон Cloudformation примерно так

 Resources:

  WafValidHostsCondition:
    Type: AWS::WAF::ByteMatchSet
    Properties:
      Name: !Sub ${AccountCode}-${RegionCode}-${Application}-waf-validhosts
      ByteMatchTuples:
        - FieldToMatch:
            Type: HEADER
            Data: host
          TargetString: !Ref PublicDns
          TextTransformation: NONE
          PositionalConstraint: EXACTLY

  WafValidHostsRule:
    Type: AWS::WAF::Rule
    Properties:
      Name: !Sub ${AccountCode}-${RegionCode}-${Application}-waf-validhosts-rule
      MetricName: WafValidHostsRule
      Predicates:
        - DataId: !Ref WafValidHostsCondition
          Negated: true
          Type: ByteMatch

  WebAcl:
    Type: AWS::WAF::WebACL
    Properties:
      Name: !Sub ${AccountCode}-${RegionCode}-${Application}-globalwebacl
      DefaultAction:
        Type: ALLOW
      MetricName: GlobalWebACL
      Rules:
        - Action:
            Type: BLOCK
          Priority: 1
          RuleId: !Ref WafValidHostsRule
  

И я хочу преобразовать его в код terraform.
Да, я могу сделать это вручную, но их много 🙂
Я не хочу использовать resource aws_cloudformation_stack , потому что мы переносим все материалы из cloudformation в terraform.
Также я нашел этот инструмент https://github.com/humanmade/cf-to-tf , но это работает, когда у меня есть существующий стек CloudFormation.
Есть ли какой-нибудь способ сделать это с помощью скрипта с помощью инструмента или другим способом?
Заранее спасибо

Комментарии:

1. Даже если вы что-то найдете, вам также нужно выяснить, как преобразовать состояние cloudformation в состояние Terraform, что может быть невозможно напрямую. Но я полагаю, что только преобразованный код все равно упростит использование функций импорта состояния Terraform infra-to-state.

2. Мне не нужен файл состояния, потому что я создам его из 0.

3. Также @T.H. это помогает импортировать в terraform некоторые функции, которые я могу экспортировать. Спасибо

Ответ №1:

Сегодня я публично опубликовал свой побочный проект cf2tf , который выполняет большую часть этой работы за вас.

https://github.com/DontShaveTheYak/cf2tf

Я пытался преобразовать ваш код, но это была ошибка

 ValueError: Fn::Ref - AccountCode is not a valid Resource or Parameter.
  

Ваш пример, очевидно, является лишь частью шаблона Cloudformation.