По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Сетевые устройства Huawei обычно поставляются неконфигурированными по умолчанию, поэтому, для использования устройства необходимо сначала настроить некоторые из его основных функций. 1. Настройка имени хоста В интерфейсе командной строки имя хоста (имя устройства) заключено в угловые скобки (...) или квадратные скобки ([...]). Имя хоста по умолчанию - Huawei, но это имя следует изменить, чтобы лучше различать несколько устройств. Чтобы изменить имя хоста, используйте команду sysname host-name. В следующем примере показано, как изменить имя хоста на Huawei-AR-01. system-view Enter system view, return user view with Ctrl+Z. [Huawei] sysname Huawei-AR-01 [Huawei-AR-01] 2. Настройка системного времени По умолчанию устройства Huawei используют Coordinated Universal Time (UTC). Чтобы указать другой часовой пояс для устройства, выполните команду сlock timezone time-zone-name {add | minus} offset. Вы можете назвать часовой пояс в параметре time-zone-name и указать, является ли смещение часового пояса к UTC положительным (add offset) или отрицательным (minus offset). Обратите внимание, что {...} указывает на то, что один из вложенных параметров должен быть выбран. Например, если вы хотите установить часовой пояс устройства как Пекинское время, выполните следующую команду: [Huawei-AR-01] clock timezone BJ add 08:00 После установки часового пояса выполните команду clock datetime HH:MM: SS YYYY-MM-DD для установки времени и даты. Параметр HH:MM:SS задает время в 24-часовом формате, а YYYY-MM-DD-дату. (Устройства Huawei поддерживают только 24-часовой формат.) Например, чтобы установить время и дату 18: 30 10 марта 2019 года, выполните следующую команду: [Huawei-AR-01] clock datetime 18:30:00 2019-03-10 3. Задание IP-адреса на устройстве Для входа в систему, вы можете использовать Telnet . Однако Telnet требует, чтобы на интерфейсе устройства был установлен IP-адрес. Для присвоения IP-адреса, выполните команду ip-address {mask | mask-length} в интерфейсном виде. Параметры ip-address и mask задают IP-адрес и маску подсети соответственно в десятичной системе счисления, а mask-length задает число последовательных "1"в двоичной системе счисления маски подсети. В следующем примере показано, как установить IP-адрес 10.1.1.100 и маску подсети 255.255.255.0 для интерфейса управления Ethernet 1/0/0: <Huawei-AR-01> system-view [Huawei-AR-01] interface ethernet 1/0/0 [Huawei-AR-01-Ethernet1/0/0] ip address 10.1.1.100 255.255.255.0 Длина двоичной записи маски подсети равна 24 (255.255.255.0 эквивалентна двоичному значению 11111111.11111111.11111111.00000000), поэтому в этом примере вы можете заменить 255.255.255.0 на 24. 4. Конфигурации интерфейса пользователя Если вы входите в устройство через консольный порт, отображается консольный пользовательский интерфейс. При входе в систему через Telnet отображается пользовательский интерфейс терминала виртуального типа (VTY). Чтобы реализовать управление пользователем через консольный порт, например, установить User Layer равным 2, можно выполнить следующие команды: system-view [Huawei] user-interface console 0 [Huawei-ui-console0] user privilege level 2 Другие пользователи также могут войти в устройство, даже тогда когда вы находитесь в нем. Каждый пользователь имеет отдельный пользовательский интерфейс (количество поддерживаемых интерфейсов VTY варьируется в зависимости от устройства), поэтому для дифференциации нескольких пользовательских интерфейсов устройство реализует нумерацию пользовательских интерфейсов. Нумерация интерфейса пользователя. Когда пользователь входит в устройство, устройство выделяет пользователю самый низкий пронумерованный простой пользовательский интерфейс в соответствии с используемым методом входа в систему. Пользовательские интерфейсы нумеруются либо относительно, либо абсолютно. НОтносительная нумерация Формат нумерации - тип пользовательского интерфейса + номер. Как правило, устройство имеет один консольный порт (некоторые устройства могут иметь больше) и 15 пользовательских интерфейсов VTY (5 пользовательских интерфейсов VTY включены по умолчанию). При использовании относительной нумерации порты отображаются следующим образом:Консольный пользовательский интерфейс: CON 0Пользовательские интерфейсы VTY: первый пользовательский интерфейс VTY - это VTY 0, второй VTY 1 и т. д. Абсолютная нумерация Абсолютное число однозначно идентифицирует пользовательский интерфейс. Абсолютные и относительные числа находятся в взаимно однозначном отображении. Пользовательский интерфейс консоли имеет относительное число CON 0 и абсолютное число 0. Пользовательский интерфейс VTY имеет относительное число в диапазоне от VTY 0 до VTY 14 и абсолютное число в диапазоне от 129 до 143.Чтобы проверить пользовательские интерфейсы, поддерживаемые устройством, выполните команду display user-interface. Например: В выходных данных команды столбец Idx показывает абсолютные числа, а столбец Type-относительные числа. Проверка подлинности пользователя. Для гарантированного входа авторизованным пользователям, устройство поддерживает проверку подлинности паролем и проверку подлинности AAA. Так же можно входить и без проверки подлинности. Проверка подлинности паролем Этот режим используется по дефолту и требует от пользователей ввода правильного пароля для входа в систему. Если пароль не настроен, вход в систему будет запрещен. Проверка подлинности ААА Этот режим требует правильного сочетания имени пользователя и пароля. Использование комбинации имени пользователя и пароля повышает безопасность по сравнению с проверкой подлинности паролем. Кроме того, пользователи дифференцированы и не влияют друг на друга во время проверки подлинности. Проверка подлинности AAA обычно используется для входа по Telnet из-за ее повышенной безопасности. Отсутствие проверки подлинности Этот режим не выполняет проверки подлинности пользователей и не рекомендуется. Отсутствие проверки подлинности позволяет пользователям входить в систему напрямую без каких-либо учетных данных.Механизм проверки подлинности пользователя проверяет логин пользователя. По дефолту после входа пользователя на устройство с помощью Telnet ему присваивается Layer0. Пример: настройка пользовательских интерфейсов VTY Во время ввода устройства в эксплуатацию многие пользователи могут войти на устройство для настройки сервисов. Чтобы ограничить число пользователей, которые могут войти в систему через Telnet, до 15, настройте 15 пользовательских интерфейсов VTY. Затем, чтобы разрешить пользователям настраивать службы, установите User Layer равным 2. Установите максимальное число пользовательских интерфейсов VTY равным 15. Выполните команду пользовательского интерфейса user-interface maximum-vty number . Укажите number равным 15. system-view [Huawei] user-interface maximum-vty 15 Войдите в режим интерфейса пользователя VTY Запустите команду пользовательского интерфейса vty first-ui-number [last-ui-number]. Укажите first-ui-number как 0 и last-ui-number как 14 (относительные номера пользовательских интерфейсов VTY). Обратите внимание, что [...] указывает, что вложенный параметр является необязательным; однако в этом примере этот параметр необходим для ограничения числа разрешенных пользователей. [Huawei] user-interface vty 0 14 [Huawei-ui-vty0-14] Установите уровень пользователя 2 для пользовательского интерфейса VTY. Запустите команду user privilege level level. Укажите level равным 2. [Huawei-ui-vty0-14] user privilege level 2 Установите режим проверки подлинности пользователя на AAA для пользовательского интерфейса VTY. Запустите команду authentication-mode {aaa | none | password} [Huawei-ui-vty0-14] authentication-mode aaa Настройте user name и password, используемые при аутентификации AAA. Выйдите из пользовательского интерфейса VTY и выполните команду aaa, для перехода в режим AAA. Запустите local-user user-name password cipher password для настройки user name и password (cipher указывает, что указанный password зашифрован). После выполните telnet local-user-name-service-type для настройки типа службы Telnet. После завершения настройки необходимо ввести имя пользователя (admin) и пароль (admin@123), прежде чем отобразится командный интерфейс.
img
Почитать лекцию №21 про беспроводную связь по 802.11 можно тут. В предыдущих лекциях мы рассмотрели два примера передачи данных вида point-to-point по физическим носителям. В этих лекциях будут рассмотрены четыре примера передачи данных вида end-to-end. На рисунке 1 показана Recursive Internet Architecture (RINA). Конечно, не каждый транспортный протокол точно сопоставляется с одним функциональным слоем в RINA, но сопоставление достаточно близко, чтобы быть полезным. Главное, что нужно запомнить-для каждого транспортного протокола есть четыре вопроса, которые вы можете задать: Как протокол обеспечивает передачу данных или как он упорядочивает данные? Как протокол предоставляет услуги мультиплексирования или возможность передавать несколько потоков данных на одном общем ресурсе? Как протокол обеспечивает контроль ошибок, который должен включать не только обнаружение ошибок, но и устранение ошибок - либо путем повторной передачи, либо путем предоставления информации, достаточной для восстановления исходной информации? Как протокол обеспечивает управление потоком? Каждый из этих вопросов может включать ряд дополнительных вопросов, таких как определение Maximum Transmission Unit (MTU), обеспечение репликации пакетов для многоадресной рассылки и т. д. В этих лекциях будут рассмотрены четыре протокола: Интернет-протокол (IP), который обеспечивает нижнюю половину второй пары слоев. Основное внимание при рассмотрении IP уделяется схеме адресации для мультиплексирования и способности обеспечивать единый способ передачи данных для множества различных физических транспортных систем. Протокол управления передачей (TCP), который обеспечивает одну версию верхней половины второй пары уровней. TCP обеспечивает управление ошибками и потоками, а также место для переноса информации о мультиплексировании для приложений и других протоколов, которые работают поверх TCP. Протокол Quick User Datagram Protocol Internet Connections (QUIC), который обеспечивает другую версию верхней половины второй пары уровней. QUIC очень похож на TCP по своим функциям, но имеет некоторые существенные отличия от TCP в том, как он работает. Протокол управляющих сообщений Интернета (ICMP). Internet Protocol (IP) Интернет-протокол (IP) был первоначально задокументирован в серии документов спецификации Интернет-протокола, называемых IEN, в середине 1970-х годов, в основном написанных Jonathan B. Postel. В этих документах описан протокол TCP, который при первоначальном развертывании включал в себя функции, содержащиеся в двух протоколах, IP и TCP. Postel отметил, что такое сочетание функциональности в едином протоколе не очень хорошо; Адресное пространство IPv4 представляет собой 32-битное целое число без знака, что означает, что оно может нумеровать или адресовать 232 устройства - около 4,2 миллиарда устройств. Звучит много, но на самом деле все иначе по нескольким причинам: Каждый адрес представляет один интерфейс, а не одно устройство. Фактически, IP-адреса часто используются для представления службы или виртуального хоста (или машины), что означает, что одно устройство часто будет использовать более одного IP-адреса. Большое количество адресов теряется в процессе агрегации. В начале 1990-х стало очевидно, что в Интернете скоро закончатся адреса в адресном пространстве IPv4; диаграммы, изображенные на рисунке 2, показывают изменение свободных и доступных IPv4 с течением времени, начиная с середины 1990-х годов. Простым решением этой ситуации было бы расширение адресного пространства IPv4 для охвата большего количества устройств, но опыт работы с протоколом IPv4 привел к тому, что группа Internet Engineering Task Force (IETF) взяла на себя более крупную задачу: перепроектировать IPv4. Работа по замене началась в 1990 году, а первые проекты получили статус стандарта в 1998 году. Адресное пространство IPv6 содержит 2128 адресов, или примерно 3,4 × 1038. IPv6 предназначен для предоставления услуг для нескольких различных протоколов, таких как TCP и QUIC. Таким образом, IPv6 предоставляет только две службы из четырех, необходимых для передачи данных по сети: транспорт, который включает маршалинг данных, и мультиплексирование. Транспорт и Маршалинг IP обеспечивает "базовый уровень", на котором работает широкий спектр протоколов более высокого уровня по множеству различных типов физических каналов. Для этого IP должен решить две проблемы: Запуск на множестве различных физических протоколов и протоколов нижнего уровня при одновременном представлении согласованного набора сервисов более высоким уровням. Адаптация к большому разнообразию размеров кадра, предоставляемых нижними уровнями Чтобы создать единый протокол, на котором могут работать все протоколы верхнего уровня, IP должен "вписываться" в тип кадра многих различных типов протоколов физического уровня. Ряд проектов описывает, как запустить IP поверх определенного физического уровня, включая сети MPEG-2, асинхронный режим передачи, оптические сети, протокол Point-to-Point (PPP), Vertical Blanking Interval (VBI) в телевидении, Fiber Distributed Data Interface (FDDI), и ряд других протоколов физического уровня. Эти проекты в значительной степени определяют, как переносить IP-дейтаграмму (или пакет) в кадре (или пакете) нижележащего физического уровня, и как включить межуровневое обнаружение, такое как протокол разрешения адресов (ARP), для работы с каждым типом носителя. IP также должен определять, как переносить большие блоки данных через различные MTU, доступные на разных типах физических каналов. В то время как исходная спецификация Ethernet выбирала MTU в 1500 октетов для баланса между большими размерами пакетов и максимальным использованием канала, многие другие физические уровни были разработаны с большими MTU. Кроме того, приложения не склонны отправлять информацию аккуратными блоками размером с MTU. IP решает эти две проблемы, обеспечивая фрагментацию. На рисунке 3 это показано. Если приложение (или протокол более высокого уровня) передает 2000 октетов данных для передачи в IP, реализация IP будет: Определите MTU вдоль пути, по которому должны передаваться данные; обычно это происходит путем считывания настроенного значения или значения по умолчанию, установленного системным программным обеспечением. Разбейте информацию на несколько фрагментов, основываясь на MTU минус прогнозируемый размер заголовков, включая заголовки туннелей и т. д.- метаданные, которые должны передаваться вместе с данными. Отправьте первый фрагмент с дополнительным заголовком IPv6 (что означает, что заголовок фрагмента не должен быть включен в пакеты, которые не являются фрагментами большего блока данных). Установите смещение в заголовке more fragments на первый октет исходного блока данных, который этот пакет представляет собой деление на 8; в Примере на рисунке 3 первый пакет имеет смещение 0, а второй-150 (1200/8). Установите бит more fragments равным 0, если это последний фрагмент блока данных, и 1, если за ним следует больше фрагментов. Этот размер общего блока данных, который IPv6 может переносить через фрагменты, ограничен размером поля смещения, которое составляет 13 бит. Следовательно, IPv6 может нести не более 214 октетов данных в виде последовательности фрагментов или блока данных размером около 65 536 октетов плюс один фрагмент размером с MTU. Все, что больше этого, должно быть каким-то образом разбито протоколом более высокого уровня перед передачей в IPv6 для транспортировки. Наконец, IP должен обеспечивать какой-то способ передачи пакетов по сети, использующей более одного типа физического уровня. Это решается путем перезаписи заголовков нижнего уровня на каждом этапе в сети, где могут быть взаимосвязаны несколько типов мультимедиа. Устройства, которые переписывают заголовки нижнего уровня таким образом, изначально назывались шлюзами, но теперь обычно называются маршрутизаторами, поскольку они направляют трафик на основе информации, содержащейся в заголовке IP. Есть и другие интересные аспекты того, как IPv6 передает данные. На рисунке 4 показан заголовок IPv6, с которым можно работать. На рисунке 4: Версия установлена на 6 для IPv6. traffic class разделен на два поля: 6 бит для передачи типа услуги (или класса услуги), 2 бита для передачи уведомления о перегрузке. flow label предназначена для указания устройствам пересылки, как хранить пакеты в одном потоке на одном и том же пути в наборе путей с многолучевым распространением с равной стоимостью (ECMP). payload length указывает количество данных, переносимых в пакете, в октетах. next header предоставляет информацию о любых дополнительных заголовках, содержащихся в пакете. Заголовок IPv6 может содержать информацию, выходящую за рамки того, что содержится в основном заголовке. hop limit - это количество раз, когда этот пакет может быть "обработан" сетевым устройством, прежде чем он будет отброшен. Любой маршрутизатор (или другое устройство), перезаписывающий заголовки нижнего уровня, должен уменьшить это число на единицу в процессе пересылки; когда предел перехода достигает 0 или 1, пакет следует отбросить. Важно! Счетчик скачков используется для предотвращения постоянного зацикливания пакета в сети. Каждый раз, когда пакет пересылается сетевым устройством, счетчик переходов уменьшается на единицу. Если счетчик переходов достигает 0, пакет отбрасывается. Если пакет зацикливается в сети, счетчик переходов (также называемый временем жизни или TTL) в конечном итоге будет уменьшен до 0, и пакет будет отброшен. Заголовок IPv6 представляет собой смесь переменной (Type Length Value [TLV]) и информации фиксированной длины. Основной заголовок состоит из полей фиксированной длины, но следующее поле заголовка оставляет открытой возможность дополнительных (или расширенных) заголовков, некоторые из которых форматируются как TLV. Это позволяет создавать пользовательские аппаратные средства (например, прикладную интегральную схему [ASIC]) для быстрого переключения пакетов на основе полей фиксированной длины, оставляя открытой возможность переноса данных переменной длины, которые могут быть обработаны только в программном обеспечении. Мультиплексирование IPv6 позволяет мультиплексировать двумя способами: Предоставляя большое адресное пространство для использования при идентификации хостов и сетей (или, в более широком смысле, достижимых пунктов назначения). Предоставляя пространство, в которое протокол верхнего уровня может поместить номер протокола, что позволяет нескольким протоколам работать поверх IPv6. Адресация IPv6 Адрес IPv6 имеет 128 битов, что означает, что может быть до 2128 адресов - огромное количество адресов, которых, возможно, хватит, чтобы сосчитать каждую крупицу пыли на Земле. Адрес IPv6 обычно записывается как последовательность шестнадцатеричных чисел, а не как последовательность из 128 нулей и единиц, как показано на рисунке 5. В формате IPv6 адреса стоит отметить двоеточие: Начальные нули в каждом разделе (выделены двоеточием) опускаются. Одну длинную строку нулей можно заменить двойным двоеточием в адресе только один раз. Почему так много адресов? Потому что многие адреса никогда не используются ни в одной схеме адресации. Во-первых, многие адреса никогда не используются, потому что адреса агрегируются. Агрегация - это использование одного префикса (или сети, или достижимого пункта назначения) для представления большего числа достижимых пунктов назначения. Рисунок 6 иллюстрирует это. На рисунке 6: Хостам A и B даны 101 :: 1 и 101 :: 2 в качестве их адресов IPv6. Однако эти два хоста подключены к одному широковещательному сегменту (например, Ethernet) и, следовательно, используют один и тот же интерфейс в C. Даже если C имеет адрес в этой общей сети, он фактически объявляет саму сеть - некоторые инженеры считают это полезно думать о самом проводе как о достижимом пункте назначения: 101 :: / 64. E получает два достижимых назначения, 101::/64 от C и 102::/64 от D. Уменьшая длину префикса, он может анонсировать одно достижимое назначение, которое включает в себя оба этих более длинных префиксных достижимых назначения. E рекламирует 100:: / 60. G, в свою очередь, получает 100 :: / 60 от E и 110: / 60 от F. Опять же, это же адресное пространство может быть описано с помощью единственного достижимого пункта назначения, 100 :: / 56, так что это то, что G объявляет. Как эта агрегация работает в реальном адресном пространстве? Рисунок 7 объясняет это. Длина префикса, которая представляет собой число после косой черты в reachable destination, сообщает вам количество битов, которые учитываются при определении того, что является частью префикса (и, следовательно, также, что нет). Длина префикса отсчитывается слева направо. Любой набор адресов с одинаковыми значениями чисел в пределах длины префикса считается частью одного и того же reachable destination. В полном адресном пространстве IPv6 128 бит, поэтому / 128 представляет один хост. В адресе с 64-битной длиной префикса (/ 64) только четыре левых раздела IPv6-адреса являются частью префикса или reachable destination; остальные четыре правые части IPv6-адреса считаются адресами хоста или подсети, которые "содержатся" в префиксе. В адресе с длиной префикса 60 бит (/ 60) четыре левых раздела IPv6-адреса минус одна шестнадцатеричная цифра считаются частью reachable destination или префикса. В адресе с длиной префикса 56 бит (/ 56) четыре левых раздела IPv6-адреса минус две шестнадцатеричные цифры считаются частью reachable destination или префикса. Пока вы всегда изменяете длину префикса с шагом 4 (/ 4, / 8, / 12, / 16 и т. Д.), значащие цифры или цифры, которые являются частью префикса, всегда будут перемещать единицу в вправо (при увеличении длины префикса) или влево (при уменьшении длины префикса). Агрегация иногда кажется сложной, но это важная часть IP. Некоторая часть адресного пространства используется при автоконфигурации. Важно учитывать взаимодействие между автоконфигурацией и назначением адреса IPv6. Как правило, необходимо выделить некоторый объем адресного пространства, чтобы гарантировать, что никакие два устройства, подключенные к сети, не будут иметь одинаковый идентификатор. В случае IPv6 половина адресных пространств (все, что больше / 64) в определенных диапазонах адресов выделяется для формирования уникальных идентификаторов для каждого устройства. В-третьих, некоторые адреса зарезервированы для специального использования. Например, в IPv6 следующие адресные пространства предназначены для специального использования: ::ffff / 96 зарезервирован для IPv4-адресов, которые "сопоставляются" с адресным пространством IPv6. fc00 :: / 7 зарезервирован для уникальных локальных адресов (ULA); пакеты с этими адресами не предназначены для маршрутизации в глобальном Интернете, а скорее хранятся в сети одной организации. fe80::/10 выделен для локальных адресов связи; эти адреса автоматически назначаются на каждом интерфейсе и используются только для связи по одному физическому или виртуальному каналу связи. :: / 0 устанавливается в качестве маршрута по умолчанию; если сетевое устройство не знает никакого другого способа добраться до определенного пункта назначения, оно будет перенаправлять трафик по маршруту по умолчанию. В-четвертых, устройствам может быть присвоено несколько адресов. Многие сетевые администраторы склонны думать об адресе так, как если бы он описывал один узел или систему. На самом деле, один адрес может быть использован для описания многих вещей, в том числе: Один хост или система Единый интерфейс на хосте или в системе; хост с несколькими интерфейсами будет иметь несколько адресов Набор доступных сервисов на хосте или системе; например, виртуальной машине или конкретной службе, работающей на хосте, может быть назначен адрес, отличный от любого из адресов, назначенных интерфейсам хоста. Не существует необходимой прямой корреляции между адресом и физическим устройством или между адресом и физическим интерфейсом. Мультиплексирование между процессами Второй механизм мультиплексирования позволяет нескольким протоколам работать на одном и том же базовом уровне. Эта форма мультиплексирования обеспечивается через номера протоколов. Рисунок 8 демонстрирует это. next header заголовка либо указывает на: next header в пакете IPv6, если есть next header Номер протокола, если next header является транспортным протоколом (например, TCP). Эти дополнительные заголовки называются дополнительными или расширенными заголовками; некоторые из них имеют фиксированную длину, а другие основаны на TLV; например: Параметрах Hop-by-hop: набор TLV, описывающих действия, которые должно предпринять каждое устройство пересылки. Маршрутизации: набор типов маршрутов фиксированной длины, используемых для указания пути, по которому пакет должен пройти через сеть. Фрагмент: набор полей фиксированной длины, содержащий информацию о фрагменте пакета. Заголовок аутентификации: набор TLV, содержащих информацию аутентификации и / или шифрования. Jumbogram: необязательное поле длины данных, позволяющее пакету IPv6 нести на один байт менее 4 ГБ данных. next header имеет длину 8 бит, что означает, что оно может содержать число от 0 до 255. Каждое число в этом диапазоне присваивается либо определенному типу заголовка опции, либо конкретному протоколу более высокого уровня. Например: 0: next header -это опция IPv6 hop-by-hop. 1: Полезная нагрузка пакета - это протокол Internet Control Message Protocol (ICMP). 6: Полезная нагрузка пакета-TCP. 17: Полезная нагрузка пакета - это UDP. 41: Полезная нагрузка пакета-IPv6. 43: next header - это routing header IPv6 44: next header -это fragment header IPv6 50: next header -это Encapsulated Security Header (ESH). Номер протокола используется принимающим хостом для отправки содержимого пакета правильному локальному процессу для обработки; обычно это означает удаление заголовков нижнего (физического) уровня из пакета, помещение пакета во входную очередь для правильного процесса (например, TCP), а затем уведомление операционной системы о том, что соответствующий процесс должен быть запущен.
img
В данной статье посмотрим и разберем, как создать простейшие ресурсы в облаке AWS (Amazon Web Services) с помощью замечательного инструмента IaaS, под названием Terraform. Для того, чтобы можно было повторить то, о чем пойдет речь в статье необходим действующий аккаунт AWS и рабочая машина (виртуальный сервер) с установленным Terraform, и текстовым редактором Atom + плагин для Terraform. Первоначальная настройка данных инструментов разбиралась в предыдущих статьях. Описание в статье пойдет под операционную систему CentOS. Вы можете для тренировки использовать на свой вкус любую. Для начала создадим папку под наш новый проект, можно непосредственно в домашней директории. sudo mkdir terraform Создадим первый файл нашего терраформ кода. Можно создать непосредственно в редакторе, через меню или в командной строке sudo touch myterr.tf. Принципиальной разницы, как будет создан файл нет. Если создали через командную строку открываем, как обычный файл в редакторе. Далее схема работы следующая: пишем код в файле, сохраняем, производим управляющие команды в командной строке для выполнения или проверки данного кода, уничтожения, модификации элементов или объектов в облаке. Как в начале статьи было сказано, нам необходим аккаунт AWS, чтобы терраформ взаимодействовал с облачной инфраструктурой, а более конкретно нам нужно создать пользователя и получить access key и secret key, для доступа к облаку. Это необходимо для аунтификации Terraform в AWS облаке. Заходим в AWS консоль и выбираем сервис IAM. Заходим во вкладку пользователи и создаем новую учетную запись. Вводим имя пользователя в пустое поле. Нужно поставить Programmatic Фccess. Далее нажимаем Создать пользователя и попадаем на закладку назначения прав. Тут необходимо присоеденить уже созданный по умолчанию в AWS набор прав администратора. Далее переходим к страничке назначения Tag, тут по желанию вашему, если хотите то можете добавить тэги. Нажимаем кнопку создать пользователя. Финальное окно будет выглядеть следующим образом. Получаем те данные, которые нам необходимы для Terraform. Очень важно - Secret key показывается только один раз! Теперь в принципе все готово для создания первого ресурса в AWS. Начинаем с объявления с каким облаком мы работаем. provider “aws” { } Тем самым мы обозначили с каким облачным провайдером мы будем работать. В данном коде в отличии от YAML, количество пробелов не важно. Далее прописываем access key и secret key. В каком регионе будут использоваться ресурсы. Регион мы укажем eu-central-1 – это ЦОД расположенный в Европе во Франфуркте. Старайтесь регион указывать, поближе к себе, чтобы до ресурсов была минимальная задержка прохождения пакетов. provider “aws” { access_key = “тут ключ доступа” secret key = “тут секретный ключ” region = “eu-central-1” } При нажатии Ctrl+S, мы сохраняем и видим, что плагин аккуратно выправляет для удобства написанный код. Теперь можно сделать первый ресурс. Например, инстанс в Амазон. Добавляем ниже: resource “aws_instance” “my_название” { ami = “” instance_type = “” } Для поднятия ресурса необходимо указать 2 минимальные вещи. Это ami – image id и instance_type. Теперь необходимо пойти в указанный регион, открыть EC2 и посмотреть ami интересующего инстанса. А тип возьмем t2.micro. Данный тип для новых аккаунтов на год бесплатный. Получаем код полностью готовый для развертывания первого инстанса. В принципе все готово для запуска первого инстанса. Код Terraform будет выглядеть следующим образом: provider “aws” { access_key = “тут ключ доступа” secret key = “тут секретный ключ” region = “eu-central-1” } resource “aws_instance” “TestUbuntu” { ami = “ami-0767046d1677be5a0” instance_type = “t2.micro” } Запускаем консоль и переходим в директорию, где находится у нас Terraform. Далее есть небольшой нюанс запуска, чтобы в коде не светить свои access_key и secret_key, эти данные можно убрать, экспортировав в переменные. Делается это следующим образом. С помощью команды export. export AWS_ACCESS_KEY_ID=ключ export AWS_SECRET_ACCESS_KEY=ключ И можно убирать эти 2 строчки из кода. Теперь запускаем Terraform. Первая команда, которую необходимо сделать это команда terraform init, данная команда пройдется по всем tf файлам, она увидит провайдера и скачает дополнительные файлы, необходимые для запуска в том числе и бинарники. Сам Terraform – это такая оболочка, которая подкачивает все, что ей необходимо. Следующая команда, которая понадобится это terraform plan, данная команда позволяет посмотреть, что Terraform будет делать. Т.е нечто вроде Whatif. Данная команда очень важна т.к в крупных проектах, позволяет заранее посмотреть, что будет если мы запустим файл терраформа. Вывод ее большой, кусочек представлен на картинке. Можно увидеть, что добавится. Достаточно удобно. Как мы видим, при команде на deploy, Terraform добавит в амазон 1 instance, т.е 1 виртуальную машину из указанного шаблона, указанного типа и размера. Непосредственно для deploy, необходимо ввести команду terraform apply, прочитать что Terraform будет делать и явным образом, командой yes подтвердить. После подтверждения видим следующую картину. Со стороны консоли. Со стороны амазона спустя полминуты. Как мы видим сервер создался и проходит инициализацию.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59