Пулюмі англійською: Інфраструктура як код в будь-якій мові
Освоєння англійської лексики Pulumi — стеків, ресурсів, станів, постачальників і ключових відмінностей від Terraform, пояснених для фахівців з інформаційних технологій.
Introduction
Pulumi — це платформа інфраструктури як коду (IaC), яка надає вам змогу визначити хмарну інфраструктуру за допомогою мов програмування загального призначення, таких як TypeScript, Python, Go і C#. Якщо ваша команда використовує Pulumi або оцінює його у порівнянні з Terraform, ви зіткнетеся з певним словником у обговореннях архітектури, перегляді запитів на витягування і документації. Правильне розуміння цих термінів допоможе вам чітко повідомляти про зміни в інфраструктурі і брати участь у прийнятті рішень щодо проектування.
Програми та проекти
У Pulumi, проект є збіркою коду, який визначає вашу інфраструктуру, аналогічно до сховища або пакунка. Стек є екземпляром розгортання цього проекту — зазвичай представляє середовище, наприклад dev, staging, або production. Інженери використовують ці терміни дуже конкретно:
- «Кожне середовище є окремим стеком» — dev, staging і production є трьома стеками одного проекту
- “Ми розгортаємо стек” — запустити
pulumi upдля застосування змін в інфраструктурі - «Стек посилається на вивід з іншого стека» — крос-стекові посилання для спільного використання значень, таких як VPC ID
- «Ми знищуємо стек» —
pulumi destroyвилучає всі ресурси зі стеку - «Стек конфігурації» — параметри середовища, якими керується
pulumi config set
Фраза “вивід стека” є важливою. Інженери кажуть: « ми експортуємо адресу URL балансувальника навантаження як вивід стека, щоб інші стеки могли її використовувати ». Експортування значень з одного стека і читання їх у іншому є звичайним архітектурним шаблоном у багатостековій конфігурації Pulumi.
Ресурси, постачальники, і держава
** Ресурси ** є фундаментальними будівельними блоками — контейнер Pulumi S3, екземпляр EC2 або розгортання Kubernetes. Кожен ресурс відповідає реальному об’ єкту хмари. Словник:
- «Ми декларимуємо ресурс» — пишемо код, який визначає хмарний ресурс
- « Ресурс забезпечений » — Pulumi створив або оновив фактичний об’ єкт хмари
- « Вхідні дані ресурсу » — налаштування, які ви передали конструктору ресурсів
- « Ресурсні виводи » — значення, які стають відомими тільки після створення ресурсу, наприклад, IP- адреса або ARN
** Provider ** — це додаток, який знає, як взаємодіяти з хмарною платформою. « Ми використовуємо AWS provider » означає, що Pulumi використовує AWS SDK під капотом. Інженери кажуть «налаштувати провайдера з цільовим регіоном» при встановленні, де ресурси повинні бути розгорнуті.
** Стан ** — це спосіб, яким Pulumi відстежує те, що було розгорнуто. За замовчуванням стан зберігається в хмарі Pulumi, але команди можуть також використовувати «самокерований стан», зберігається в контейнері S3 або Azure Blob Storage. Інженери кажуть: «Ми зберігаємо стан в Pulumi Cloud для керованого блокування» — посилаючись на контроль одночасності, який запобігає двом інженерам від запуску pulumi up одночасно і пошкодження стану.
Вгору, перегляд, оновлення
Три команди визначають потоки робіт Pulumi:
- **
pulumi preview** — показує, які зміни буде внесено без їх застосування; « ми завжди переглядаємо перед застосуванням у виробничих умовах » - **
pulumi up** — застосовує зміни; « ми запускаємоpulumi up, щоб розгорнути нову базу даних » - **
pulumi refresh** — оновлює стан Pulumi, щоб він відповідав фактичному стану хмари; « ми оновлюватимемо після того, як у консолі буде внесено зміну вручну »
Інженери описують відмінності, які показує pulumi preview як ** план **: « План показує три ресурси, які оновлюються і один, який замінюється ». Слово ** замінено ** важливе — це означає, що ресурс буде знищено і створено знову, що часто спричиняє перерви у роботі і вимагає чіткого перегляду.
Порівняння з гібридними моделями
Команди часто порівнюють Pulumi і Terraform. Ключові фрази у цих гілках:
- «Реальні петлі і умовні» — Pulumi використовує рідні мови конструкцій; «ми використовуємо TypeScript
forпетлю, щоб створити 10 S3 buckets, які вимагали бcountабоfor_eachв Terraform» - «Безпека типів» — Pulumi забезпечує перевірку конфігурацій ресурсів під час компіляції
- «HCL проти мови загального призначення» — центральне порівняння; HCL є доменно-спеціфічною мовою Terraform
- «Pulumi використовує ту ж екосистему провайдера, що і Terraform» — через Terraform provider bridge
Ключовий словник
| Term | Definition |
|---|---|
| project | The Pulumi codebase that defines a set of infrastructure resources |
| stack | A deployment instance of a project, representing one environment |
| resource | A cloud object managed by Pulumi, such as a VM or database |
| provider | The plugin that interfaces with a specific cloud platform |
| state | Pulumi’s record of what resources have been deployed |
| stack output | An exported value from a stack that other stacks can consume |
| pulumi preview | Shows planned changes without applying them |
| pulumi up | Applies the infrastructure changes |
| replace | Destroy and recreate a resource, typically due to an immutable property change |
| self-managed state | Storing Pulumi state in your own cloud storage rather than Pulumi Cloud |
Практичні поради
-
** Поясніть колегі модель стека англійською мовою. ** Вправа: « У Pulumi проект — це код, а стеко — це екземпляр цього коду, розгорнутий у певному середовищі. У нас є один проект і три стеки: розробка, стадіювання і виробництво»
-
** Використовуйте принцип « перегляд перед застосуванням » як принцип роботи. ** Завжди скажіть « дозвольте мені спочатку переглянути це » перед запуском
pulumi up. Ця фраза сигналізує про хорошу практику і є універсально зрозумілою в спільнотах IaC. -
** Розумійте значення слова « замінити » у переглядах. ** Коли
pulumi previewпоказує, що ресурс « замінено », знайте, як пояснити, чому: « Цей ресурс буде замінено, оскільки ми змінили незмінну властивість — версію рушія бази даних — яка вимагає знищення і відтворення екземпляра. » -
** Прочитайте посібник з переходу з Terraform на Pulumi. ** Цей документ написано простою англійською мовою і явно порівнює поняття поруч. Це чудова вправа з читання, яка одночасно навчає вас словниковому запасу обох інструментів.
Conclusion
Словниковий запас Pulumi — стеки, ресурси, провайдери, стан, перегляд, заміна — точний і важливий для розуміння обговорень інфраструктури. Найбільшим відмінним моментом інструмента є використання справжніх мов програмування, тому лексика навколо циклів, умовних виразів і безпеки типів є центральною для обговорення. Оскільки IaC стає більш рідною мовою програмування, здатність обговорювати ці концепції англійською мовою буде все більш цінною для інженерів інфраструктури.
Наприклад, англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська мова: англійська
Сила Pulumi не * просто * про декларативну інфраструктуру як код; це про ефективне повідомлення про цю складність. Для розробників, які будують свої професійні навички англійської мови разом з технічними, тонкощі термінології Pulumi можуть бути особливо викликом. Погляньмо правді в очі, « стан » - це поширене слово, але розуміння його точного застосування в контексті Pulumi - як це пов’язано з * виявленням дрейфу *, * незмінними змінами * і загальним управлінням вашим хмарним середовищем - вимагає більше, ніж просто перекладу. Аналогічно, опис змін у запиті на завантаження не є простою заявою « оновлено схему бази даних ». Для цього потрібне ретельне формулювання, яке передасть намір, вплив і потенційні наслідки.
Розглянемо цей сценарій: Alex, новий розробник Pulumi, переглядає запит на збирання, надісланий Ben. У описі PR буде написано: « Оновлено екземпляр PostgreSQL ». Алекс, усвідомлюючи потребу у більш детальній інформації, може ввічливо запитати: « Бене, чи не могли б ви розібратися у змінах, які ви внесли до екземпляра PostgreSQL? » Які зміни у схемі було реалізовано і як вони поєднуються з існуючою стратегією міграції даних? Було б корисно включити опис будь-якого потенційного впливу на нижні програми.” Це поширена ситуація - початковий опис Бена функціональний, але не має точності, необхідної для надійного перегляду коду. Ключова річ тут не в тому, що формулювання Бена було неправильним, а в тому, що воно не було достатньо детально для професійного контексту. Використання таких термінів, як «модифікації схеми», «стратегія міграції даних» і проактивне згадування «потенційно негативного впливу» демонструє глибше розуміння основних концепцій Pulumi і важливість ретельної документації.
Інший приклад може з’ явитися у каналі Slack під час розв’ язання проблеми. Сара не розуміє повідомлення про помилку, пов’ язану з розгортанням стека Pulumi: « Виявлено дрейф стану — ресурс « database- server » несподівано змінився ». Замість того, щоб просто сказати « Виправте це!», кориснішою відповіддю було б « Давайте дослідимо дрейф стану. Можете описати зміни, які призвели до цього? Чи було оновлено налаштування сервера бази даних за допомогою нового постачальника послуг, або ж є проблема з нашим існуючим pulumi up командою?» Цей рівень детального опитування демонструє здатність діагностувати проблеми за допомогою розуміння зв’ язку між * станом * Pulumi, ресурсами, якими він керує, і потенційними джерелами невідповідностей. Метою завжди є чітке спілкування - забезпечення того, щоб усі зацікавлені сторони розуміли ситуацію і могли ефективно внести вклад у рішення.
pulumi_command = "pulumi up --stack my-app --auto-approve"
Ця проста команда ілюструє критичну концепцію: підхід Pulumi до інфраструктури як коду підкреслює * явний контроль * над змінами, а не неявну залежність від типових параметрів провайдера. Зрозуміти, що pulumi up це не просто «застосування» конфігурацій, але запуск процесу перевірки стану і потенційної модифікації є фундаментальним для ефективного використання Pulumi - і чіткого повідомлення цих дій у вашій команді.