#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.