По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В предыдущих статьях мы познакомились как управлять ресурсами AWS с помощью Terraform, в данной статье мы посмотрим, как создавать работающий web-сервер с помощью Terraform. Для развертывания настоящего боевого Web сервера, нам понадобится создать с помощью Terraform два ресурса. Инстанс EC2 и группу безопасности для того, чтобы открыть порт 80 во внешний мир. Для начала создадим новую директорию Lesson-2 и файл WebServer.tr. Вспоминаем именно данный файл с данным расширением является основным для написания кода и управления. Напоминаю, что это обычный текстовый файл, который редактируется с помощью любого текстового редактора в нашем случае мы будем использовать текстовый редактор nano. Mkdir Lesson-2 cd Lesson-2 nano WebServer.tr Сразу будем привыкать к оформлению кода и добавим в код комментарии, комментарии добавляются следующим образом. Ставим знак решетки # и за ней пишем комментарий. #----------------------------------------------- # Terraform # #Build WebServer during BootStrap #-------------------------------------------------- Для начала пишем, кто провайдер и регион для размещения наших ресурсов. provider "aws" { region = "eu-central-1" } Кстати, есть интересный сайт awsregion.info на котором можно посмотреть название регионов и место размещение. Сайт на момент написания статьи обновляется и поддерживается в актуальном состоянии. Так первый ресурс это инстанс EC2. Resource служебное слово, далее название ресурса в кавычках и имя, которое мы ему даем в кавычках, далее открываются и закрываются фигурные скобки. Именно между ними мы и будем описывать наш ресурс. Далее добавляем ami – который показывает, какой образ мы будем использовать. Instance_type – тип и размер ресурса, который мы будем использовать. В итоге смотрим, что у нас получилось в первой итерации кода: resource "aws_instance" "WebServer_my" { ami = "ami-0767046d1677be5a0" #Amazon Linux ami instance_type = "t2.micro" } В результате исполнения данной части у нас будет создан инстанс EC2. Далее создадим 2-й ресурс aws_security_group, фактически это правило сети для брандмауэра. Так же описание начинаем со служебного слова resource, далее название ресурса и имя ресурса в кавычках, а в конце открывающаяся и закрывающаяся скобка в которой пойдет описание ресурса. Указываем параметр name - этот параметр обязательный для корректного отображения, description – параметр не обязательный, но можем указать, vpc_id мы не указываем т.к используем ресурс vpc по умолчанию. Далее идет описание правил сетевых на языке Terraform. Служебный параметр ingress для входящего трафика с фигурными скобками где мы вставим порты и другие параметры данного параметра. И второй служебный параметр engress для исходящего трафика с фигурными скобками. Cidr_blocks = [“подсеть”], указывают откуда или куда разрешен данный поток трафика т.е подсеть 0.0.0.0/0 означает весь интернет или все подсети. Обратите внимание: Мы разрешили входящий трафик на 80 порт, тот порт на котором будет работать наш веб сервер. Мы разрешили входящий трафик на 22 порт, тот порт, который может принимать соединение для подключения по SSH протоколу. Мы разрешили ICMP трафик до нашего сервера, чтобы можно было из интернета проверить его доступность. Мы разрешили трафик на 443 порт, если мы в будущем захотим сделать защищенное HTTPS соединение. И мы разрешили весь исходящий трафик с сервера указав protocol “-1” В такой конфигурации кода Terraform мы получим два отдельных ресурса Инстанс EC2 и группу безопасности, но нас такой вариант не устроит. Нам необходимо, чтобы данная группа безопасности была автоматически присоединена к нашему серверу. Это можно сделать с помощью нового параметра, который мы добавим в первую часть кода, где мы описывали aws_instance. Данный параметр называется vpc_security_group_id, с помощью данного параметра можно сразу присоединить несколько групп безопасности, через знак равенства и скобки “= [“номер группы безопасности”]”. Например, номер группы безопасности можно взять той, что создается по умолчанию. Все остальные указываются, через запятую. Но в нашем случае данный вариант не подойдет, потому что у нас должно все подключиться автоматически, т.е присоединить ту группу безопасности, которая создастся и которую мы описали ниже. А делается это достаточно просто после знака = в квадратных скобках без кавычек вставляем aws_security_group – то что это группа безопасности, затем . – разделитель, затем вставляем имя группы безопасности, которую мы создали mywebserver, опять разделитель символ точки ., и мы ходим взять id. В итоге получается следующий параметр и его значение: vpc_security_group_ids = [aws_security_group.mywebserver.id] Этой самой строчкой мы привязали группу безопасности к нашему создаваемому инстансу. И как следствие возникла зависимость инстанса от группы безопасности. Следовательно, Terraform создаст сначала группу безопасности, а затем уже создаст инстанс. Код Terraform не выполняется сверху вниз, зачастую он исполняется в зависимости от зависимостей или вообще одновременно, когда многие части зависят друг от друга. Следовательно, вот в таком коде мы создали зависимость. По коду вы можете заметить, что если необходимо еще дополнительный порт открыть, например, в группе безопасности, то необходимо скопировать часть кода, отвечающую за открытие порта и добавить необходимые настройки, порт и протокол, подправить cidr_blocks. После корректировки вставить в правильное место, как параметр. И для того, чтобы завершить настройку нашего Web сервера, нам необходимо написать параметр user_data. В амазоне это называется bootstrapping, т.е начальная загрузка. User_data = <<EOF Скрипт EOF Как вы видите сам скрипт будет находится между EOF, а знак << говорит о том, что скрипт мы подаем на ввод. Далее, как любой скрипт в Linux системе мы пишем сначала интерпретатор или shell который будет исполнять и на языке понятном для bash. Поэтому в скрипте не должно быть никаких отступов! Это важно, даже если плагин текстового редактора пытается поправить. Теперь сам скрипт: user_data = <<EOF #!/bin/bash apt -y update apt -y install apache2 myip=`curl http://169.254.169.254/latest/meta-data/local-ipv4` echo "<h2>WebServer with IP: $myip</h2><br> Build by Terraform!" > /var/www/html /index.html sudo service httpd start chkconfig httpd on EOF Сначала обновляем систему apt –y update, далее команда apt –y install apache2 устанавливаем apache веб сервер непосредственно. Следующая строка присваиваем значение переменной myip, с помощью получения данных из самого амазона curl http://169.254.169.254/latest/meta-data/local-ipv4. Далее просто добавляем в индексную страницу по умолчанию вывод того что мы получили с подстановкой IP. Следующая строка стартует сервис, и последняя строка проверяет конфигурацию апача. Таким образом, мы получаем полностью готовый скрипт. Нам остается его сохранить в файле и инициализировать Terraform, командой terraform init и даем команду на применение terraform apply. В результате команды мы видим, что будет создано 2 ресурса, все, как и планировалось. Инстанс и группа безопасности. Как мы видим сначала, из-за зависимости создается группа безопасности. А затем поднимается инстанс, к которому и будет привязана данная группа. Спустя пару минут мы можем видеть, что у нас веб сервер поднялся. IP-адрес можно найти в консоли. Далее, если нам более данный Web сервер не нужен, то мы его можем уничтожить простой командой terraform destroy. И мы увидим, что из-за зависимостей ресурсы будут уничтожаться в обратном порядке тому, в котором они запускались. Сначала инстанс, потом группа безопасности. Скрипт вы можете легко модифицировать и добавить более сложные детали установки и настройки веб сервера – это полностью рабочая конфигурация.
img
Всем привет! Сегодня в статье мы разберем одну из составляющих процесса маршрутизации звонков (Call Routing) – это механизм Route Patterns. Паттерны используются при маршрутизации вызова, и в зависимости от набранного набора цифр звонок будет отправлен по определенному маршруту. Route Pattern это часть механизма Call Routing, к которому еще относятся Route List, Route Group, Translation Pattern, Calling Search Space и Partitions, но в данной статье мы для начала рассмотрим только паттерны. /p> Route Patterns представляют собой набор символов, паттерн, который настроен на Cisco Unified Communications Manager (CUCM) . Когда набранный абонентом номер попадает под определенный заданный паттерн, то система маршрутизирует вызов в нужном направлении. Синтаксис Wildcard Описание X Одна любая символ (0-9, *, #) ! Один или более символов [X-Y] Диапазон символов от Х до Y [^X-Y ] Диапазон символов от Х до Y которые не будут включены <wildcard>? Один или более значений предыдущего символа или значения wildcard <wildcard>+ Ноль или более значений предыдущего символа или значения wildcard . Отделяет Access Code от номера телефона # Убирает таймаут ожидания следующего символа Рассмотрим примеры: Route Pattern Результат 1234 Подойдет единственный вариант 1234 9ХХХ Подойдут номера от 9000 до 9999 12[3-6]9 Подойдут номера 1239, 1249, 1259, 1269 12[^3-6]9 Подойдут номера 1209, 1219, 1229, 1279, 1289, 1299 999! Подойдут номера от 9990 до 99999999999999999999999999999999 9.88000000000 Отправляет номер 88000000000 91X? Подойдут номера от 91 до 91999999999999999999999 91Х+ Подойдут номера от 910 до 91999999999999999999999 Процесс анализа начинается, когда телефон набирает номер и сравнивает набранный номер с настроенным паттерном, после чего система отправляет вызов в нужном направлении, в нужный Route List. Если номер подходит под несколько паттернов, то выбирается паттерн с наилучшим совпадением. Настройка На странице Cisco Unified CM Administration переходим во вкладку Call Routing → Route/Hunt → Route Pattern. Здесь в строке Route Pattern указываем, необходимы нам паттерн, с которым будут сравниваться набранные номера. В строке Gateway/Route List указываем, куда нам нужно направить попавший вызов. Также здесь можно указать префикс и маску для digit manipulation. После чего нажимаем Save и настраиваем остальные паттерны.
img
В этой статье мы рассмотрим настройку BGP-оповещения для Network Layer Reachability Information (NLRI), а также конфигурацию политики маршрутизации BGP. Предыдущие статьи цикла про BGP: Основы протокола BGP Построение маршрута протоколом BGP Формирование соседства в BGP Видео: Основы BGP за 7 минут Оповещения NLRI Прежде чем мы начнем настраивать оповещения NLRI, используя различные команды, давайте сначала обсудим старую функцию BGP, которую Cisco отключает по умолчанию. Эта функция называется синхронизацией BGP. Для проверки того, что Cisco отключила эту функцию на вашем устройстве, выполните команду show running-configuration на одном из устройств BGP, и в выводимой информации, под пунктом «процессы» BGP, вы увидите сообщение no synchronization. Если эта функция включена, функция синхронизации не позволяет спикеру BGP вводить префиксы в BGP, если нет коррелированной записи для префикса в базовом IGP (или статических маршрутах). Это помогает предотвратить ситуации типа "черная дыра" (black hole), когда устройства на маршруте не работают с BGP и не могут переадресовать префикс BGP, потому что у них нет маршрута к этому префиксу из их IGP. Эта функция отключена по умолчанию из-за создания множества различных механизмов масштабируемости, существующих в BGP, которые позволяют настроить топологию iBGP без требования полной сетки одноранговых узлов iBGP. Еще одна причина, по которой он отключен, заключается в том, что он поощряет перераспределение префиксов BGP в базовый IGP, и это не безопасно. Существует причина, по которой Cisco уходит от использования команды network для настройки IGPs в CLI. Не очень хорошая идея в программировании, чтобы одна команда выполняла очень разные вещи, и когда она используется в разных областях. Это относится и к команде network. При использовании в IGP команда включает протокол на интерфейсе (а также влияете на то, какие префиксы объявляются), но в BGP у команды network другое назначение. Она не включает BGP на определенных интерфейсах, вместо этого она объявляет префикс, который существует (каким-то образом) на локальном устройстве, и вводит его в BGP. Хотя префикс, который вы могли бы объявить в BGP, чаще всего встречается в вашем IGPs в таблице маршрутизации. Вы можете использовать другие методы для создания префикса для оповещения. Например, вы можете создать интерфейс обратной связи, который обладает префиксом сети, который вы хотите объявить. Или вы можете создать статический маршрут или даже статический маршрут, указывающий на Null0. Одна маленькая хитрость, связанная с командой network в BGP, заключается в том, что, если ваша маска подсети для вашего префикса не находится на классовой границе IP- адреса (например, 10.0.0.0/8), то вам нужно не забыть использовать ключевое слово mask и указать правильную маску при использовании команды. Пример 1 показывает создание двух петлевых интерфейсов и объявление их префиксов в BGP. Обратите внимание, что этот пример также показывает проверку этих префиксных объявлений на маршрутизаторе ATL. Пример 1: Использование команды Network в BGP TPA1#conf t Enter configuration commands, one per line. End with CNTL/Z. TPA1(config)#interface loopback 192 TPA1(config-if)#ip address 192.168.1.1 255.255.255.0 TPA1(config-if)#exit TPA1(config)#interface loopback 172 TPA1(config-if)#ip address 172.16.10.1 255.255.255.0 TPA1(config-if)#exit TPA1(config)router bgp 100 TPA1(config-router)#network 192.168.1.0 TPA1(config-router)#network 172.16.10.0 mask 255.255.255.0 TPA1(config-router)#end TPA1# ATL# ATL#show ip bgp Хотя команда network проста и удобна, она не была бы эффективной, если бы у вас было много префиксов для оповещения. Другой вариант- перераспределить префиксы в BGP из IGP или статических маршрутов. Пример 2 демонстрирует перераспределение префиксов, которые были получены через EIGRP, в BGP. Обратите внимание при проверке, что исходный код для этих префиксов отображается как (?) указывает на неизвестность. Пример 2: перераспределение префиксов в BGP TPA1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. TPA1(config)router bgp 100 TPA1(config-router)#redistribute eigrp 100 TPA1(config-router)#end TPA1# ATL#show ip bgp Когда вы начинаете объявлять (оповещать) NLRI в BGP, вы можете столкнуться с префиксами в вашей таблице BGP (показанной с show ip bgp), которые имеют код состояния (r) вместо ожидаемого допустимого кода состояния (*). Код состояния (r) указывает на сбой RIB, означающий, что BGP попытался поместить префикс в таблицу BGP, но не смог из- за какой-то проблемы. Наиболее распространенной причиной отказа RIB является административное расстояние (AD). Например, IBGP узнал префиксы несущие ужасные объявления AD из 200. Это означает, что если ваш маршрутизатор получил префикс через IGP (даже такой плохой, как RIP с AD 120), то он будет предпочтительнее префикса IBGP. В результате протокол BGP получивший это объявление AD, не отметит префикс как действующий. Обратите внимание, что это, как правило, не происходит с префиксами EBGP-learned, поскольку они имеют очень предпочтительное объявление 20 (по умолчанию). Очень часто, если желательно иметь префикс в IGP и BGP, администраторы будут манипулировать значениями AD на своих маршрутизаторах, чтобы улучшить AD IBGP. Например, в случае RIP и BGP администратор мог бы установить AD изученных маршрутов IBGP на 119, чтобы сделать их предпочтительными по сравнению с используемым IGP. В дополнение к выявлению сбоев RIB в результатах команды show ip bgp, вы можете использовать более прямую команду show ip bgp rib-failure, чтобы увидеть любые префиксы в этом состоянии. Это особенно полезно в случае массивных таблиц BGP. Настройка политики маршрутизации BGP Довольно часто встречаются топологии, в которых вы явно не хотите объявлять префиксы в своей таблице BGP, или вы не хотите получать определенные префиксы от узла BGP. К счастью, в вашем распоряжении есть много инструментов для этого. Например, вот только некоторые методы, которые вы могли бы использовать для фильтрации префиксов: Distribute lists Extended ACLs Prefix lists AS Path filters Route maps Пример 3 демонстрирует один из методов фильтрации. Выбран подход route map, потому что все (и это правильно) любят карты маршрутов. Пример 3: Использование route map в качестве префиксного фильтра в BGP ATL# configure terminal Enter configuration commands, one per line. End with CNTL/Z. ATL(config)#ip access-list standard MYPREFIX ATL(config-std-nacl)#permit 192.168.1.0 0.0.0.255 ATL(config-std-nacl)#exit ATL(config)#route-map MYMAP deny 10 ATL(config-route-map)#match ip address MYPREFIX ATL(config-route-map)#exit ATL(config)#route-map MYMAP permit 20 ATL(config-route-map)#exit ATL(config)#router bqp 200 ATL(config-router)#neighbor 10.10.10.1 route-map MYMAP in ATL(config-router)#end ATL# ATL# clear ip bqp * soft ATL# show ip bqp Обратите внимание, перед проверкой я запускаю команду clear ip bgp * soft. Это гарантирует, что устройство сразу же обновит информацию BGP для меня, так что мне не придется ждать истечения таймера, когда дело дойдет до конвергенции BGP на новых манипуляциях с политикой, которые мы сделали. Помните, что BGP использует множество различных атрибутов пути вместо простой метрики, чтобы предоставить вам возможность легко настроить способ, по которому происходит маршрутизация. Ниже приведены некоторые из атрибутов пути, которыми вы могли бы манипулировать, чтобы настроить политику: Weight MED Local Preference AS Path Можно спросить себя, как AS Path могут быть использованы в целях маршрутизации. Поскольку манипуляция AS Path часто выполняется с помощью AS Path Prepending. Вы отравляете префикс, добавляя свой собственный номер AS к пути, чтобы сделать более длинным (менее предпочтительным) AS Path. Как и большинство наших манипуляций с атрибутом пути, это легко сделать с помощью карты маршрута. Давайте рассмотрим пример использования Local Preference для манипулирования политикой. Мы часто используем Local Preference, чтобы повлиять на то, как мы будем направлять исходящий трафик к префиксу BGP. Мы делаем это, устанавливая значения Local Preference, входящие по нескольким путям. Прежде чем мы начнем, поймите, что Local Preference - это значение, которое рассматривается довольно высоко в процессе принятия решения о наилучшем пути BGP, более высокое значение предпочтительно, и значения передаются только в обновлениях IBGP. Именно так имя LOCAL вошло в название Local Preference. Для начала я объявил тот же префикс в AS 200 (ATL и ATL2) от маршрутизаторов TPA1 и TPA2 AS 100. Глядя на пример 4, Вы можете видеть, что этот префикс (192.168.1.0) может быть достигнут с помощью следующего прыжка 10.10.10.1 и что это предпочтительный путь. Альтернативный путь, который будет использоваться в случае неудачи этого пути, будет проходить через следующий переход 10.21.21.1. Пример 4: Подготовка к использованию Local Preference ATL# show ip bqp Теперь пришло время поэкспериментировать и изменить данное поведение с помощью примера манипуляции атрибутом пути. Мой подход будет состоять в том, чтобы определить префикс, которым мы хотим манипулировать (192.168.1.0), и поднять значение локального предпочтения, чтобы оно было больше, чем значение по умолчанию 100 для пути к TPA2 на следующем прыжке 10.21.21.1. Я делаю это, манипулируя префиксом, когда он входит через путь 10.21.21.1 . Пример 5 показывает эту конфигурацию. ATL# configure terminal Enter configuration commands, one per line. End with CNTL/Z. ATL(config)#ip access-list standard OURPREFIX ATL(config-std-nacl)#permit 192.168.1.0 0.0.0.255 ATL(config-std-nacl)#exit ATL(config)#route-map SETLOCALPREF permit 10 ATL(config-route-map)#match ip address OURPREFIX ATL(config-route-map)#set local-preference 110 ATL(config-route-map)#exit ATL(config)#route-map SETLOCALPREF permit 20 ATL(config-route-map)#exit ATL(config)#router bqp 200 ATL(config-router)#neighbor 10.21.21.1 route-map SETLOCALPREF in ATL(config-router)#end ATL# ATL# clear ip bqp * soft ATL# show ip bqp Обратите внимание, что предпочтительный путь теперь проходит через следующий переход 10.21.21.1, как мы и хотели. Для этого префикса также отображается значение Local Preference - 110. Это более высокое значение является предпочтительным и изменяет выбор, сделанный процессом выбора наилучшего пути BGP.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59