Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Комментарий автора: Основная цель доклада — рассказать о методах построения инфраструктуры (Configuration Synchronization/Immutable infra) и сравнить их.

Ansible используется в качестве примера одного из инструментов синхронизации конфигурации.

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

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

Еще раз повторю - доклад не об инструментах, а о подходах и принятии решений "от проблемы", а не от "инструмента" Отказ от ответственности: Этот доклад сложен тем, что он готовится для российской аудитории, которая работает в несколько специфических условиях.

Всех этих вещей мы коснемся во время презентации.

В России специфическое использование инфраструктуры, потому что люди в основном не живут на Амазонке.

Есть компании, которые там живут, но их мало.

И это ограничение.

Это нужно учитывать во всех отчетах, связанных с развертыванием инфраструктуры, чтобы не говорить: «Ребята, давайте в облако, в AWS все будет хорошо», а тут сидит толпа людей, которые не могут иди туда.

Российская аудитория кажется очень специфичной.

А те отчеты, которые принимаются в Европе, не всегда принимаются в России.

Возможно, это связано с особым восприятием этой аудитории.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Всем привет! Спасибо, что пришли послушать! Сегодня мы обсудим, почему я не рекомендую людям изучать Ansible. Давайте разберемся.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Что не так с Ansible? Давайте разберемся.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Еще несколько оговорок.

Первое предупреждение заключается в том, что данная презентация не предназначена для сравнения каких-либо инструментов.

То есть это не Ansible vs Terraform, Ansible vs CloudFormation, Ansible vs Chef и т. д.

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Тогда вы, возможно, сейчас думаете: «О чем тогда это могло бытьЭ»

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Еще один отказ от ответственности:

  • Эта презентация основана на нашем опыте консалтингового агентства FivexL.
  • Это именно то, что мы рекомендуем клиентам сегодня.

  • Все сказанное в данной презентации является моим субъективным мнением, а также мнением моих коллег.

    И это вполне прагматично.

  • Серебряной пули тоже не существует, т. е.

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

    К этому нужно, как говорят британцы, отнестись скептически.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

И я опять не про Ансибл?

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Давайте поговорим об Ансибле.

Мы перейдем на страницу Ansible. Я сделал этот снимок ее 2 дня назад, так что это совсем недавно.

Можем попытаться разобраться, что это за инструмент Ansible и для чего он используется.

На этой странице мы видим, что его можно использовать для развертывания приложений, управления конфигурацией и оркестрации задач.

И все это работает либо через OpenSSH, либо через WinRM. Но это не отвечает на вопрос: «Зачем нам его использовать, какую проблему он решаетЭ»

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Итак, мы можем перейти на страницу вариантов использования.

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

Мы видим, что его рекомендуется использовать для инициализации серверов, управления их конфигурацией, а также для распространения там приложений.

И что-то можно сделать для обеспечения безопасности и оркестрации.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Наши клиенты часто приходят к нам с разными желаниями.

Они говорят: «Давайте воспользуемся этим инструментом».

А мы им говорим, что давайте отойдем от проблемы и разберемся в контексте.

Далее мы разберемся с методами, которые будут уместны в данном контексте.

А дальше выберем инструмент, т. е.

не будем начинать с инструмента.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

И если переварить все, что мы только что видели на слайдах относительно Ansible, то можно понять, что проблема в автоматизации ИТ-изменений.

Соответственно, под контекстом они подразумевают либо аппаратные серверы, либо виртуальные машины.

Предполагается использовать метод инфраструктуры как синхронизацию кода и конфигурации.

И они предлагают использовать инструмент Ansible.

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Многие из вас думают, что с помощью Ansible можно сделать гораздо больше вещей.

Вы также можете настроить AWS. Kubernetes также возможен.

Вы также можете настроить HashiCorp Vault. Если хотите, вы можете сделать все с помощью Ansible.

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Но тогда стоит задуматься о том, станет ли Ansible решением проблемы и в том контексте, который вы решаете.

То есть нужно отстраниться от проблемы.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

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



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Мы не хотим оказаться в такой ситуации.

Плюс каждый раз, когда ты немного выходишь за рамки мейнстрима, нужно думать о последствиях.

Поставщик, предлагающий вам инструмент, расскажет вам, как вы можете его использовать.

Вы можете попробовать влево и вправо и сделать что-то по-другому.

Но нужно всегда думать: «Я сейчас сделаю так, а потом начну что-то терять.

Если я пойду в другом направлении по сравнению с сообществом, то я потеряю именно то, чему научится сообщество, то есть потеряю некоторые инсайты».



Потом подумайте: «То, что я делаю, немного на стороне, каковы перспективы долгосрочной поддержки? Могу ли я найти кого-то, кто захочет работать с этим в будущем? Кроме того, ваш начальник может быть счастливее, если вы сосредоточитесь на чем-то полезном для бизнеса, а не на необходимости делать что-то второстепенное, когда вы можете использовать другой инструмент, который лучше подходит для этого.

Это вещи, над которыми стоит задуматься.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Именно поэтому в рамках этой конфигурации мы будем рассматривать Ansible как инструмент управления конфигурацией, который используется для подготовки серверов с целью распределения приложений по этим серверам.

Плюс вы можете запускать задачи, он это умеет.

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Мы часто будем возвращаться к этому слайду и говорить о проблеме, которая остается неизменной, ведь мы тоже хотим автоматизировать изменения в ИТ.

Но в этой презентации я заявляю, что наш контекст меняется, наши методы меняются.

И поэтому выбор инструмента может быть разным.

Давайте разберемся.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Меня зовут Андрей Девяткин.

Я называю себя специалистом по облачной инженерии.

В частности, я работаю с инструментами AWS и HashiCorp. Этим летом я выступал на HashiConf, потому что это было очень круто.

Я также являюсь основателем консалтингового бренда FivexL. Я часто выступаю на конференциях.

А еще у нас есть англоязычный подкаст

Андрей Девяткин"> DevSecOps



, где мы с двумя друзьями рассказываем о том, что происходит сейчас, и пытаемся во всем разобраться.

Мы пытаемся выяснить, что работает, а что нет. Это честный разговор, который мы записываем.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

В этой презентации у нас будет много материала, который нам понадобится.

Эту презентацию я разделил на 5 этапов, которые мы сейчас и пройдём.

На первом этапе будем говорить, что единственной константой является изменение.

На втором этапе мы поговорим о том, что синхронизация конфигурации является неизбежным злом.

На третьем этапе мы поговорим о неизменяемой инфраструктуре и о том, что это, скорее всего, самая подходящая практика, которая у нас есть сегодня.

Давайте поговорим о том, что появляются новые пути, новые контексты и новые методы.

Плюс давайте поговорим о том, что будущее уже здесь.

Просто оно распределено неравномерно.

Поехали, начнем с первого.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Мы посмотрим на картину в целом и попытаемся понять, почему в ИТ происходят такие изменения, которые нам необходимо автоматизировать.

Представьте себе ситуацию, когда у потребителя есть какое-то желание, которое ему необходимо удовлетворить.

И есть предприниматель.

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

Он тестирует какую-то бизнес-модель и предлагает потребителю продукт или услугу.

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

Но это неправда.

Поэтому у нас есть конкуренция, то есть есть люди, которые приходят на рынок, видят, что сделал предприниматель, и делают примерно то же самое, а может быть, даже лучше.

И они пытаются захватить рынок.

Например, мы начали с AWS в облаках, потом пришел Google, потом пришел Amazon, Alibaba, Яндекс, Сбер и т. д. Если бы не пришли другие игроки, то у Amazon была бы полная монополия, он бы просто зарабатывал деньги.

Но этого не происходит. Комментарий автора: Пришёл Google, потом пришёл Amazon, Alibaba - под Amazon я имел в виду Azure Поэтому вам постоянно приходится меняться, вам постоянно приходится конкурировать с другими.

Плюс сам рынок меняется.

Рынок может быть насыщен.

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

Для них рынок фундаментально изменился.

Поэтому бизнесу постоянно приходится меняться.

И изменения будут постоянно продолжаться.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

И каждое изменение приносит энтропию.

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



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

А если мы посмотрим словарь, то энтропия – это мера хаоса, это процесс разрушения, процесс деградации, когда материя во Вселенной приходит в предельное состояние, т. е.

когда все полностью переходит в хаос.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Возможно, вы сейчас сидите и думаете: «Какое это имеет отношение к AnsibleЭ»

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

И здесь нужно задаться вопросом: «Как позволить бизнесу быстро меняться, но при этом минимизировать энтропиюЭ»

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

И тут мы можем подумать: «DevOps!» «Инфраструктура как код!» «Анзибль!», наконец.

Но что мы делаем сейчас? Мы просто выкрикиваем термины, которые приходят нам в голову.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

И мы должны следовать этой схеме.

Мы должны отойти от проблемы.

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



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Итак, мы поговорим немного о временной конфигурации и энтропии.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

В нашей области энтропию называют дрейфом конфигурации.

И впервые я встретил это определение, когда читал книгу Кейфа Морриса»

Андрей Девяткин"> Инфраструктура как код



«Это не он придумал это определение.



PuppetLabs были первыми, кто использовал этот термин, поэтому атрибуты им подходят.

Идея в том, что дрейф конфигурации накапливается и понемногу серверы отклоняются, отклоняются, отклоняются от первоначальной конфигурации из-за того, что люди что-то там делают руками, делают обновления, тестируют новые приложения, приложения могут что-то оставить после себя.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Тогда из-за энтропии, из-за дрейфа конфигурации сервер в какой-то момент может прийти в состояние сервера-снежинки.

Это то, что придумал Мартин Фаулер в свое время.

Сервер-снежинка — это сервер, прошедший точку невозврата.

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

И каждый раз к нему страшно прикасаться.

Он уникален и очень хрупкий.

Думаю, у многих были моменты, когда они сталкивались с такими серверами-снежинками.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Почему это проблема? Это проблема, потому что стабильность системы нарушена, т. е.

мы не можем устанавливать приложения на эти сервера и иметь 100% гарантию, что все пройдет гладко, потому что всегда есть что-то неизвестное.



Кроме того, каждый раз, когда возникает некоторая неопределенность и что-то идет не так, мы отвлекаем наши ресурсы от продуктивной работы: от работы над новым функционалом, от работы над улучшениями инфраструктуры, которые будут служить клиенту и позволят бизнесу двигаться вперед.

И, как я уже сказал, это влияет на нашу способность выпускать новые версии приложения.

Посмотрите на это как на технический долг в инфраструктуре.

Это также влияет на наше MTTR (среднее время восстановления), то есть на то, насколько быстро мы можем восстановиться после инцидента.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Я приведу вам несколько примеров.

Например, вы могли получить письмо счастья от AWS, в котором говорилось, что оборудование, на котором установлен ваш экземпляр EC2, ухудшилось, и они собираются его уничтожить.

А если у вас там будет такой сервер-снежинка, то день может стать гораздо интереснее, чем был.

На Amazon все не так плохо.

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

А если у вас вдруг выйдет из строя жесткий диск на железном сервере, то это уже менее смешно.

Например, у вас был второй

Андрей Девяткин"> контузия



и нужно все кардинально патчить.

И тут могут возникнуть различные казусы, потому что патчи не проходят, т. е.

вам сложно это сделать.

У моего коллеги Артема была ситуация с серверами-снежинками, на которых были драйверы графического процессора.

Эти серверы каким-то образом настраивались вручную, но как они это сделали, никто не знает. Необходимо было обновить драйвера графического процессора.

И это было великолепное приключение.

Это заняло гораздо больше времени, чем следовало бы.

Например, в вашей сети появился злоумышленник.

И вам нужно разобраться и разобраться, что происходило на этом сервере.

Эти файлы должны быть здесь или Вася их положил? Должны ли они находиться в этом состоянии и в этом каталоге или их свойства были изменены? Должно ли быть так?

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Мы говорим сейчас в контексте серверов и виртуальных машин.

А господа, о которых мы говорили ранее, говорили в терминологии серверов и виртуальных машин начала 2010-х годов.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Так что же нам с этим делать?

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Обычный способ — инфраструктура как код. А в книге «Инфраструктура как код» сформулированы 4 принципа:

  1. Все элементы инфраструктуры должны быть воспроизводимыми, то есть мы должны иметь возможность их воспроизводить.

  2. Поскольку мы можем их воспроизводить, мы должны иметь возможность их выбросить.

    Они должны быть одноразовыми.

  3. А благодаря тому, что мы настраиваем в виде кода, наша инфраструктура будет согласованной.

  4. Плюс у него нет конечного состояния.

    Когда мы проектируем нашу инфраструктуру, мы понимаем, что то, что мы знаем сегодня, ограничено и может измениться завтра.

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

    Это то, что изменится, поэтому нам нужно подумать о том, как мы изменим это завтра.

    И вы должны быть готовы это изменить.

Это 4 принципа, на которых основана инфраструктура как код.

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

А если мы посмотрим на определение из Википедии, там сказано, что инфраструктура как код — это когда мы описываем всю нашу инфраструктуру в файлах.

Эти файлы машиночитаемы, то есть некоторые инструменты могут прочитать эти файлы и затем перевести все, что в этих файлах написано, а затем пойти и настроить системы так, как мы это описали.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Технически мы используем методы разработки ПО — одну конфигурацию.

Все те же приемы, т. е.

так же, как мы разрабатывали код, как мы разрабатывали продукт, мы делаем то же самое с инфраструктурой, используя те же приемы.

Мы можем проводить обзоры кода, запускать CI и так далее.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

И наш шаблон медленно заполняется, т. е.

мы говорим в контексте аппаратных серверов и виртуальных машин.

Мы используем infra в качестве кода.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

А про синхронизацию конфигурации я обещал рассказать и давайте об этом поговорим.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Было несколько поколений инструментов настройки.

Не буду называть численность этого поколения, но было конкретно выделенное поколение: Марионетка, Шеф.

Ansible и SaltStack появились чуть позже.

Это именно те инструменты, которые работали с синхронизацией конфигурации.

Сейчас мы увидим, что это значит. Специфика этих инструментов заключается в том, что они автоматизируют подготовку.

И чаще всего им требуется небольшая дополнительная настройка.

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

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Эту картинку я взял из статей Мартина Фаулера.

Это отличные картинки, ссылки ниже, если вы хотите прочитать всю статью.

Именно так работает конфигурация синхронизации.

У нас есть образ сервера.

Загружаем его на сервер.

Наш сервер запущен.

А затем мы используем инструмент синхронизации конфигурации, чтобы применить изменения.

Вот почему это так называется.

У нас есть конфигурация в нашем репозитории, и мы запускаем ее для синхронизации на сервере.

И каждый раз, когда нам нужно сделать что-то новое, мы меняем это в репозитории и запускаем инструмент. И он синхронизирует его на сервере.

Если мы не уверены, как он туда попал, мы запускаем его еще раз и делаем еще одну синхронизацию.

Опасность здесь в том, что мы не отслеживаем все файлы на сервере.

Всегда есть вероятность, что кто-то пошел и исправил это своими руками, и это выходит за рамки ответственности инструмента.

Все это накапливается и накапливается.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

И это может привести к возникновению спирали страха перед автоматизацией.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Как это работает? Вы вносите изменения вне своего инструмента, с которым синхронизируете конфигурацию.

Ваши серверы становятся немного непоследовательными.

И тогда вы начинаете бояться запускать свой инструмент, потому что что-то может пойти не так: что-то может сломаться, если вы его запустите.

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



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Давайте посмотрим, как человеческая мысль развивалась дальше.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Потом те же ребята из ThoughtWorks придумали сервер Phoenix,

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Идея та же: делаем все то же самое, что и при настройке синхронизации, но в какой-то момент периодически убиваем этот сервер, полностью удаляем с него все, перерисовываем сервер и затем запускаем наш инструмент. Таким образом, мы сбрасываем накопившийся дрейф конфигурации.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Мы можем сделать еще один шаг вперед.

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Мы можем поместить все изменения, все конфигурации, которые у нас есть в образ сервера и накатить прямо на сервер.

И после этого не вносим никаких изменений, а просто удаляем один раз в определенный промежуток времени.

Если нам нужно внести какие-то новые изменения, мы создаем новый образ сервера и перекатываем его на сервер.

То есть мы не синхронизируем конфигурацию, мы либо поднимаем новую виртуалку из нового образа, либо вайпируем (вайпируем) сервер и выкатываем новый образ.

Поэтому для переключения трафика требуется несколько серверов.

Но за счет этого вы минимизируете количество дрейфа конфигурации.

И еще одно преимущество, которое вы от этого получаете, заключается в том, что люди больше не хотят заходить на сервер через SSH, потому что они знают, что в какой-то момент сервер будет уничтожен и все внесенные ими изменения будут потеряны.

И вместо того, чтобы спросить, где находится SSH-ключ, вас уже спрашивают, где спек, из которого будет скомпилирован образ для этого сервера.

И это новый уровень диалога.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

  • Если говорить о выгоде, то, как мы уже говорили, дрейф нашей конфигурации стремится к нулю.

  • У нас есть возможность быстрого масштабирования.

    Например, в AWS есть группа автоматического масштабирования.

    Вам нужно поднять новые виртуальные машины.

    И вы не будете их вручную запускать и запускать, а потом настраивать инструментом синхронизации конфигурации, а потом просто пускать в работу.

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

    Вы ничего не теряете, потому что они всегда одинаковы.

    Я не говорю здесь ничего нового.

    Это запеканка против жарки, крупный рогатый скот против домашних животных.

    Все то, что говорилось много раз на конференциях.

  • И ваш уровень безопасности возрастает. Представьте, что в вашу сеть проник злоумышленник.

    И ты этого не заметил.

    И вы обновляете все свои серверы каждую неделю.

    И таким образом, все, что он установил, вы стираете.

    И ему придется каждую неделю повторять все одни и те же мероприятия, чтобы хоть как-то закрепиться в вашей инфраструктуре.

    Плюс, что делают те, кто нападает? Они нападают и сидят очень тихо.

    И они нумеруют все, что у вас есть: «Ага, веб-сервер на том IP-адресе, это на том IP-адресе».

    И для тебя все постоянно меняется.

    Вы постоянно меняете эти серверы, меняете IP-адреса, если находитесь в облаке.

    И им гораздо труднее делать то, ради чего они пришли.

    Например, тонкие боковые движения в вашей сети становятся намного сложнее.

  • Плюс, в связи с тем, что вам нужно минимальное время для подготовки сервера, поскольку все уже есть в образе, вы можете использовать такие варианты, как спотовый экземпляр EC2, если вы находитесь в облаке.

    Даже если спотовый экземпляр вырвется из-под вас, ничего страшного.

    Он поднимется в другой зоне, потому что там все остается по-прежнему, т. е.

    вы ничего не теряете.

    У вас будет 2 минуты на переключение трафика и удаление данного инстанса из ротации.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

И тут вы можете подумать: «Если я использую Ansible, но при этом довольно часто убиваю свои серверы, то, может быть, этого достаточноЭ»

Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Может быть.

Как я уже говорил, эта презентация очень практична.

И мы не идеалисты, мы практики.

Умные книги всегда рисуют вам красивую картину, но жизнь всегда сложнее.

Иногда приходишь к клиенту и думаешь: «Боже мой, что ты наделал! Ужасный!".

Конечно, в глаза людям этого не скажешь.

Нам нужно поговорить и понять, почему они это сделали.

Скорее всего у них были свои причины.

Если бы у всех нас были идеальные условия, мы бы построили идеальные системы.

Но условия не идеальны и часто приходится приспосабливаться.

И как сказал нам угрюмый кот, возможно, это даст вам 80% пользы за 20% усилий.

Каждый выбирает свой путь, основываясь на рамках, о которых мы только что говорили.



Почему Я Советую Людям Не Изучать Ansible. Переход От Синхронизации Конфигурации К Неизменяемой Инфраструктуре. Андрей Девяткин

Андрей Девяткин" alt="Почему я советую людям не изучать Ansible. Переход от синхронизации конфигурации к неизменяемой инфраструктуре.

Андрей Девяткин">

Мы понимаем нашу проблему, наш контекст, наши ограничения.

И теперь мы уже видим, что есть новые методы, из которых мы можем выбирать.

И когда мы работаем в контексте Теги: #terraform #DevOps #ansible #immutableинфраструктура

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2007-05-10 09:05:38
Баллов опыта: 568
Всего постов на сайте: 1
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.