Ответы пользователя по тегу DevOps
  • Скейлинг в терраформ. Как?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    тот же terraform plan вам напишет почему он хочет заменить инстансы - какие параметры общей для инстансов конфигурации изменились, при невозможности их замены на лету
    Если вы меняете важный элемент в настройке, который невозможно заменить без пересоздания инстанса, его надо игнорировать через lifecycle -> ignore changes
    Однако так вы потенциально можете получить исключительно увеличение количества объектов
    Если вы деплоите в AWS то ASG может помочь - она не пересоздает инстансы без надобности, при добавлении необходимого количества инстансов. При уменьшении, базовая политика удаления инстансов - удалять наиболее старый.
    Ответ написан
    Комментировать
  • Как мониторить Windows Radius server (NPS) через Prometheus?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    попробуйте telegraf c input windows_eventlog натравить на нужные логи радиуса - это делается через xpath query
    затем выплёвывайте в output в формате прометея
    Ответ написан
  • Как сделать итерацию по серверам в Terraform?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Vitaly Karasik
    Евгений, я хочу это сделать Terraform

    Terraform - инструмент для провижининга инфраструктуры. tf управляет ресурсами инфраструктуры и хранит их состояние в стейте для того чтобы просчитывать изменения при изменении параметров или кода
    Пользователи на ваших серверах - это уже не инфраструктура, они никак не фигурируют (и не могут без костылей) в стейте tf, а значит именно управлять ими tf не будет.
    Вы, конечно, можете использовать костыль в виде null resource запускающего просто sh\posh\cmd скрипт, который откуда то возьмет данные для подключения к вашим серверам, данные о пользователях которых надо создать
    Терраформ этим ресурсом по сути не управляет, он только выполнит\перевыполнит(по триггерам на состояние других ресурсов в tf) ваш скрипт. О небезопасности хранения учетных данных таким образом думаю не стоит напоминать.
    Аналогично вместо скрипта может быть ансибл\шеф (возможно через провайдер) или что-то другое так же запускаемое терраформом (но стейт созданных "ресурсов"=пользователей хранить будет опять же не терраформ, а значит об управлении речь не идет)
    Не надо плоскогубцами забивать гвозди. Да, в некоторых случаях это возможно сделать, но это создает больше проблем чем решает
    Кстати, намек как плоскогубцами забить гвоздь содержится в описании null_resource - ссылка выше.
    Ответ написан
    8 комментариев
  • Как добавить удаленное хранение файла?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    ключ - это имя объекта в s3 бакете, контент которого соответствует файлу terraform.tfstate лежащему сейчас локально.
    Если у вас простой код (как на скриншоте) - можете спокойно называть ключ "terraform.tfstate"
    Если вы в одном бакете храните ключи разных частей одной инфраструктуры - сделайте логическое разделение "ec2/terraform.tfstate", "vpc/terraform.tfstate"
    вообще можете назвать хоть "123" - это просто название ключа, где терраформ будет искать стейт в будущем. Единственное ограничение - имя ключа должно соответствовать правилам именования объектов в S3
    Ответ написан
    Комментировать
  • Что спрашивать у работодателя на собеседовании DevOps?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Ваш вопрос к Devops не относятся ну совсем никак. И без девопса были и есть тренинги, процессы ревью, борьба с техдолгом, саморазвитие и хорошие отношения в коллективе
    Это обычные вопросы на любом собеседовании, к девопсу имеющие очень опосредованное отношение - но это хорошие вопросы

    я согласен с Пума Тайланд что это вы должны задать работодателю вопросы как обстоят дела в области в которой вы считаете себя компетентным(или пытаетесь быть компетентным)
    По области devops всегда можно спросить какие процессы уже автоматизированы (билд, тестирование, доставка, мониторинг, операции, etc.), какими инструментами, почему выбраны именно эти инструменты, насколько сильная будет поддержка(вы же джун судя по подписи) от команды в их изучении. Спрашивайте то что вам близко по уже имеющимся знаниям, чтобы не походить на "я спросил потому что мне на тостере так ответили" - чтобы сравнивать с уже имеющимся у вас опытом.

    А общие вопросы - их и надо задавать работодателю, независимо от области в которой происходит ваша рабочая активность
    Ответ написан
    Комментировать
  • Как уменьшить риски потери инфраструктуры при использовании Terraform?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Потерять можно все при любом действии и любым продуктом.
    Терраформ просто позволяет сделать это .. красиво и очень удобно, если вы хреново его спланировали.
    Правило 1: используйте автоприменение только в тех местах где не жалко или где вы железобетонно уверены(и берете риски на себя)
    Правило 2: валидируйте план. Хотя бы глазами
    Вообще, есть у некоторых людей практика делать план в файл, валидировать его какой то внешней логикой, и при успешной валидации применять план из файла, не просчитывая его заново (он делается при каждом апплае) с автоподтверждением. Мне не нравится, да и терраформ честно предупреждает что на момент реального применения ситуация может отличаться и менять придется совсем другие элементы.
    Правило 3: разноси элементы по логическим слоям, чтобы уменьшить зону поражения при гибельном апплае. Например настройки сети а одной папке со своим стейтом, запуск приложения - в другой. И связывайте через ремоут стейт. Главное соблюдать меру, чтобы каждую, скажем , security group в aws не создавать в отдельных слоях.
    Правило 4: используйте модули, если применение логической группы ресурсов используется более одного раза. Тут тоже не стоит плодить модули на каждый ресурс и подходить разумно.
    Правило 5: тестируйте изменения! (Используя одни и те же модули для стейжа и прода). Логично предположить что если вы снесли стейж то и прод снесется.
    Правило 6: используйте vcs для работы с кодом терраформ (для того чтобы откатывать код для восстановления убитого стейжа например)
    Правило 7: используйте lifecycle политики Prevent destroy на ресурсах, чтобы запрещать из убиение
    Помидор 7.1: используйте ignore changes там где это нужно
    Правило 8: используйте правильный инструмент для того что вы хотите сделать. Терраформ умеет много чего, но конфигурейшн менеджер он не заменит, хотя по функциям они чуть да пересекаются.

    В принципе, если продолжать я могу до штук 20 дойти полезных советов, но на 90% мои правила, по сути - используйте для работы с кодом терраформ те же правила что и для работы с любым другим кодом - снимете 70% проблем. Остальные будут связаны с особенностью работы терраформ и радиусом кривизны рук автора терраформ кода.

    P.S. пишу на ходу в метро, орфографию и пунктуацию правит т9. Спрашивайте, вдруг заметите какой нибудь термин, который я писать не собирался :D
    Ответ написан
    3 комментария
  • Как вызывать AWS API используя временные credentials?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    https://docs.aws.amazon.com/en_us/cli/latest/userg...
    Вы получаете креды.
    Вам нужно положить их в соответствующие переменные окружения.
    Далее следующая команда AWS CLI будет использовать их.
    Ответ написан
    5 комментариев
  • Как лучше управлять backup and restore volume snapshots для AWS EC2, созданные LifeCycle Manager?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Вадим
    1. Backup виртуальных машин - это AMI (в принципе те же яйца, только сбоку: снапшоты EBS-ов + конфигурация машины собранные в пакет и зарегистрированные пространстве AMI вашего аккаунта)
    Хотите делать полный бэкап машины - делайте AMI а не снапшот EBS . В процессе AMI вполне себе можно затегировать.
    Нужный вам подход - освоить AWS CLI для создания AMI и их тегирования. Скрипт будет простой.
    В теги можете запихать все что угодно, включая девичью фамилию матери админа, запустившего инстанс.
    Поставите в скедулер запуск снятия AMI-шек со всех нужных вам инстансов и будете иметь бэкап продакшена малыми средствами. Помните, что снятие AMI не всегда возможно без выключения машины - внимательнее с этим.

    2. Если вам важны DNS записи и IP адреса - вы держите псевдостатическую инфраструктуру в облаке. Образно говоря вы писаете против ветра, поэтому у вас такие проблемы и возникают.
    149686259319835867.jpgЭто ваш жареный петух техдолг и он уже начинает подбираться к вашей пятой точке, судя по вашим вопросам.
    Правильный подход с точки зрения AWS - динамика, но если вы собираетесь и дальше стрелять себе в ногу - ваш выход - автоконфигурация (чем угодно, хоть скриптами в юзердате, хоть ansible,chef,puppet,etc) статического адреса и DNS имени после старта машины. Данные об IP и прочих можно забирать через describe-tags на AMI из того же aws cli
    Ответ написан
    Комментировать
  • Почему Terraform требует либо nat instance id либо instance id, либо internet gateway id?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Вадим
    https://www.terraform.io/docs/providers/aws/r/rout...
    Обратите внимание что у блока route два аргумента а у вас - один. В общем и целом, нужно не только указать CIDR который маршрутизировать но и через что его направить
    Ответ написан
    Комментировать
  • Счего начать изучение DevOps?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Saboteur неплохо ответил(что не отменяет того что все остальные ответившие тоже правы)
    Девопс - это практики. Это не набор инструментов( инструменты используются на определенных этапах, реализация которых необходима для приближения к идеалу), однако определенные необходимые инструменты опять же есть.
    Про девопс можно прочитать очень много информации, но я, как админ (win-админ :D) вижу ситуацию для вас, как и любого, с опсовой основой, примерно так:
    1. Жирным вы выделили вопросы который для вас вот конкретно сейчас не играют ни малейшей роли. Дмитрий Шицков и Saboteur написали почему: зависит от проекта.
    2. Завет любого ops-а: автоматизируй всё что можно
      Если выбор между configuration management (chef, ansible, puppet и тд) и скриптами - то лучше первое. Хотя и тут можно поспорить, у меня в проекте chef-ом автоматизированное не очень-то используется на последнем этапе доставки в прод, поскольку мы все равно запечатываем машину и запускаем в AWS с asg без пост-конфигурации. Тут можно до посинения спорить хорошо это или нет, но скрипты в идеальном мире проигрывают DSL
    3. Вы пишете код для автоматизации
      Вам понадобится git (который тянет за собой git-хостинг: bitbucket, github, gitlab и тп.) и навыки правильной работы с гитом. Для отслеживания и планирования изменений - понадобится какой-нибудь таск трекер (jira, таск трекер встроенный в gitlab, что-то другое).
    4. Инфраструктура как код
      Автоматизируй всё означает автоматизацию развертывания инфраструктуры
      Здесь уже вступают в силу особенности вашего окружения - в облаках вы скорее всего захочете использовать terraform или, например, CloudFormation в AWS - встроенное средство оркестрации, или же будете сразу все запускать в контейнерах - docker , kubernetes используя соответствующие инструменты.
    5. Мониторинг
      Без правильного и подходящего вашему продукту мониторинга(+логирования) жить нельзя. И это было еще до DevOps тренда - это классика администрирования. Здесь ничего не посоветую, с Zabbix-ом сам не ужился, переехал на influx и прилегающие (TICK stack). Для логирования - graylog, ELK. В некоторых частях используется prometheus который в том числе и для кубера удобен. В общем - с чем подружитесь.


    Это только то, что вы уже должны знать и вам легче будет к ним приступить.
    Будете хорошо ориентироваться (не только знать, но и выбрать правильные инструменты, уметь построить правильный пайплайн) - вас с руками оторвут, несмотря на то что вы можете быть слабы в других областях (тестирование, билд и проч.)

    Для примерного осознания всего цикла можно посмотреть на (картинка относительно рандомная,таких много, два года назад я ориентировался по другой, с более подходящим мне списком инструментов, но найти не могу =( )
    Slide1.jpeg

    P.S. Еще раз хочу отметить что описанное выше основано на личном опыте и это - движение в devops со стороны ops. Есть те, кто сразу пытаются строить все по девопсу параллельно обучаясь опсовой части и девелоперской( видел таких, не у всех получалось ). Есть те, кто двигается в девопс со стороны Dev. Все будут иметь разные мнения что важно для того, чтобы начать
    Ответ написан
    1 комментарий
  • Чем сисадмин отличается от devops?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Наиболее близко отвечает InoMono но советую всем углубиться в ветку комментариев, поскольку изначальный ответ очень мутный, а в комментах есть нормальные и внятные пояснения от него же самого.

    Ответ на вопрос ТС, если кратко: то что пишется в вакансиях "devops инженер" и других "devops-другое слово" по сути - только хотелки конкретной компании по организации devops процессов. Например, им нужен тот кто настроит уже упомянутые ci\cd и, что наиболее важно для бизнеса, сократит время выкатки кода на живую до минимума, убрав, в том числе кучу ручного труда(что есть потери по времени, а значит и деньгам).
    В чем отличие соответственно с сисадмином?
    Сисадмин - это явный ops и от него по умолчанию не требуется заниматься процессами доставки кода.
    Вы можете работать на небольшом заводе, иметь свою серверную с набором серверов, заниматься внешней почтой, веб серверами, ip телефонией на asterisk и еще кучей явно опсовских активностей, и не иметь отношения к доставке какого-либо кода, поскольку у вас в штате есть только один вид программиста - 1с-ник. Вполне может быть что этот программист - тоже вы :D
    Вы можете заниматься развертыванием веб серверов со всеми прилегающими в небольшой веб-студии, и тоже быть только сисадмином. Но тут вы скоро вымрете, вы здесь не нужны: как только возникает потребность доставлять код (особенно если он пишется не одним человеком) - тогда и возникает необходимость налаживать процессы из девопс практик.
    P.S. никто вам не мешает использовать практики Infrastructure as a code и другие из devops и вообще поднимать всю инфраструктуру терраформом. Никто не мешает вам настраивать сервера с помощью chef\puppet\ansible, будучи сисадмином - это ваш плюс, ваш шаг к полной автоматизации вашей работы. Девопс, однако, на вашем заводе вы все равно не построите.
    Ответ написан
    Комментировать
  • AWS: Как передавать большие файлы (например, конфиги) в USERDATA при создании LaunchConfiguration?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    1. AMI
    Все плюсы и минусы вам расписали.
    2. S3 bucket
    Поддерживает шифрование, в том числе и клиентским(вашим) ключом - вы можете свободно положить в приватный бакет всю необходимую секретную информацию и простым aws s3 cp в юзердате всё получить.
    Обновление сертификатов и конфигов, соответственно, просто перезаливкой в бакет и пересозданием инстансов ASG
    Это вместо некоего веб хранилища.
    3. SSM parameters
    Можно перед развертыванием ASG инициализировать параметры вашего окружения, вплоть до сертификатов в зашифрованных ключах SSM и при развертывании забирать значения из SSM
    Более сложно чем бакет, поскольку предназначается для кросс-датацентрового обмена секретами.

    В вашем случае наилучшим решением будет s3 бакет, а самым простым и быстрым в реализации - AMI
    Для того чтоюы не передавать access key и secret key для работы с амазоном в юзердате - используйте aws instance profile с нужными инстансу политиками.
    Ответ написан
    Комментировать