Ось 28 запитань і відповідей на інтерв’ю Terraform у реальному часі зі списком і поясненнями важливих команд, які часто задають під час співбесід.
Зростання використання хмарних технологій відкрило багато можливостей у світі DevOps. У майбутньому хмарні технології стануть загальною темою для запитань на співбесіді, а базові знання про хмару та інфраструктуру як код, інструменти IAC будуть обов’язковими для ролей DevOps.
Що таке Terraform?
Тераформа є одним із найпопулярніших інструментів IAC, яким користується кожен хмарний інженер. Це дозволяє нам визначати як хмарні, так і локальні ресурси в конфігураційних файлах, доступних для читання людиною, і таким чином надавати ці ресурси програмно. Найбільш помітною особливістю Terraform є те, що, на відміну від більшості інструментів IAC, він не обмежений одним хмарним постачальником. Ви можете використовувати Terraform для запуску своїх програм на кількох хмарних платформах одночасно.
Якщо вам цікаво, які технології підтримує terraform, ось невеликий список:
Щоб продовжити свою кар’єру інженерів DevOps, хмарних архітекторів, розробників або адміністраторів, вам доведеться відповісти на запитання на співбесіді Terraform. Ми склали список найпопулярніших питань для співбесіди з Terraform, які допоможуть вам покращити свої знання про Terraform.
Загальні запитання та відповіді на інтерв’ю Terraform
#1. Що ви розумієте під Terraform?
Terraform — це інструмент IAC з відкритим кодом, створений HashiCorp. Він використовується для створення, оновлення, видалення та версії вашої інфраструктури на кількох хмарних платформах.
#2. Які причини вибрати Terraform для DevOps?
Використання Terraform для створення інфраструктури не залишає місця людським помилкам, отже покращуючи якість, послідовність і ефективність хмарної та локальної інфраструктури. Terraform використовує мову HCL, яка досить схожа на JSON і проста у вивченні та використанні. На відміну від інших інструментів IAC, які пропонують постачальники хмарних технологій, як-от Cloudformation для AWS, ми можемо використовувати Terraform з кількома хмарними платформами одночасно. Це дозволяє уникнути необхідності вивчати кілька інструментів IAC і покращує сферу співпраці.
#3. Як працює Terraform?
Terraform використовує плагіни, які називаються постачальниками Terraform, для взаємодії з API на хмарних платформах і надання наших ресурсів. Для кінцевого користувача робочий процес terraform має три етапи.
Написати: створити інфраструктуру як код.
План: попередній перегляд змін, які Terraform внесе перед застосуванням.
Застосувати: надання інфраструктури та застосування змін.
#4. Що ви маєте на увазі під хмарою Terraform?
Terraform Cloud — це віддалене середовище, оптимізоване для робочого процесу Terraform. Він надає такі функції, як робочі області та блокування стану, що дозволяє людям у великих командах співпрацювати.
#5. Що ви розумієте під державою в Terraform?
Як інструмент IAC, terraform повинен знати поточний стан конфігурацій та інфраструктури, якими вона керує. Terraform зберігає цю інформацію у файлі, який називається файлом стану.
#6. Яка користь від Terraform State?
Стан Terraform дозволяє Terraform зіставляти ресурси реального світу з вашою конфігурацією, відстежувати метадані та покращувати продуктивність під час планування змін для складної інфраструктури. Це критично важливий компонент Terraform.
#7. Що ви розумієте під Terraform Backend?
Сервер Terraform — це платформа, де зберігаються знімки стану Terraform. За замовчуванням Terraform використовує бекенд під назвою local для збереження стану як локального файлу на вашому диску. Усі інші підтримувані серверні частини є свого роду службами віддаленого зберігання.
#8. Що таке провайдер у Terraform?
Постачальники в Terraform — це плагіни, які дозволяють Terraform взаємодіяти з хмарними провайдерами, провайдерами SaaS та іншими API. Наприклад, якщо ми плануємо використовувати Terraform для надання інфраструктури на AWS, нам потрібно буде оголосити постачальника AWS у наших конфігураційних файлах.
#9. Хто підтримує постачальників Terraform?
Провайдери поширюються окремо від самої Terraform. Як користувач Terraform, кожен може розробити власних провайдерів. Є деякі стандартні постачальники, які підтримуються явно Hashicorp.
#10. Що таке Sentinel?
Вартовий це політика як кодовий інструмент, який використовується для забезпечення виконання стандартних конфігурацій для ресурсів, які розгортає Terraform. Він може використовуватися організаціями для цілей дотримання нормативних вимог та управління.
#11. Що ви розумієте під модулями в Terraform?
Модуль Terraform — це стандартний контейнер для кількох ресурсів, які використовуються разом для надання та налаштування ресурсів. Наприклад, ви можете створити «модуль VPC» для своєї організації, який надає стандартний VPC та інші ресурси, такі як підмережі та інтернет-шлюзи. Модулі можна надавати публічно через публічний реєстр модулів і приватно через приватний реєстр модулів.
#12. Яка перевага використання модулів у terraform?
Модулі Terraform дозволяють нам створювати логічну абстракцію на вершині набору ресурсів. Використання модулів дозволяє нам підтримувати та повторно використовувати стандартну конфігурацію ресурсів. Їм можна керувати версіями та ділитися ними з членами ваших команд, щоб надавати ресурси стандартним способом.
#13. Що таке приватний реєстр модулів?
Функція приватного реєстру модулів Terraform Cloud дозволяє нам ділитися модулями Terraform у нашій організації.
Питання та відповіді на інтерв’ю для Terraform
#14. Як ми можемо експортувати дані з одного модуля в інший?
Ми можемо експортувати дані з модуля, визначивши вихідні блоки у файлах конфігурації модуля. Потім ці дані можуть бути передані як параметр до модуля призначення.
#13. Як можна визначити залежності в Terraform?
Terraform має вбудоване керування залежностями. Terraform має два типи залежностей між ресурсами – неявні та явні.
Неявні залежності, як випливає з назви, виявляються Terraform автоматично. Це коли вихід «ресурсу A» використовується в «ресурсі B». Terraform автоматично визначає, що «ресурс B» потрібно створити лише після «ресурсу A»
Явні залежності можна вказати у випадках, коли два ресурси внутрішньо залежать один від одного без спільного використання вихідних даних. Це можна зробити за допомогою параметраdependent_on у блоці конфігурації.
#14. Що таке Provisioners у Terraform?
Провайдери — це ресурси Terraform, які використовуються для виконання сценаріїв під час створення або знищення ресурсу. У Terraform є два типи провайдерів:
- local-exec: викликає сценарій на машині, на якій запущено Terraform.
- remote-exec: викликає сценарій на віддаленому ресурсі після його створення.
Провайдери призначені для використання лише як крайній засіб у Terraform.
#15. Що таке зовнішній блок даних у Terraform?
Подібно до засобу локального виконання, блок зовнішніх даних можна використовувати для запуску сценаріїв на машинах, на яких працює Terraform. Різниця між провайдером і блоком зовнішніх даних полягає в тому, що сценарії у зовнішньому блоці даних можуть повертати дані у форматі JSON, тоді як провайдери не можуть повертати жодних виходів. Важливо зазначити, що зовнішні блоки даних також призначені як крайній засіб і не повинні використовуватися, якщо є краща альтернатива.
#16. Як двоє людей, які використовують хмару Terraform, можуть створити два різні набори інфраструктури, використовуючи той самий робочий каталог?
За допомогою різних робочих областей. Ці користувачі можуть запускати запуски Terraform у двох окремих робочих областях. Кожна робоча область має власний файл стану, тому, якщо ресурси не перетинаються, обидва користувачі можуть успішно надати два різні набори інфраструктури за допомогою одного коду.
#17. Що відбувається, коли кілька інженерів починають розгортати інфраструктуру, використовуючи той самий файл стану?
Terraform має дуже важливу функцію під назвою «блокування стану». Ця функція забезпечує відсутність змін у файлі стану під час виконання та запобігає пошкодженню файлу стану. Важливо зазначити, що не всі серверні модулі Terraform підтримують функцію блокування стану. Ви повинні вибрати правильний сервер, якщо ця функція є обов’язковою.
#18. Що таке нульовий ресурс у Terraform?
Нульовий ресурс terraform — це конфігурація, яка працює як стандартний блок ресурсів terraform, але не створює жодних ресурсів. Це може здатися дивним і марним ресурсом, але він може бути корисним у різних ситуаціях, щоб обійти обмеження в Terraform.
#19. Як ви можете використовувати того самого постачальника в Terraform з різними конфігураціями?
Використовуючи аргумент псевдоніма в блоці провайдера.
#20. У вас є файл конфігурації Terraform без ресурсів. Що відбувається, коли ви виконуєте команду terraform apply?
Terraform знищить усі ресурси. Початок порожнього прогону за допомогою команди terraform apply — це те ж саме, що й запуск знищення terraform.
#21. Що станеться, якщо ресурс було успішно створено в terraform, але не вдалося під час підготовки?
Це малоймовірний сценарій, але коли це трапляється, ресурс позначається як зіпсований і його можна відтворити, перезапустивши запуск terraform.
#22. Яке значення змінної TF_LOG забезпечує НАЙБІЛЬШ детальне журналювання?
TRACE є найбільш детальним і типовим значенням змінної TF_LOG.
#23. Як можна імпортувати наявні ресурси в Terraform Management?
За допомогою команди terraform import.
#24. Яку команду можна використати для попереднього перегляду плану виконання тераформи?
Команда terraform plan створює план виконання змін, які Terraform внесе в інфраструктуру.
#25. Яку команду можна використати для узгодження стану Terraform із фактичною інфраструктурою реального світу?
Команда terraform apply -refresh-only використовується для узгодження стану Terraform із фактичною інфраструктурою реального світу. Це нова альтернатива команді terraform refresh, яка зараз застаріла.
#26. Яку команду можна використовувати для перемикання між робочими просторами під час використання Terraform Cloud?
Команда terraform workspace select
#27. Яка команда використовується для перевірки синтаксису файлів конфігурації terraform?
Команда terraform validate використовується для перевірки того, чи конфігурація є синтаксично правильною та внутрішньо узгодженою.
#28. Яка команда використовується для створення нових робочих областей у хмарі Terraform?
Команда terraform workspace new
Деякі інші важливі команди terraform для технічних співбесід.
- terraform init: ініціалізує віддалені серверні модулі; завантажує постачальників і віддалені модулі, визначені у вашій конфігурації.
- terraform init -upgrade: використовується для оновлення існуючих завантажених постачальників.
- terraform plan: генерує план виконання для створення або оновлення інфраструктури.
- terraform apply: створює або оновлює інфраструктуру після запиту підтвердження від користувача.
- terraform apply –автоматичне затвердження: створює або оновлює інфраструктуру; етап затвердження користувача пропущено.
- terraform destroy: видаляє інфраструктуру після запиту підтвердження від користувача.
- terraform destroy –автоматичне затвердження: видаляє інфраструктуру; етап затвердження користувача пропущено.
- terraform fmt: сканує поточний каталог на наявність файлів конфігурації та форматує їх відповідно до канонічного стилю та формату HCP.
- terraform fmt –recursive: сканує поточний каталог, а також підкаталоги на наявність файлів конфігурації та форматує їх відповідно до канонічного стилю та формату HCP.
- terraform show: надає зрозумілий для людини вихід із файлу стану або плану.
Сподіваюся, наведена вище інформація допоможе вам отримати роботу в Terraform.