Я только что сдал Terraform Associate (004) — что бы я хотел знать заранее
Честные заметки на следующий день: какие вопросы попались, куда уходит время, что я усиленно учил, а оказалось неважным, и чему уделил недостаточно внимания.
Вчера я сдал Terraform Associate 004 с первой попытки. Это не пост из серии «вот что нужно учить» — таких материалов полно, включая наш собственный. Это тот пост, который я хотел бы прочитать накануне вечером, пока всё ещё свежо в памяти.
Для контекста: я пишу Terraform на AWS около трёх лет, в основном инфраструктуру приложений — VPC, ECS, RDS, ALBs, ну и тому подобное — иногда с HCP Terraform, но чаще с S3 + DynamoDB. Экзамен 003 я сдавал давно и не очень внимательно, поэтому предполагал, что 004 будет быстрым повторением. В основном так и было, но с некоторыми нюансами.
Что я усиленно учил, но что оказалось не нужным
За два дня до экзамена я углубился в несколько тем, которые в итоге почти не встречались на тесте:
- Синтаксис Sentinel и OPA. Я убедил себя, что мне нужно распознавать правила Sentinel с первого взгляда. Был ровно один вопрос, касающийся policy-as-code, и он был концептуальным — «какая функция обеспечивает соблюдение организационных политик?» — на него можно было ответить, просто зная, что существует слово «Sentinel».
- Версии протокола плагина провайдера. Нулевая актуальность.
- Запоминание каждой подкоманды
terraform state. Экзамен спрашивает оstate list,state mvиstate rmв сценариях. Если вы понимаете, что делает каждая из них простыми словами, вам не нужно заучивать флаги. - Тарифные планы HCP Terraform. Не было на экзамене. Экзамен рассматривает HCP концептуально.
Если бы я мог вернуть время на подготовку, я бы потратил его на большее количество повторений for_each против count.
Что меня удивило
Несколько вещей, которых я не ожидал:
Новые темы 004 спрашиваются точно. Я ожидал расплывчатых вопросов типа «что делает блок moved?»; вместо этого я получил конкретные сценарии, например: «вы переименовали ресурс и хотите сохранить его состояние без прерывания работы — какое минимальное допустимое изменение?» с вариантами ответов, включающими как вызов state mv, так и блок moved. Нужно выбрать идиому, которая соответствует рабочему процессу, а не просто распознать, что существуют оба варианта.
Несколько вопросов по import блокам против terraform import. Я лениво предполагал, что они эквивалентны. Экзамен напомнил мне, что это не так — блок декларативен и интегрируется с plan; команда CLI императивна и немедленно вызывает побочные эффекты состояния. Два вопроса конкретно проверяли, знаю ли я, какой из них подходит для рабочего процесса CI/CD с возможностью проверки.
Вопросы по HCL плотнее, чем предполагают практические тесты. Многие практические экзамены дают аккуратный фрагмент из четырех строк. На реальном экзамене как минимум один раз мне попался блок из пятнадцати строк с dynamic, вложенным в resource, у которого свой for_each управлял внешним счетчиком, и меня попросили предсказать количество создаваемых ресурсов. Мне пришлось читать его дважды. Не стоит недооценивать когнитивную нагрузку от внимательного чтения HCL при ограничении в 60 секунд на вопрос.
Два вопроса по terraform test. Я почти пропустил этот раздел, потому что практические тесты едва упоминали его. Вопросы были концептуальными — что существует .tftest.hcl, что блоки run содержат утверждения, что вы можете имитировать провайдеров для модульных тестов. Просмотрите страницу документации; этого достаточно.
Управление временем чуть не подвело меня
57 вопросов за 60 минут — это чуть больше минуты на вопрос. Я медленно прохожу технические тесты, потому что внимательно читаю код. Первый проход я закончил на 52-й минуте, отметив пять вопросов для повторного просмотра. По двум из этих отмеченных вопросов я слишком много думал над формулировкой; перечитав их заново, я изменил оба ответа — один оказался правильным, другой, кажется, я изменил на неправильный (постфактум узнать невозможно).
Что сработало: любой вопрос, где я ловил себя на перечитывании условия более двух раз, я выбирал лучший вариант ответа, помечал его и двигался дальше. Не задерживайтесь на одном вопросе четыре минуты. Если вы не знаете ответ через минуту, то, вероятно, не узнаете его и через три.
Медленные вопросы
Особая категория, которая съедала время: «учитывая этот вывод файла состояния, что покажет terraform plan?» Они медленные, потому что нужно мысленно проходить через diff состояния. По двум из них я отказался от попыток симулировать, посмотрел варианты ответов и выбрал наиболее вероятную сломанную вещь (отсутствующий тег в одном случае, измененный атрибут в другом). Оба оказались правильными. Распознавание паттернов вместо глубокой симуляции, когда время ограничено.
Что бы я на самом деле рекомендовал, если бы переделывал свою подготовку
Учитывая то, что я теперь знаю, вот перераспределенный бюджет времени:
- 40% практических вопросов. Проходите их в условиях ограниченного времени, действительно разбирайтесь с неправильными ответами.
- 25% медленного чтения примеров HCL. Пишите тоже, но беглость, которая вам понадобится в день экзамена, — это беглость чтения, а не письма.
- 15% семантики состояния. Что содержится в файле состояния, почему важна блокировка, какие проблемы решают блоки
moved/removed/import. - 10% новых функций 004 изолированно — проверка переменных, предусловия, эфемерные значения, аргументы только для записи, проекты HCP,
terraform test. - 10% всего остального — концепции IaC, назначение Terraform, обзор HCP.
Изначально несбалансированный бюджет. Раздел «все остальное» в основном состоит из того, что вы уже знаете, если использовали Terraform более нескольких месяцев.
Вещи, которые я не ожидал, что будут важны, но они были
- Знание о существовании
terraform fmtи его назначении. Встречалось дважды. Один из неправильных ответов заключался в том, чтоfmtизменяет состояние. - Синтаксис ограничений версий провайдеров. Разница между
~> 1.2и~> 1.2.0(второй вариант пессимистичен на уровне патча — более строг). Этот вопрос я ответил правильно, хотя убедил себя, что он не будет проверяться. - Что делает
terraform init -upgradeпо сравнению сterraform init -reconfigure. Меня спросили, что использовать после изменения блока backend. Ответ —-reconfigure. terraform outputс-json. В сценарии скриптования спрашивалось, какая команда выдает машиночитаемые выходные значения. Легко, если вы это использовали; легко упустить из виду, если нет.
После экзамена
В конце PSI показывает экран с результатом (я получил зеленую галочку; облегчение). Полная разбивка баллов по доменам приходит по электронной почте через пару дней. Значок появляется в вашей учетной записи Credly, как только вы его принимаете. Сертификаты HashiCorp действительны в течение двух лет, поэтому установите напоминание в календаре.
Что я недооценил в экзамене от вендора, так это то, насколько выматывающими являются 60 минут глубокой сосредоточенности. Не планируйте встреч после. Я пришел домой и час смотрел в стену.
Если вы близки к дате сдачи, пройдите «холодный» блок из банка CertLabPro 004. Не стремитесь к высоким баллам на практике — стремитесь выявить категории, в которых вы слабы, пока есть время их исправить.