Как загрузить проект на github windows

Мои новые проекты в Bicep

В настоящее время у меня есть 3 проекта на GitHub, которые я активно пишу или переписываю для Bicep. Одна новая демка на AKS, и инфраструктура там в самый раз, но там много чего происходит с записью разных вещей в Key Vault, есть AKS, Private Link, много работы с удостоверениями и ролями. Другой проект — демонстрация Azure Defender. Есть достаточно разные типы ресурсов, много инфраструктуры, а также другие услуги. Этот сценарий представляет собой демонстрационную среду для сложной сети — это очень сложно, все эти виртуальные сети, пиринги, брандмауэры, группы безопасности сети, виртуальные частные сети, различные экзотические соединения и зависимости.

Вот ссылки:

Развертывание в Visual Studio Code лучше, чем в Terraform

Как и для Terraform, VS Code может советовать и дополнять, но для Bicep это действительно сложно. В принципе, для меня отпала необходимость смотреть документацию или копировать переводы. Что меня действительно приятно удивило, так это то, что редактор предлагает не только ключи, но и значения. Это очень полезно для меня:

Пояснения при нажатии какой-либо клавиши также очень помогают.

Добавление значений работает на удивление хорошо, даже для вложенных объектов, включая те, которые на самом деле являются ссылками.

Даже если вы используете модули, VS Code понимает, какие входные данные ему нужны.

Модули необходимы для языковой передачи через ARM

Я привык к модулям и до сих пор ими пользуюсь. Я делаю то же самое с Terraform, но есть исключение, что модуль является адресом и используются все файлы tf в нем. Это позволяет мне разделить мои ресурсы на несколько файлов без необходимостипередать параметры. Мне это нравится, и это не работает в Бицепсе… но я обнаружил, что больше не возражаю против этого.

Переход к ARM. Это позволяло использовать модули как вложенные шаблоны, но мегафайл оставался мегафайлом, только более сложным. К тому же разобраться, как это работает с переменными, что видно, а что нет, было сложно. Чистый вариант со связанным шаблоном, где они находятся в другом файле (как модули Bicep сейчас или похожи на адреса Terraform), был ужасно неудобен, потому что Azure должна была иметь возможность их скачивать. Отредактируйте файл, отправьте его в хранилище или Git, запустите, обнаружите, что он не работает, исправьте, отправьте в хранилище… это был ад.

Модули Bicep относительно просты и построены на файле. По сравнению с Terraform, это дело вкуса, но то, что это ссылка на один файл, имеет свои преимущества (мне не нужно использовать структуру каталогов, убедитесь, что все файлы модулей находятся в нужном месте и т.д. .) — это действительно просто и прозрачно. Тот факт, что мне нужно показать выходные данные и параметры, заставляет меня правильно подумать о том, что они из себя представляют и как сделать их воспроизводимыми. Конечно, это работает и с Terraform, но Bicep имеет к этому большее отношение.

Читайте также:  Как отключить антивирус avira на windows 7

Работа с полицией и побег — это бомба

Как я уже писал много раз, чрезвычайно длинные функции concat в ARM — это ад. Terraform элегантен, как и Bicep — просто положите «text$ dalsitext» в поле и вперед. Но тот факт, что команда выбрала одинарные кавычки, был гениальным ходом. Таким образом, вам не нужно избегать двойных кавычек, и Bicep сделает это за вас во время преобразования в JSON ARM. Вы также можете использовать три одинарные кавычки и иметь многострочный ввод, где вам даже не нужно экранировать одинарные кавычки. Вот пример,где я очень ценил это, потому что у меня часто были проблемы с побегом. Особенно здесь, когда мне приходится делать это дважды. Это встроенный скрипт в Bash, который интерпретирует двойные кавычки, и они мне нужны там — тоже одинарные кавычки. Но все дело в значении одного поля JSON, и мы сделаем это во второй раз.

Вот атрибут (это ресурс DeploymentScript):

Довольно читабельно. Почему я не использую одинарные кавычки с эхом, чтобы мне не приходилось всплывать двойные? Ну, потому что внутри у меня есть заложенная команда, которую я хочу интерпретировать. Итак, я буду играть с простыми и заканчиваться до $(), а затем случайно удваивать или отскакивать — это не имеет значения. В любом случае, если это в формате JSON, мне не нужно об этом беспокоиться — никаких всплывающих окон, у меня будет больше ясности и лучшей читабельности.

Во что это переводится?

Следующая ситуация — из основного шаблона я вывожу параметры и передаю им параметры, которые получаю из другого шаблона.

В бицепсе это определенно легко.

DSL сочетает понятность YAML с надежностью JSON

.

Bicep (аналогично Terraform) имеет собственный DSL. ARM использует JSON, Kubernetes использует YAML, так что у меня большой опыт работы с обоими. YAML очень удобочитаем и может быть красиво прокомментирован, но он разваливается, когда делается отступ, и все портится (скопируйте и вставьте из PDF или электронной почты, и его легко пропустить). В противном случае форматирование связано с синтаксисом.

С другой стороны, JSON можно разделить на отступы или отступы, и он все равно работает. Я могу легко использовать функцию VS Code, которая красиво отформатирует мой JSON, чтобы он был достаточно удобочитаемым и согласованным для всех объектов и файлов. Просто забудь кавычку или тире, пока сильно не помучаешься. Ярлык синтаксиса не означаетформатирование и пробелы, но для конкретных символов — пробелы не важны, поэтому VS Code может отредактировать его так, чтобы он всегда выглядел одинаково.

Читайте также:  Как включить анимацию панели задач на windows 10

Bicep, как и Terraform, представляет собой DSL, который плохо справляется с пробелами, но его удобочитаемость и возможность срабатывания находятся на высоком уровне (вы знаете JSON-ситуацию со списком, где все, даже последний элемент, должен заканчиваться на прочерк — вы добавляете строку, и вы должны добавить ее в предыдущую последнюю строку, вы копируете элемент из другого списка, где он находится в середине, и ставите новый в последнюю строку, и вы должны удалить строку и т. д. .).

Вот так определение источника может выглядеть немного сложным — я не могу отделить ключ от значения, но в остальном это не проблема.

В VS Code я нажимаю CTRL+ALT+F (Форматировать документ), и все работает нормально.

Каковы ограничения и недостатки?

Я нашел их некоторое время назад, над ними работают.

Так, например, модули для меня современные и простые, но их удаленная связь или какая-то форма репозитория еще не завершена. Ярлык прекрасно работает в составе одного проекта, но не готов к использованию, например, модуля из интернета, даже если я его себе не копировал. Это непростое решение — повторное обращение к Git опасно, если вы не выпускаете версионный модуль, и он должен быть закрытым, а не общедоступным Git. Какой-то корпоративный репозиторий и с него скачал? Это, вероятно, будет лучше всего, но даже тогда мы вернемся к управлению версиями и необходимости загрузить и подготовить его перед запуском (см. terraform init). Но это точно неправильно, над этим еще работают — присоединяйтесь к обсуждению:

Вторая трудность заключается в том, что благодаря тому, как работает ARM, вы не можете ссылаться на себя, т.е.у вас есть объект, который на самом деле является составным, и отдельные длины должны перекрываться и, таким образом, включать идентификатор между ними. Это не перекрестная ссылка, это не так, это внутри одного объекта, но Bicep не позволяет взять id или имя — я должен это перечислить. Это было нормально с ARM, когда было сделано так, что вы вводите имя балансировщика нагрузки в переменную и работаете с ним, но в Bicep вы можете лучше ссылаться на него. Итак, у меня есть LB с каким-то именем, в нем Health probe и еще LB rule — и ему нужно ссылаться на зонд. В этот момент мне нужно вернуться к ARM-стилю, использовать функцию и ввести имя LB — это и есть антипаттерн Bicep.

Не очень распространенная ситуация, но бывает — если хотите, присоединяйтесь к обсуждению:

Бесплатные атрибуты — это больше свойств (по крайней мере, я так их понимаю), и я не против, но знать о них полезно:

  • Bicep — это не самостоятельная система, это перевод на ARM, поэтому не ждите, чтобы научиться работать с другим облаком или другой технологией самостоятельно — ему нужны некоторые функции в Azure, например репозиторий Azure Arc, который может использоваться для редактирования технологий в других средах, но это делает Azure, а не Bicep. И развернуть через Azure? Вы можете использовать надстройку GitOps (по сути, управляемый Flux) поверх AKS и любой универсальный скрипт (ARM DeploymentScript) поверх. Или просто после развёртывания инфраструктуры продолжить дальше в CI/CD, например GitHub Actions будет красиво и начать делать вещи поверх Azure, например Deploy приложения в Kubernetes с помощью Helm, создавать таблицы в БД и загружать синтетические данные или дроп код в Azure WebApp.
  • Bicep имеет жизненный цикл ресурса в стиле ARM, т. е. он удаляется только, например, после уничтожения группы ресурсов. Если вам нужно прочитать полный цикл, включая смазку,используйте режим Complete — иначе, если вы запускаете Kubernetes, вы знаете этот хрестоматийный пример декларативности — то, что не объявлено (например, для группы ресурсов), не должно существовать и будет покрыто.
  • Бицепс декларативен. Он поддерживает циклы и условные операторы, поэтому вы можете его использовать (ARM тоже может это делать), но в настоящее время он не позволяет вам использовать обычный код для некоторых сложных значений запроса или какую-то нативную интеграцию (например, в IPAM для добавления IP-адреса). Мне это не нравится, если вы хотите посчитать, сделайте это в CI/CD, запишите в файл значений и сообщите Bicep (вы не хотите развертывать что-то со значением, которое рассчитывается, но нигде не хранится) — т.е. . Мне это не нужно. Но если отдать ему должное, то взгляните на Pulumi или Farmer (его заменяет ARM и .NET).
Читайте также:  Как установить свои звуки на windows 10

Суммасумма

После нескольких интенсивных применений Bicep стал моим самым популярным инструментом Infra as Code, потому что:

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

ARM на моем конце — у меня пока нет причин для этого (хотя иногда я могу дотянуться до его функции, но я все еще не могу писать в нем).

У меня уже давно есть Terraform, и я буду продолжать его использовать. Из двух причин у меня уже есть только одна. Во-первых, он был намного проще и читабельнее, чем ARM, — он провалился. Вторая причина и вторая причина заключается в том, что Terraform является эталоном инструментов Infra as Code.очень хорошо и может многое делать в облаке, а некоторые клиенты все строят на нем.

Итак, я хочу познакомиться с Bicep и Terraform — с обоими — и хотел бы порекомендовать их вам. Я хочу использовать Terraform для создания мультиоблачной IaaS. Я хочу изменить определенные параметры Azure, такие как управление, безопасность, управление подписками или использование специализированных служб на уровне PaaS (где в каждом облаке все по-разному) с помощью Bicep.

Поделиться с друзьями
ОС советы