План Terraform человека удобочитаемым выходом в автоматизации - PullRequest
0 голосов
/ 08 ноября 2019

Я настроил автоматизацию через github / jenkins, чтобы опубликовать вывод плана terraform для репо через jenkins как комментарий к запросу на извлечение в github. Вся оркестровка прекрасно работает, за исключением того факта, что вывод плана terraform не настолько удобен для восприятия человеком и не предоставляет вам такой автоматизации, какой она выглядит, когда вы запускаете ее в терминале. Я использовал несколько способов, таких как использование terraform show для файла плана, затем захватил его в пользовательский файл и опубликовал как комментарий в GitHub PR. В каждом случае выходные данные содержат несколько двоичных символов.

Я даже использовал terraform-plan-parser https://github.com/lifeomic/terraform-plan-parser, но это не работает для terraform 0.12 и относится к следующей проблеме: - https://github.com/lifeomic/terraform-plan-parser/issues/31

Каков наилучший способ получения выходных данных любого плана терраформ в автоматизации, чтобы на него можно было ссылаться, однако это необходимо проверить перед выполнением заявки. На мой взгляд, он прекрасно работает только в терминале.

Любая помощь или предложения, как всегда, будут высоко оценены.

1 Ответ

2 голосов
/ 08 ноября 2019

По умолчанию Terraform использует escape-последовательности терминала для выделения частей вывода с помощью простого форматирования, такого как цвета или жирный шрифт.

Для воспроизведения этого результата точно в контекстеGitHub потребуется преобразовать escape-последовательности терминала в форму, которую GitHub может отображать.

К сожалению, комментарии GitHub написаны в GitHub-ароматизированной Markdown, которая не поддерживает прямой способ создания цветного текста, подобного Terraform. планирую выходной в то время когда я это напишу. Поэтому я не знаю простого способа воспроизвести форматирование текста из выходных данных плана Terraform в комментарии GitHub.

Если вы запустите terraform plan с опцией -no-color, тогда он пропустит escape-последовательности терминала и выдаствывод в виде простого текста, который можно включить в предварительно отформатированный текстовый блок в комментарии Markdown. Однако этот вывод не будет включать форматирование текста, которое вы обычно видите в своем терминале.


Если вы хотите написать собственный код форматирования, чтобы представить план Terraform в другом формате для ваших комментариев GitHubВы можете получить представление плана в формате JSON, сохранив план на диске и затем прочитав его с помощью terraform show:

terraform plan -out=tfplan
terraform show -json tfplan

. В результате будет представление плана в формате JSON , котороеВы можете анализировать в программе вашего собственного дизайна и генерировать любой желаемый формат результата. Это, однако, будет значительно больше работы, чем просто интерпретация escape-последовательностей терминала из обычного вывода Terraform, поскольку это JSON-представление данных, которые Terraform использует для создания рендеринга плана, а не самого рендеринга плана.

...