По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Есть большое количество крупных компании с сетью, содержащих более 500 маршрутизаторов Cisco (и тысячи коммутаторов Cisco Catalyst). Какой используется протокол маршрутизации, поддерживающий все эти маршрутизаторы в согласии о доступных маршрутах? Это усовершенствованный протокол маршрутизации внутреннего шлюза (EIGRP). Именно этому посвящена данная статья, которая является первой из серии статей, посвященных EIGRP (Enhanced Interior Gateway Routing Protocol). Эта серия статей рассматривает фундаментальные концепции EIGRP. Все статьи из цикла EIGRP: Часть 1. Понимание EIGRP: обзор, базовая конфигурация и проверка Часть 2. Про соседство и метрики EIGRP Часть 2.2. Установка K-значений в EIGRP Часть 3. Конвергенция EIGRP – настройка таймеров Часть 4. Пассивные интерфейсы в EIGRP Часть 5. Настройка статического соседства в EIGRP Часть 6. EIGRP: идентификатор роутера и требования к соседству Полное руководство по EIGRP в PDF PDF - это удобно 👾 Все статьи из цикла про EIGRP (Enhanced Interior Gateway Routing Protocol) мы свели в единый PDF домкумент, который вы можете скачать и читать в дороге. Книга по EIGRP в PDF | 3.27 MB Основы EIGRP Существует давняя дискуссия о фундаментальной природе EIGRP. По своей сути, является ли EIGRP протоколом маршрутизации состояния канала или протоколом маршрутизации вектора расстояния? Или же это гибридный протокол маршрутизации (то есть комбинация того и другого)? Вы найдете много литературы, поддерживающей идею о том, что EIGRP является гибридным протоколом маршрутизации, утверждая, что соседи EIGRP изначально обмениваются своей полной таблицей маршрутизации, во многом похожей на протокол маршрутизации вектора расстояния, и EIGRP отправляет только обновления маршрутизации на основе сетевых изменений, во многом напоминающие протокол маршрутизации состояния канала. Многие сетевые инженеры пришли к убеждению, что EIGRP-это "продвинутый протокол маршрутизации вектора расстояния". Их рассуждения по этому поводу: рассмотрим фундаментальную характеристику протокола маршрутизации состояния канала, которая заключается в том, что маршрутизаторы поддерживают таблицу топологии, указывающую, как маршрутизаторы связаны между собой. Эти маршрутизаторы (говоря о протоколах маршрутизации, таких как OSPF и IS-IS) затем запускают алгоритм Дейкстры на этой топологии, чтобы определить "кратчайший" путь к целевой сети с точки зрения конкретного маршрутизатора. EIGRP не поддерживает представление о топологии сети и не выполняет алгоритм Дейкстры. Скорее всего, таблица топологии EIGRP содержит список доступных сетей, а также информацию о "расстоянии" до этих сетей. Характеристики EIGRP Давайте начнем наш обзор EIGRP, рассмотрением нескольких основных характеристиках EIGRP: Быстрая конвергенция: если пропадает связь в сети, во многих случаях EIGRP может быстро перенаправить поток данных, обойдя место сбоя связи. Обычно это происходит не более чем за 3 секунды. Эта быстрая конвергенция становится возможной благодаря тому, что EIGRP имеет резервный маршрут к сети, и этот резервный маршрут готов взять на себя управление в случае сбоя основного маршрута. Высокая масштабируемость: в то время как протокол маршрутизации, такой как RIP, имеет ограничение в пятнадцать переходов маршрутизатора, EIGRP может масштабироваться для поддержки очень крупных корпоративных сетей. Балансировка нагрузки с использованием каналов с разной метрикой: по умолчанию и EIGRP, и OSPF балансируют трафик нагрузки по нескольким каналам, ведущим к определенной целевой сети, если стоимость (то есть значение метрики протокола маршрутизации) одинакова. Однако EIGRP может быть настроен для балансировки нагрузки между каналами с неравными стоимостями. Это стало возможным благодаря функции дисперсии. Поддержка маски подсети переменной длины (VLSM): в отличие от RIP версии 1, EIGRP отправляет информацию о маске подсети как часть объявления маршрута. Коммуникации через мультикаст: в EIGRP спикер маршрутизатор взаимодействует с другими EIGRP-спикер маршрутизаторами через мультикаст. В частности, EIGRP для IPv4 использует адрес многоадресной рассылки 224.0.0.10, в то время как EIGRP для IPv6 использует адрес многоадресной рассылки ff02::a. Больше не проприетарный протокол: в то время как Cisco первоначально представила EIGRP как Cisco-proprietary протокол маршрутизации, в последние годы EIGRP был открыт для других поставщиков. В частности, EIGRP стал открытым стандартом в 2013 году, а информационный RFC EIGRP (RFC 7868) был опубликован в 2016 году. Поддержка нескольких протоколов: EIGRP изначально был разработан для поддержки маршрутизации нескольких протоколов, включая IPv4, IPX и AppleTalk. Хотя современные сети редко используют IPX или AppleTalk, EIGRP теперь может поддерживать IPv6, который набирает популярность. Данная поддержка нескольких протоколов становится возможной благодаря Protocol-Dependent Modules (PDM), где существует отдельный PDM, обрабатывающий решения о маршрутизации для каждого маршрутизируемого протокола (например, IPv4 и IPv6). Алгоритм диффузионного обновления (DUAL): алгоритм EIGRP, используемый для отслеживания маршрутов, известных соседним маршрутизаторам. DUAL также используется для определения наилучшего пути к целевой сети (то есть к маршруту-преемнику) и любых приемлемых резервных путей к этой целевой сети (то есть к возможным маршрутам-преемникам). Суммирование: чтобы уменьшить количество записей в таблице топологии EIGRP (или таблице IP-маршрутизации маршрутизатора), EIGRP имеет возможность суммировать несколько сетевых объявлений в одно сетевое объявление. Это обобщение можно настроить вручную. Однако EIGRP имеет функцию автоматического суммирования маршрутов, которая суммирует сети на классовых границах сети. Обновления: полные обновления таблицы топологии EIGRP отправляются при обнаружении новых соседей. В противном случае будут отправлены частичные обновления. Обзор настройки Базовая конфигурация EIGRP очень проста в настройке. На самом деле, для этого требуется только две команды: router eigrp asn network net-id wildcard-mask Команда router eigrp asn запускает процесс маршрутизации EIGRP на маршрутизаторе для автономной системы (AS), заданной переменной asn. Эта команда также переводит вас в режим настройки маршрутизатора. Оттуда вы можете выполнить вторую команду, network net-id wildcard-mask. Эта вторая команда использует комбинацию сетевого адреса и маски подсети для указания диапазона одного или нескольких IP-адресов, и любой интерфейс маршрутизатора, чей IP-адрес принадлежит этому диапазону IP-адресов, затем участвует в процессе маршрутизации EIGRP. Тем не менее, существуют некоторые правила и модели поведения, которые следует учитывать при выполнении этих команд: EIGRP-спикер маршрутизаторы должны быть такими же, как и для формирования соседства. После того как маршрутизатор включает EIGRP на интерфейсах, соответствующих команде network EIGRP, он пытается обнаружить соседей с помощью многоадресной рассылки приветственных сообщений EIGRP. Если в команде network не указана маска подсети, то указанный сетевой адрес должен быть классовым сетевым адресом. Если в команде network не указана маска подсети, а указан классовый сетевой адрес, то все интерфейсы, IP-адреса которых подпадают под классовую сеть (например, 172.16.1.1 /24 подпадает под 172.16.0.0 /16), будут участвовать в процессе маршрутизации EIGRP. Чтобы проиллюстрировать эти понятия, рассмотрим следующий пример: Конфигурация EIGRP на маршрутизаторах OFF1, OFF2 и OFF3 ! Router OFF1 router eigrp 1 network 10.1.1.0 0.0.0.З network 10.1.1.5 0.0.0.0 network 192.0.2.0 ! Router OFF2 router eigrp 1 network 10.0.0.0 network 198.51.100.0 ! Router OFFЗ router eigrp 1 network 0.0.0.0 Конфигурация EIGRP на маршрутизаторах OFF1, OFF2 и OFF3 начинается с команды router eigrp 1. Эта команда говорит каждому маршрутизатору начать процесс маршрутизации EIGRP в автономной системе 1. Поскольку номера автономной системы должны совпадать между EIGRP-спикер-соседями, все три маршрутизатора используют один и тот же номер автономной системы 1. Кроме того, обратите внимание, как меняется конфигурация при использовании команды network: Команда network 10.1.1.0 0.0.0.3 на роутере OFF1 На маршрутизаторе OFF1 команда network 10.1.1.0 0.0.0.3 задает сетевой адрес 10.1.1.0 с обратной маской 0.0.0.3, которая соответствует 30-битной маске подсети (то есть маске подсети 255.255.255.252). Поскольку IP-адрес интерфейса Gig 0/1 маршрутизатора OFF1 10.1.1.1 / 30 попадает в эту подсеть, этот интерфейс проинструктирован участвовать в процессе EIGRP. Команда network 10.1.1.5 0.0.0.0 на роутере OFF1 Команда network 10.1.1.5 0.0.0.0 указывает конкретный IP-адрес, а не всю подсеть (или можно утверждать, что это подсеть, содержащая один IP-адрес). Мы знаем, что он указывает только один IP-адрес из-за маски подсети 0.0.0.0. Напомним, что в маске подсети мы имеем ряд непрерывных нулей, за которыми следует ряд непрерывных единиц (в двоичном коде). Двоичные нули соответствуют позиции битов в IP-адресе, определяющие адрес сети, а бинарные единицы соответствуют позиции битов в IP-адресе, который указывает адрес узла. Однако в том случае, когда у нас все нули, как в нашем случае, у нас есть сеть с одним и только одним IP-адресом (то есть маска подсети равна /32). Поскольку IP-адрес совпадает с IP-адресом интерфейса Gig 0/2 маршрутизатора OFF1, этот интерфейс также участвует в процессе маршрутизации EIGRP. Команда network 192.0.2.0 на роутере OFF1 Последняя команда network на маршрутизаторе OFF1 - это network 192.0.2.0. Интересно, что эта команда фактически была введена как сеть 192.0.2.0 0.0.0.255, но поскольку 0.0.0.255 является обратной маской, соответствующей маске подсети по умолчанию сети класса C (в данном случае 192.0.2.0 /24), она подразумевается, но не показывается. IP-адрес интерфейса Gig 0/3 маршрутизатора OFF1 192.0.2.1 / 24 действительно попадает в подсеть класса C, заданную командой network. Таким образом, Gig 0/3 также начинает участвовать в процессе маршрутизации EIGRP маршрутизатора OFF1. Команда network 10.0.0.0 на роутере OFF2 Команда network 10.0.0.0 на маршрутизаторе OFF2, не имеет обратной маски. Однако помните, что из ранее обсуждавшейся команды network (на маршрутизаторе OFF1) обратная маска подсети не отображается, если она отражает естественную маску заданной подсети. Основываясь на этой логике, мы можем заключить, что если мы намеренно опустим аргумент обратной маски из команды network, то предполагаемая обратная маска будет маской подсети, соответствующей классовой маске подсети сети, указанной в команде network. В этом случае первый октет сети, указанный в команде network address, равен 10. 10 в первом октете адреса указывает, что мы имеем дело с адресом класса А, который имеет маску подсети по умолчанию 255.0.0.0 и, следовательно, обратную маску по умолчанию 0.0.0.255. Поскольку интерфейсы Gig 0/1 и Gig 0/2 маршрутизатора OFF2 подпадают под этот классовый сетевой оператор, оба интерфейса участвуют в процессе маршрутизации EIGRP маршрутизатора OFF2. Команда network 198.51.100.0 на роутере OFF2 Как и предыдущая команда network, команда маршрутизатора OFF2 network 198.51.100.0 была введена без указания обратной маски. Поскольку первый октет адреса равен 198, мы можем заключить, что у нас есть сеть класса C, чья маска подсети по умолчанию равна 255.255.255.0, а обратная маска по умолчанию равна 0.0.0.255. IP-адрес (198.51.100.1 /24) интерфейсного Gig 0/3 на маршрутизаторе OFF2 живет в пределах указанной подсети 198.51.100.0 /24. Таким образом, интерфейс участвует в процессе маршрутизации EIGRP. Команда network 0.0.0.0 на роутере OFF3 Напомним, что оператор network EIGRP, вопреки распространенному мнению, не указывает сеть для объявления. Скорее, он определяет диапазон одного или нескольких IP-адресов, и любой интерфейс с IP-адресом в этом диапазоне проинструктирован участвовать в процессе маршрутизации EIGRP. Это означает, что, если мы хотим, чтобы все интерфейсы на маршрутизаторе участвовали в одном и том же процессе маршрутизации EIGRP, мы могли бы дать команду network 0.0.0.0, чтобы указать все возможные IP-адреса. Поскольку IP-адрес каждого отдельного интерфейса подпадает под категорию "все возможные IP-адреса", все интерфейсы на маршрутизаторе OFF3 проинструктированы участвовать в процессе маршрутизации EIGRP. Кроме того, сетевые адреса этих участвующих интерфейсов (вместе с информацией о подсети для этих сетевых адресов) затем объявляются через EIGRP. Проверка Процесс проверки EIGRP - это нечто большее, чем просто проверка того, что между всеми маршрутизаторами сформировались соседские отношения и что все маршрутизаторы изучили все маршруты в сети. Процесс верификации должен помочь нам убедиться в том, что наши изначальные требования были выполнены. Например, нам нужно найти соответствующие маршруты, определенные интерфейсы и конкретных соседей, которые будут отображаться в таблицах EIGRP. Как только определимся с нашими изначальными целями проектирования и ожидаемыми результатами, мы можем применить команды проверки EIGRP, показанные в таблице ниже: Ключевые команды проверки EIGRP В следующих примерах показаны результаты выполнения каждой из этих команд после их выполнения на маршрутизаторе OFF1, показанном в предыдущей топологии. Вывод результатов команды show ip route на маршрутизаторе OFF1: Обратите внимание, как маршруты, изученные с помощью EIGRP, показаны с литерой D в левом столбце. Этот код D указывает на маршрут, изученный через EIGRP. Эти маршруты включают 10.1.1.8/30, 198.51.100.0/24 и 203.0.113.0 /24. Также обратите внимание на выделенные числовые значения 90 в каждом EIGRP-изученном маршруте. 90 - это административное расстояние EIGRP (то есть его правдоподобность по сравнению с другими источниками маршрутизации), где более низкие значения административного расстояния предпочтительны по сравнению с более высокими значениями. Вывод из команды show ip protocols на маршрутизаторе OFF1 Вывод информации команды show ip protocols на EIGRP-спикер маршрутизаторе, как видно выше, предлагает нам несколько точек данных. Например, в разделе Routing for Networks: вы видите список сетей, указанных командой network в режиме конфигурации EIGRP. В разделе Routing Information Sources: вы можете видеть IP-адреса соседей EIGRP, которые являются 10.1.1.2 (то есть маршрутизатором OFF2) и 10.1.1.6 (то есть маршрутизатором OFF3) нашей топологии. Также в этом разделе вы можете увидеть административное расстояние (AD) до наших соседей. Поскольку эти соседи являются EIGRP-спикер маршрутизаторами, у них есть EIGRP AD по умолчанию 90. Наконец, обратите внимание на метрический вес K1=1, K2=0, K3=1, K4=0, K5=0 части выходного сигнала. В следующей статье мы узнаем, как EIGRP вычисляет свою метрику и как этот расчет включает в себя K-значения. Вывод из команды show ip eigrp interfaces на маршрутизаторе OFF1 Выходные данные show ip eigrp interfaces, рассмотренные выше, указывают на то, что Gig 0/1, Gig 0/2 и Gig 0/3 маршрутизатора OFF1 участвуют в процессе маршрутизации EIGRP. В частности, этот процесс предназначен для EIGRP AS 1. Также обратите внимание, что соседство EIGRP было установлено с другим маршрутизатором, подключенным от интерфейса Gig 0/1 маршрутизатора OFF1, и другим от интерфейса Gig 0/2. Доказательством этих соседских отношений является наличие числа, превышающего 0 в колонке Peers. Поскольку интерфейс Gig 0/3 маршрутизатора OFF1 не формировал соседство с любыми другими маршрутизаторами, говорящими на EIGRP, в его столбце Peers стоит 0. Вывод из команды show ip eigrp neighbors на маршрутизаторе OFF1: В то время как выводимые данные из команды show ip eigrp interfaces указывали, что у нас было несколько соседей EIGRP, выходные данные из команды show ip eigrp neighbors, как видно выше, предлагают более подробную информацию об этих соседях. В частности, сосед, связанный с интерфейсом маршрутизатора OFF1 по Gig 0/1, имеет IP-адрес 10.1.1.2, а сосед соединен с интерфейсом маршрутизатора OFF1 по Gig0/2 имеет IP-адрес 10.1.1.6. Вывод из команды show ip eigrp topology [all-links] на маршрутизаторе OFF1: Одной из наиболее распространенных команд, используемых для проверки EIGRP и устранения неполадок, является show ip eigrp topology, как показано в приведенном выше примере. Выходные данные этой команды показывают маршруты-преемники (то есть предпочтительные маршруты) и возможные маршруты-преемники (то есть резервные маршруты), известные процессу маршрутизации EIGRP. Пожалуйста, имейте в виду, что появление маршрута в таблице топологии EIGRP не гарантирует его присутствия в таблице IP-маршрутизации маршрутизатора. В частности, маршруты-преемники, присутствующие в таблице топологии EIGRP, являются только кандидатами для попадания в таблицу IP-маршрутизации маршрутизатора. Например, маршрутизатор может обладать более достоверной информацией о маршрутизации для сети, такой как статически настроенный маршрут с административным расстоянием 1. Если EIGRP действительно является наиболее правдоподобным источником маршрутизации для конкретной сети, то эта сеть будет введена в таблицу IP-маршрутизации маршрутизатора. Кроме того, обратите внимание, как добавление аргумента all-links в приведенном выше примере показывает еще больше маршрутов (они выделены). Разница заключается в том, что аргумент all-links предписывает команде show ip eigrp topology отображать все изученные EIGRP маршруты, даже если некоторые из маршрутов не считаются маршрутами-преемниками или возможными маршрутами-преемниками. Теперь, когда вы знаете базу, почитайте про соседство и метрики EIGRP
img
Основная цель любого проекта по разработке ПО – получить прибыль за счет автоматизации бизнес-процессов. Чем быстрее вы начнете выпускать новые версии, тем лучше для компании. Но как же научиться выпускать новые версии максимально быстро? Конечно же, все можно делать вручную. Например, подключить удаленный сервер через SSH, клонировать клонировать репозиторий с новым кодом, собрать его и запустить через командную строку. Да, такой способ работает, но он малоэффективен. Сегодня мы поговорим об автоматизации процесса разработки и выхода новых версий. CI и CD – это два сокращения, которые означают Continuous Integration (Непрерывная интеграция) и Continuous Delivery (Непрерывное развертывание). CI CI описывает процесс добавления изменений в репозиторий. Ниже схематически представлен простой пример коллективной разработки. Одновременно может работать целая группа людей, но все изменения передаются в главную ветку master поэтапно. Хотя даже в такой простой схеме возникает несколько вопросов. Как мы узнаем, что код, который идет в ветку master, компилируется? Мы хотим, чтобы разработчики писали тесты для кода. Как быть уверенными в том, что тестовое покрытие не уменьшится? Все сотрудники команды должны форматировать код в соответствие с определенным стилем. Как отследить возможные нарушения? Конечно же, все это можно проверить вручную. Но такой подход весьма хаотичен. Кроме того, по мере разрастания команды выполнять подобные проверки становится сложнее. CI используется для автоматизации выше обозначенных пунктов. Начнем с первого пункта. Как можно проверить, что новые изменения не сломают сборку? Для этого нам потребуется еще один блок в схеме. Большинство CI-процессов можно описать по следующему алгоритму. При открытии каждого Pull Request (запроса на включение изменений) и отправке новых изменений, Git-сервер отправляет уведомление CI-серверу. CI-сервер клонирует репозиторий, проверяет исходную ветку (например bugfix/wrong-sorting) и сливает ее с основной веткой master. Затем запускается скрипт сборки. Например ./gradlew build. Если команда возвращает код «0», то сборка прошла успешно. Все остальные значения считаются ошибкой. CI-сервер отправляет запрос на Git-сервер с результатом сборки. Если сборка прошла без ошибок, то Pull Request разрешается слить. В противном случае он блокируется. Данный процесс гарантирует, что код, попадающий в ветку master, не сломает дальнейшие сборки. Проверка тестового покрытия Давайте немного усложним задачу. Предположим, нам захотелось установить минимальный охват тестового покрытия. Это означает, что в любой момент времени покрытие ветки master должно быть не менее 50%. Плагин Jacoco идеально справляется с этой задачей. Вы просто настраиваете его так, чтобы при охвате тестового покрытия ниже допустимого, сборка уходила в ошибку. Реализовать такой подход проще некуда. Но есть небольшая оговорка. Этот метод работает только при условии, что плагин настраивался на старте проекта. Представим ситуацию: вы работаете над проектом, которому уже 5 лет. С момента первого коммита никто не проверял тестовое покрытие. Разработчики добавляли тесты в случайном порядке и без какой-либо организации. Но вот однажды вы решаете увеличить количество тестов. Вы настраиваете плагин Jacoco на минимальную планку в 60%. Спустя какое-то время разработчик открывает новый Pull Request. Затем разработчики вдруг понимают, что покрытие – всего лишь 30%. Так что для успешного закрытия задачи нужно покрыть не менее 30% кода продукта. Как вы можете догадаться, для проекта 5-летней давности – это практически неразрешимая проблема. Но что, если будут проверяться только будущие изменения в коде, а не весь продукт? Если в Pull Request разработчик изменит 200 строк, то нужно будет охватить не менее 120 из них (при тестовом покрытии в 60%). Тогда не придется проходить по множеству модулей, которые не относятся к задаче. В принципе, проблема решаема. Но как применить все это к проекту? К счастью, есть решение. Отчет Jacoco отправляется на сервер тестового покрытия. Одно из самых популярных решений – SonarCloud. Сервер хранит статистику по предыдущим вычислениям. Это очень удобно: вычислять тестовое покрытие не только всего кода, но и будущих изменений. Затем результат анализа отправляется на CI-сервер, который перенаправляет его на Git-сервер. Такая рабочая модель позволяет применять культуру обязательного тестирования на любой стадии развития продукта, поскольку проверяется лишь часть изменений. Если говорить о стиле оформления кода, то отличий практически нет. Можете попробовать плагин Checkstyle. Он автоматически отклоняет сборку, которая нарушает любое из заявленных требований. Например, в коде есть неиспользованный импорт. Кроме того, вы можете присмотреться к облачным сервисам, которые выполняют анализ кода и визуально отображают результаты в виде графиков (SonarCloud это тоже умеет). CD CD описывает процесс автоматического развертывания новой версии продукта. Давайте еще немного подкорректируем схему CI. Вот так конвейерный процесс CI/CD мог бы выглядеть в реальном проекте. Первое отличие – теперь CI-сервер называется CI/CD-сервером. Дело в том, что зачастую оба процесса (CI и CD) выполняются одним и тем же диспетчером задач. Так что мы будем рассматривать именно этот случай. Но так бывает не всегда. Например, задачи по интеграции могут делегироваться на GitLab CI, а задачи по доставке – отдаваться в Jenkins. Правая часть схемы изображает CI. Мы обсудили ее выше. Слева показана CD. Задача по CD создает проект (или повторно использует артефакты, полученные на стадии CI) и развертывает его на конечном сервере. Стоит отметить, что сервер в нашем случае – это понятие абстрактное. Например, развертывание может выполняться в кластер Kubernetes. Так что самих серверов может быть несколько. Обычно после стадии развертывания на почту приходят сообщения о выполнении. Например, CD-сервер может уведомлять подписчиков об успешном развертывании/ошибках. В любом случае, возникает важный вопрос. В какой момент мы должны запускать задачи по CD? Триггеры могут быть разными. Развертывание после каждого слияния Pull Request. Развертывание по расписанию. Развертывание после каждого слияния Pull Request с определенной веткой. Сочетание нескольких вариантов. В первом пункте процесс выстроен так, что задачи по CI и CD всегда выполняются последовательно. Данный подход весьма популярен при разработке программ с исходным кодом. Библиотека Semantic Release помогает настроить проект для прозрачной интеграции данной модели. Важно помнить о трактовке понятия deploy (развертывание). Это не всегда «что-то где-то запустить». Например, при разработке библиотеки, нет никакого запуска. В данном случае процесс развертывания означает выпуск новой версии библиотеки. Второй пункт не зависит от процесса CI, ведь проект развертывается по определенному расписанию. Например, ежедневно в 01:00. Третий пункт аналогичен первому, но с небольшими отличиями. Предположим, в репозитории у нас есть 2 основные ветки: develop и master. В develop содержатся самые последние изменения, а в master – только релизы версий. Если мы хотим развертывать только ветку master, то не нужно вызывать CD-задачу по слиянию в develop. Последний пункт – это сочетание подходов. Например, ветку develop можно развертывать по расписанию в среду разработки. А ветку master – в реальную среду по каждому слиянию Pull Request. Инструменты На рынке доступно множество решений по автоматизации процессов CI/CD. Ниже представлено несколько продуктов. Jenkins. Один из самых востребованных инструментов CI/CD в мире. Свою популярность он заслужил, благодаря политике открытого кода (open-source). То есть вам не нужно ни за что платить. В Jenkins вы можете императивно описывать конвейеры сборки с помощью Groovy. С одной стороны это достаточно гибкое решение, но с другой – требует более высокого уровня квалификации. GitHub Actions. Этот инструмент для CI/CD доступен для GitHub и GitHub Enterprise. В отличие от Jenkins, GitHub Actions предлагает декларативные сценарии сборки с YAML-конфигурацией. Кроме того, в данном решении доступна интеграция с различными системами обеспечения качества (например SonarCube). Таким образом, сборку можно описать в нескольких текстовых строках. GitLab CI. Во многом похож на GitHub Actions, но со своими особенностями. Например, GitLab CI может указывать на определенные тесты, вызывающие ошибку в сборке. Travis CI. Облачный CI/CD-сервис. Предлагает множество возможностей, не требующих сложных настроек. Например, шифрование данных, которые следует скрыть в публичном репозитории. Есть и приятный бонус в том, что Travis CI можно совершенно бесплатно использовать в публичных open-source проектах на GitHub, GitLab и BitBucket.
img
Привет, дорогой читатель! В повседневной работе зачастую не хватает автоматизации. Поэтому, мы решили создать калькулятор инсталляции IP - АТС Asterisk. "Что это?" – спросите вы. На самом деле это резюмирование опыта и знаний наших инженеров, которые были получены при планировании и внедрении IP - АТС Asterisk. Пользоваться калькулятором очень легко - просто укажите проектируемые параметры в соответствующие поля. Пошаговое использование калькулятора мы зафиксировали в видеоролике ниже: Разделы, помеченные красной звездочкой (*) обязательны к заполнению Расчет CPU и RAM* U - количество пользователей IP - АТС; MCC - максимальное количество одновременных вызовов; Расчет HDD* ACL - средняя продолжительность одного вызова (мин.); CPD - количество звонков в день; S - планируемый срок хранения записей разговоров (дни); Мы создали калькулятор инсталляции IP - АТС Asterisk. При планировании сервера и необходимого оборудования заполните соответствующие поля для расчета производительности, шлюзов и плат Подключение к провайдеру Работа только по SIP Использовать PCI карты Использовать шлюзы Подключение аналоговых ТА Если аналоговые ТА отсутствуют, оставьте данное поле без изменений
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59