По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Продолжаем рассказывать про Terraform. Предыдущая статья тут. В данной статье мы разберем динамичные блоки кода в Terraform, которые можно использовать в своей работе. Данный функционал значительно облегчает написание кода Terraform с помощью которого мы управляем сервисами Amazon. В статье будет описан сценарий с генерацией кода Terraform. Данный функционал был добавлен в terraform 0.12 версии. Для работы создадим новую директорию, можно путем копирования из предыдущего урока. Директорию назовем lesson-5. Для написания кода мы по-прежнему используем текстовый редактор Atom. Мы можем создать файлик с именем DynamicSecurityGroup.tf или переименуем существующий webserver.tf если вы добавили папку путем копирования. Если вы создавали путем копирования отредактируем файл, убрав строчки, которые создают веб-сервер. Удаляем. Теперь мы начнем писать код Terraform, чтобы у нас появилась динамическая группа безопасности. В прошлой статье мы прописывали 2 правила. Данные правила открывали нам порты 80 и 22, аналогично можно прописать, чтобы открывался порт 443 ну или любой другой, который нам необходим для корректного инстанса и работоспособности сервиса. А теперь представим, что нам необходимо открыть еще 20 разных портов. Можно сделать это с помощью copy-paste, т.е. копированием и вставкой уже существующих блоков кода с редактированием протокола и номеров портов. В terraform версии 0.12 добавили функционал и назвали его DynamicBlocks, что позволит генерировать кусочки кода в Terraform. Добавим следующую часть кода: dynamic "ingress" { for_each = ["80", "443", "8080", "1541", "9092"] content { from_port = ingress.value to_port = ingress.value protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } } Разберем для лучшего понимания. Функция Dynamic, далее кавычки двойные и внутри мы пишем, что-будет динамическим, в нашем случае это функция Ingress. Открываем фигурные скобки и пишем цикл с помощью for_each = ["номерпорта1", "номерпорта2"] указывая номера портов. Следовательно, цикл for_each пройдется по каждому из параметров и будет применена конструкция content. Значения внутри конструкции content, будут заменены, а именно с какого порта на какой порт открывается доступ. Далее в конструкции content описываем используемый протокол сетевого уровня и cider_blocks – с каких IP или диапазонов IP разрешено использовать данной правило. Конструкция 0.0.0.0/0 позволяет указать, что данное правило с данным портом разрешено использовать всему интернету вне зависимости от IP адреса. В целях информационной безопасности рекомендую использовать конкретные подсети или конкретные IP адреса, конечно, если это не публичный сервис. Если посмотреть на пример, то написанное таким образом правило, сгенерирует нам 5 отдельных правил, т.е. получается достаточно удобно и сокращает нам количество строчек в коде, а также потенциально количество ошибок. Код становится более читаемым и легким. После использования в коде функции dynamic, мы можем удалить все ставшие ненужными функции ingress. Не забывайте изменить имя ресурса. Это делается путем редактирования переменной name в разделе функции resource, для читаемости кода и удобства управления ресурсами в облаке AWS. После того, как у нас готов наш код, мы можем его запустить. Так как, была создана новая папка, нам необходимо инициализировать ее использования. Переходим в необходимую директорию, в которой находится файл. И запускаем инициализацию стандартной командой terraform init. После ввода команды ожидаем пару минут, пока Terraform скачает все необходимые модули для подключения и работы. Следующей командой terraform apply мы запускаем код на исполнение. И получаем запрос на подтверждение операции. Среди вывода мы можем видеть: Это значит что все порты, которые были указаны в аргументах будут созданы. Осталось подтвердить и дождаться успешного выполнения операции.
img
Представьте ситуацию, пользователи пытаются получить доступ к вашему сайту, но он не открывается. Знаете в чём дело? Возможно, есть ошибки, которые не были выявлены и решены раньше. Разочарованные пользователи покидают ваш сайт, а вы теряете лояльных пользователей. Как решить эту проблему? Как узнать о состоянии сайта раньше пользователей? Существует два возможных способа - eсли вы не против потратить немного денег, то можно обратиться к таким мониторинговым решениям, как StartCake и т.п. Однако если вы разработчик или не готовы тратиться ежемесячно, можете воспользоваться преимуществами API Geekflare - Site Up? Данный API проверяет доступность сайта из разных точек. В данном материале рассмотрим Python код, который немедленно уведомит вас через Gmail, как только сайт станет недоступен. Начнем с изучения API «Is Site Up?» API Is Site Up? Перед началом работы с API необходимо установить пакет requests, который в Python используется для работы с API. Но не обязательно использовать Python. Можно использовать любой другой язык. В любом случае, убедитесь, что настроили все необходимое, чтобы сделать API запрос. Итак, для тех, кто использует Python, установите пакет запросов с помощью команды: pip install requests Выполните настройку для других языков (если выбран другой язык, кроме Python) и переходите к следующим шагам. Теперь перейдите на страницу API Geekflare. Вы можете найти различные типы API, включая «Is Site Up?». Для использования API Geekflare нам нужен ключ API, который мы можем получить через RapidAPI. Нажмите на кнопку GET API KEY, чтобы перейти к RapidAPI. RapidAPI откроется в новой вкладке и выглядит следующим образом: Чтобы получить ключ API нужно создать учетную запись. Создайте учетную запись в RapidAPI, если у вас ее нет. Затем в верхней части всех доступных API Geekflare вы увидите API «Is Site Up?», который мы ищем. Если он не активен, найдите его с помощью поиска и нажмите на него. После этого в правой стороне должно отобразиться руководство по данному API. Из раздела Code Snippets в правой части выберите Python -> Requests. Или же если вы не используете Python, выберите другой язык с соответствующим пакетом. Вы получите код для вызова API «Is Site Up?». Давайте изменим его немного, чтобы потом легче было добавлять код. Посмотрите на измененный код в Python. import requests API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "YOUR_API_KEY" } payload = r'{"url": "https://www.geekflare.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() if __name__ == '__main__': data = make_api_request() print(data) Замените API_KEY своим собственным ключом API из RapidAPI в приведенном выше коде. Он будет разным для каждого пользователя. Вы найдете его в RapidAPI в разделе Параметры заголовка: Тот же ключ API вы сможете найти в примере кода, как показано ниже. Несколько расположений В приведенном выше коде сайт проверяется из одного датацентра (Нью-Йорк, США). Но мы можем посылать запросы на сайт из разных мест с указав буквенные коды стран в теле запроса. Другие доступные места - Англия (Лондон) и Сингапур. Мы можем передать данные местоположения вместе с URL-адресом сайта следующим образом: { "locations": [ "uk", "us", "sg" ], "url": "geekflare.com" } Вы можете передать предпочитаемые расположения из списка. Мы написали код, чтобы сделать запрос API, который получает данные независимо от того, работает сайт или нет. Пришло время написать еще код, который отправляет почту, когда сайт не работает. Получение уведомления на почту В сети можно найти немало руководств о том, как отправлять электронные письма через Gmail в Python или же использовать следующий код, который использует пакет под названием yagmail специально разработан для отправки почты из Gmail. Перед отправкой сообщения через учетную запись Gmail необходимо включить параметр Разрешить небезопасные приложения. Вы можете включить его здесь. Посмотрим код: def send_mail(): gmail = yagmail.SMTP("gmail", "password") receiver = "receiver@domain.com" subject = "Testing Subject" body = "This is a testing mail" gmail.send( to=receiver, subject=subject, contents=body, ) Полное руководство по yagmail можно найти здесь. Теперь у нас есть код для запросов API и отправки почты. Следующим шагом является вызов send_mail всякий раз, когда в ответе на запрос сайт указывается как недостпный. Итак, откуда мы знаем, что наш сайт не работает или работает? Когда мы посылаем запрос к API «Is Site Up?», он возвращает нам Python словарь с некоторыми данными как следующем скриншоте: В данном словаре есть ключ message. Значение этого ключа и показывает нам состояние сайта. Данный ключ может иметь два значения: Site is up Site is down Итак, мы отправим почту, когда получим сообщение «Site is down». Окончательный код будет выглядеть так: import requests import yagmail API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "API_KEY" } payload = r'{"url": "https://www.abcd.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() def send_mail(content): gmail = yagmail.SMTP("gmail", "password") receiver = "email@domain.com" subject = "Your Site is Down" gmail.send( to=receiver, subject=subject, contents=content, ) if __name__ == '__main__': data = make_api_request() message = data['message'] ## seding the mail if message == 'Site is down.': ## extracting the errors from different locations locations_data = data['data'] mail_content = "Your site is down due to unexpected error. See the useful data to resolve errors below. " for location in locations_data: mail_content += f"{location['city']}, {location['country']} - {location['error']} " mail_content += " Check the error and resolve them as soon as possible." send_mail(mail_content) Тело сообщения можете редактировать по своему усмотрению. Мы завершили код отправки почты всякий раз, когда наш сайт не работает. Смотри образец сообщения, полученного с помощью вышеуказанного кода. Но, есть еще проблема. Мы должны выполнить наш код, чтобы проверить, работает ли наш сайт или нет. Частота запуска данного скрипта зависит от ваших предпочтений. Допустим, мы должны проверять сайт каждые час. Правда, мы можем каждый час открыть терминал и запустить скрипт. Но это скучно и неэффективно. Плюс к этому, никто так не делает. Решение напрашивается само: использовать cron для автоматического выполнения нашего кода каждый час. Посмотрим, как его настроить. Настройка Cron Рассмотрим шаги по настройке cron в операционной системе на базе UNIX. Открыть терминал. Выполните команду crontab -e, которая открывает файл crontab на терминале. Нажмите клавишу i для перехода в режим ВВОДА. Теперь добавьте шаблон cron, пути к исполняемому файлу Python и нашему файлу, как указано ниже: 0 * * * * /usr/bin/python3 /home/sample.py Подробно про cron можно прочесть в этой статье. Итак, мы настроили планировщик для ежечасного запуска кода. Если нужно будет указать другое расписание, можно воспользоваться разными утилитами для генерации шаблона расписания для cron. Пожалуй, теперь все. Мы настроили проверку сайта каждый час и получение уведомления на почту, если сайт станет недоступен. Заключение Автоматизация экономит много времени и работает на нас. Можно настроить cron на каком-нибудь облаке, чтобы он постоянно работал, проверял состояние сайта и уведомлял нас при сбое.
img
От Алтуфьево до контроффера лишь на первый взгляд далеко: системный администратор Артем Горячев о своем пути из техподдержки в работу с сетевым и серверным железом Артем, системный администратор из Москвы, делится своей историей знакомства с технологиями и рассказывает о судьбоносных случайностях, которые случаются не только в кино, но и в мире IT. Влюбиться в технологии, начиная с университетских дней, и даже не знать, как учеба перевернет твою жизнь спустя 20 лет — Артем сменил множество компаний, пережил взлеты и падения, чтобы оказаться на своем месте. Он поделился с нами классной историей, в которой нашлось место инсайтам, счастливому совпадению и упорному труду. Как я встретил ваше IT Начало нулевых — вот где находятся истоки моей карьеры. История поисков себя развивалась в атмосферных декорациях, полных артефактов того времени: ЦАО, метро Новокузнецкая, субкультуры и теплые вечера, в которых чувствуешь себя в самом начале пути. Так оно и оказалось — это была дорога с надписью «СТАРТ», про которую я пока ничего не знал. Зато я знал точно, что учусь в технологическом вузе, где помимо стандартной начертательной геометрии и сопромата можно познакомиться и с программированием. Тогда это были Delphi и Turbo Pascal — простые для понимания языки, в которых я быстро разобрался и начал их осваивать. Программирование дает тебе чувство созидания и власти, похожее на эмоции от ремесленного дела. Вот перед тобой ничего нет, а потом — раз! — и ты пишешь программу, которую можно потрогать, увидеть, задействовать. Или, например, игру. Про геймдев я тогда ничего не знал, но сам факт, что своими руками можно разработать игру, не будучи при этом «Букой», очень волновал! Проще говоря, это было началом моего увлечения IT, которое следует за мной на протяжении всей карьеры. После окончания учебы я попробовал себя в различных областях технологий. Начал с работы оператором баз данных в большой сети кинотеатров, где мой труд был замечен, и меня повысили до дежурного администратора. Затем последовала работа по IT-мониторингу в банке, где моей задачей было разруливать инциденты в инфраструктуре. Знание английского языка стало дополнительным преимуществом — я много общался с европейскими партнерами, хоть условия и были стрессовыми (а в мониторинге не может быть иначе), работа мне нравилась. Несмотря на несколько переходов между компаниями, мое увлечение IT оставалось неизменным. Целительная сила провала Расскажу вот про какой опыт: я был обычным системным администратором, когда устроился на работу в известную ресторанную сеть. Моя рутина включала в себя администрирование и работу с программами типа 1С. Казалось, что я нашел свое место, но скоро выяснилось, что этот опыт оказался далеко не таким успешным, каким виделся изначально. Я решил уйти, но так и остался с неприятным осадком на душе (а эту сеть недолюбливаю до сих пор!). Этот провал был для меня не только уроком, но и важным моментом самопознания. Осознав, что нужно двигаться вперед, я решил не сдаваться и найти точки роста в этом неудачном опыте. Понимание, что мое текущее положение – всего лишь этап в моем профессиональном пути, стало толчком для стремления к новым знаниям в IT. На пути к успеху провалы — не страшные захлопнутые двери, а ключи к новым главам. Не бойтесь сделать шаг в неизвестность, и если что-то идет не так, лучше рассматривайте ошибки как уроки. Найти IT в Алтуфьево Скажу честно: уровень знаний у меня особо не рос, но любовь к IT никуда не делась: мне просто было комфортно на той планке, где я был. На тот момент я работал системным администратором в крупном строительном холдинге, занимаясь довольно рутинными задачами. Настолько рутинными, что в какой-то момент мой шеф сказал: «Пожалуй, хватит тут сидеть, Артем. Сейчас есть возможность заниматься задачами системного администрирования, но нужно будет многому учиться». Задача такого специалиста заключается в поддержании работоспособности оборудования на каждом из объектов заказчика — и я согласился. Работа на хелплдеске в какой-то момент превращается в карусель: одни и те же задачи, декорации, способы решения проблем, а смена роли пошла мне на пользу. Она позволяет не только смотреть на процессы, но и чувствовать их изнутри. Однажды я трудился на одном из выездных объектов — была классная теплая погода, и в перерыв я вышел прогуляться в парке. Очень хорошо помню этот момент: это было в районе Алтуфьево, тогда я достал телефон, чтобы сфотографировать живописное дерево, а когда зашел в интернет, чтобы выложить фотографию, увидел рекламу онлайн курсов. Это будто был знак свыше — я посмотрел программу, стоимость, и без раздумий оплатил обучение. Я прошел два курса по основам сетевых технологий и углубленному администрированию маршрутизаторов MikroTik — освоил их всего за полгода. Этот момент изменил все – я, работая в IT уже 10 лет, понял, как много еще предстоит узнать. С этого момента о своей карьере могу сказать так — это был не просто подъем, а настоящий бег в гору. Я находил все новые и новые пробелы в знаниях, ведь до этого я был, по сути, талантливым самоучкой без хорошей теоретической базы. Так я познакомился с академией Merion Network — активно приобретал дополнительные курсы: «Установку и настройку Asterisk» прошел за 2022 год, «Администрирование Linux» — за 2023 год, а сейчас изучаю «Администрирование Windows». В какой-то момент я понял, что у меня достаточно знаний и опыта для покорения новых вершин и решил сменить работу — остаться в той же группе компаний, но перейти на новую должность. Техническое собеседование было длинным и сложным, но благодаря новым умениям мне удалось получить предложение о работе. А когда я пришел увольняться с текущей работы, совершенно внезапно моя компания предложила мне контроффер с отличной зарплатой, и я оказался в красивом офисе в Москва Сити. Как понять, что ты добился успеха Для меня действительно был некий вау-момент: из простого системного администратора на поддержке я начал заниматься сетями и серверами, работать в классной локации за деньги, о которых раньше мог только мечтать. С новой должностью и новым местом работы стало меньше контактов с пользователями, зато стало больше работы именно с железом и технологиями. Вот именно это я и подразумеваю под словом «рост» — челленджи и смещение зоны ответственности. Как оказалось, в мире IT недостаточно иметь фундаментальное образование – нужно постоянно обучаться. Мой опыт показал, что даже после десяти лет в IT найдется место новым знаниям, и я уверен, что это справедливо для специалистов из любой айти-сферы. Вера в себя и непрерывное обучение стали ключевыми факторами в моем пути к успеху. Моя история доказывает, что даже с базовыми знаниями в айти, с верой в себя и нахождением правильных образовательных курсов, можно добиться впечатляющих результатов. Важно помнить, что обучение – это постоянный процесс. Только так и можно добиться успеха в быстро меняющемся мире технологий. О курсах и жизненных целях Мы решили задать Артему несколько вопросов о его учебе и планах, и заодно узнать его мнение о курсах Merion. Как тебе подача материала в курсах? Я совсем не новичок, поэтому нахожу какие-то минусы, конечно. Где-то преподаватель теряется, где-то кажется, что не хватает системы. Но я привык, мне абсолютно окей — в конце концов, я пришел учиться, конспектировать и задавать вопросы, а не придираться по мелочам. Основатели Merion говорят, что сознательно отказались от штаба кураторов и менторов, так как любое обучение во многом про самообучение. Согласен ли ты с этим, пришлось ли самому «копать» информацию дополнительно, или достаточно было того, что есть на курсе? Честно говоря, иногда возмущаюсь структуре, по которой написан курс. Возмущаюсь, возмущаюсь… А потом иду за покупкой нового курса. Все потому, что хорошего текстового структурированного материала по какой-либо теме или предметной области ты не найдешь днем с огнем. У Merion содержание курсов всегда хорошее, было бы желание учиться. Удалось ли достичь поставленных при обучении целей? Да, удалось. Моей главной целью было достичь понимания каких-то моментов, в которых я раньше не мог разобраться. И я разобрался, так что да — своих целей я достиг. Заплатить за курс, сказав этим «спасибо», я никогда не против, особенно если этот курс мне нужен. Скажу еще вот что: «Учеба — как рыбалка. Увидишь скидку на курс от Merion — тащи!» Заключение Я поделился своей историей — вы видите, как простой системный администратор, начавший свой путь с программирования на Delphi, стал специалистом, который работает с серверами, Active Directory, DNS, DHCP, сетевым железом. Да, эта история полнилась вызовами и провалами, но каждая ошибка стала шагом к росту, и к той точке, в которой я сейчас нахожусь. Главный урок из этой истории — важность постоянного обучения и веры в свои силы. Да, я не остановился после первых неудач, а, наоборот, использовал их как топливо для своего развития. Мой путь еще раз доказывает, что в мире IT образование — это не статичная точка, а динамичный путь.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59