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

Cisco, король сетей центров обработки данных в течение 3 десятилетий, становится все менее важной в облачном мире. Собственные облачные сети в AWS, Azure и Google Cloud (GCP) не очень хороши — есть масса возможностей, но Cisco еще не полностью взяла на себя обязательство вывести свои продукты в облачный мир, несмотря на их новое прозвище «облачный сервис». Компания «Первый».

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

В этом руководстве рассматривается развертывание с нуля в пустой среде AWS конфигурации устройство ASAv10 в конфигурации BYOL (Bring Your Own License) с помощью Terraform практически без усилий. Это устройство можно использовать для проверки конфигураций, тестирования обновлений или просто для экспериментов с самой популярной сегодня облачной платформой Cisco.

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

Что Terraform не может (пока) сделать

Terraform — это инструмент от HashiCorp, способный поддерживать многие десятки вызовов API для развертывания ресурсов и управления ими. Мы создадим целый ряд поддерживаемых сетей AWS внутри нового VPC, а также предоставим общедоступный IP-адрес и устройство Cisco ASAv10 из AWS Marketplace, и все это с помощью Terraform.

Однако есть несколько вещей, которые нам нужно будет сделать вручную, которые Terraform либо пока не может сделать, либо имеет больше смысла делать вручную:

  • Создание учетной записи AWS. Terraform может создать учетную запись AWS полностью с нуля, но сегодня это выходит за рамки нашей задачи.
  • Подпишитесь на Cisco ASAv в AWS Marketplace. Ресурсы из AWS Marketplace нельзя развернуть без предварительной подписки на ресурс, что на самом деле означает просто нажать кнопку «Подписаться» (бесплатно), поэтому мы Я нажму эту кнопку.
  • Создайте ключ SSH для нашего ASA. Terraform может создать конфигурацию ключа SSH в AWS, но в моих лабораторных экспериментах эта функция содержит ошибки, поэтому мы создадим пару ключей SSH вручную.
  • Создайте пользователя IAM с правами администратора. Нам нужно запустить terraform с нашего локального компьютера, что означает, что наш локальный CLI должен каким-то образом пройти аутентификацию в AWS. AWS управляет этим с помощью жестко закодированных имени пользователя и пароля, привязанных к пользователю Identity and Access Management (IAM).

Создайте учетную запись AWS

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

Обратите внимание, что устройство ASAv10 не соответствует статусу уровня бесплатного пользования в AWS. Машина, которую мы развернем, стоит 72 доллара в месяц, но она оплачивается поминутно. Поэтому, если вы продолжите работу в течение часа, AWS будет взимать с вас 0,10 цента. Тем не менее, Terraform может создавать и развертывать устройство полностью с помощью автоматизации, поэтому, когда вы закончите играть, вы можете просто уничтожить все и отключить заряды — мы расскажем об этом в конце этого поста.

После полной регистрации продолжайте подписку на Cisco ASAv на торговой площадке.

Подпишитесь на Cisco ASAv на AWS Marketplace

«Подписаться» не имеет традиционного значения в стране AWS. Мы не «подписываемся» в том смысле, что с нас сразу же начнут взимать плату. Под подпиской здесь подразумевается согласие с разумными условиями, установленными Cisco для этого устройства.

Начать на этой странице и нажмите Продолжить подписку вверху справа.

Нажмите «Принять условия», чтобы принять все условия и положения для Cisco ASAv в AWS.

Как только вы увидите «Спасибо за подписку», все готово. Вскоре после этого вы также получите электронное письмо (вероятно, через 1–2 минуты), подтверждающее, что вы подписаны.

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

Создайте ключ SSH для нашего ASA

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

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

Ключи SSH управляются через панель ec2 в консоли AWS, так что давайте туда.

В левом столбце нажмите «Пары ключей» в раскрывающемся списке «Сеть и безопасность».

Как видите, в новой учетной записи AWS еще нет пар ключей. В правом верхнем углу нажмите «Создать пару ключей».

Назовите ключ точно cisco_asav_keypair для наиболее простого пути вперед (это то, что будет искать код терраформирования, который мы будем использовать позже). Если вам нравится модифицировать некоторые элементы Terraform (черт возьми, да!), то назовите ключ SSH как хотите. Оставьте ключ на типе PEM, если вы используете клиенты OpenSSH, такие как собственный клиент Mac и Linux, или используйте PPK, если вы используете PuTTY в Windows.

У меня *nix-машина, поэтому давайте скопируем ключ SSH в папку с ключом SSH с именем .ssh в моей домашней папке. Эта папка защищена, поэтому используйте sudo для этой команды. Нам также нужно обновить разрешения по умолчанию для файла, чтобы заблокировать его для нашего пользователя, что требуется для клиента SSH в системах * nix. Если вы используете Windows, импортируйте PPK в свой клиент PuTTY.

После этого наш SSH-ключ готов к использованию. На следующий шаг!

Создайте пользователя IAM с правами администратора

Прежде чем мы сможем что-то сделать с terraform, нам нужно пройти аутентификацию. Самый простой способ сделать это — создать пользователя IAM в AWS.

Сначала перейдите в AWS и введите IAM в консоли главной страницы, затем щелкните раскрывающийся список IAM.

Нажмите «Пользователи» в левом столбце, затем нажмите «Добавить пользователя» в левом верхнем углу.

Назовите своего пользователя. Это может быть что угодно, но полезно дать ему имя, которое вы узнаете позже. Terraform может делать только то, что может делать пользователь IAM, и мы собираемся сделать его глобальным администратором в этой учетной записи, поэтому я хотел бы включить «Администратор» в то же самое, чтобы не забывать не делиться учетными данными доступа.

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

Этот пользователь теперь существует, но ничего не может сделать. Для более подробного ознакомления с IAM (а это действительно глубоко) обратитесь к тому же более раннему блогу о принятии на себя роли IAM. Чтобы предоставить ему разрешения, мы можем либо создать пользовательскую политику с конкретными и ограниченными разрешениями, либо мы можем связать существующие политики. Для этой демонстрации мы будем использовать AdministratorAccess, но запомните этот шаг как еще одну возможность для дополнительной безопасности в реальной корпоративной среде.

Нажмите «Следующие теги» в правом нижнем углу, затем «Следующий обзор». Если страница обзора выглядит так, как показано ниже, нажмите «Создать пользователя» в правом нижнем углу, и мы в деле.

Вам предоставляется идентификатор ключа доступа и секретный ключ доступа (за ссылкой «показать»). Вам понадобятся оба из них, так что не закрывайте эту страницу.

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

Теперь ваш локальный терминал может запускать terraform с полными правами администратора в вашей учетной записи! Давайте займемся терраформированием.

Реплицируйте GitHub ASAv Terraform на свой компьютер

Теперь у нас есть все компоненты, необходимые для выполнения нашего терраформирования… кроме самого терраформирования! Нам нужно скопировать этот репозиторий GitHub на наш компьютер. Вы можете загрузить его через веб-браузер или использовать классную команду git clone, чтобы получить его на своем компьютере: git clone [email protected]:KyMidd/AWSCiscoASAvTerraform.git . Это общедоступный репозиторий, поэтому аутентификация вообще не требуется.

Обзор и обновления Terraform

Эта конфигурация terraform в основном готова, но есть несколько значений, которые нам нужно обновить, чтобы она работала на вас. Проверьте строки 12–17 в файле main.tf. Это локальные значения, которые мы можем настроить.

cisco_asav_name просто для развлечения — назовите устройство Cisco ASAv как угодно! На функциональность конфига это никак не влияет.

my_public_ip — это мера безопасности. AWS разрешит только один общедоступный IP-адрес для SSH на этом устройстве, чтобы никто другой не пытался подключиться к вашему блестящему новому устройству. Найдите свой общедоступный IP-адрес (вы можете погуглить «что такое мой IP-адрес») и введите его здесь с /32 в конце. Поэтому, если ваш общедоступный IP-адрес 1.2.3.4, введите 1.2.3.4/32, как показано ниже.

ssh_key_name используется только в том случае, если вы создали пару ключей AWS ec2 SSH с другим именем. Обновите его здесь и сохраните файл.

Также проверьте другой файл, aws_cisco_asav_config.txt. Это исходная конфигурация для устройства ASAv. Процесс раскрутки AWS ec2 создаст этот файл конфигурации для того, чтобы ASA мог принять и настроить себя, что требуется для этих устройств безопасности, которые обычно остаются пустыми и требуют подключения к консоли для настройки (то, что не существует в стране AWS).

Приведенная выше конфигурация требует подключения к устройству с именем пользователя admin и без пароля. Мы доверяем требование ключа ec2 SSH для нашей защиты. Если вы хотите еще больше обезопасить свое устройство, вы можете либо изменить этот файл (который перестроит ASA после повторного запуска terraform apply), либо оставить его в покое и внести нужные изменения в ASA вручную.

Давайте построим ASAv!

Во-первых, давайте инициализируем терраформ, чтобы проверить его работоспособность и действительную конфигурацию терраформа с помощью команды terraform init. Если это выглядит так, как показано ниже, то можно продолжать.

Теперь давайте создадим кое-что. Запустите команду terraform apply и дайте Terraform минуту, чтобы проанализировать нашу конфигурацию и вернуть план. Ответьте yes и нажмите Enter, и Terraform начнет сборку.

Надеюсь, через несколько минут вы увидите, что Terraform успешно завершил работу, и ответит общедоступным IP-адресом вашего нового блестящего устройства ASAv.

Теперь, и это очень важно, ЖДИТЕ. Очень долго, чтобы ASAv загрузился и заработал. В моем тестировании это составляет 10–15 минут, примерно столько же вы видите, когда реальное устройство ASA полностью загружается после обновления.

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

Пока ждем, еще одно напоминание. Как только этот экземпляр ec2 будет подготовлен и включен, AWS начнет выставление счетов. Это 0,10 доллара в час, что тривиально, если только вы не забудете об этом на месяц и вдруг не задолжали 72 доллара в месяц. Если вам нужно отдохнуть от этого, я рекомендую запустить terraform destroy, чтобы снести все, что может стоить вам денег. Terraform удалит только проекты, управляемые в этом файле. Я расскажу об этом более подробно в конце этого поста.

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

Вы попали в оболочку по умолчанию и вам нужно войти в режим включения с помощью en. Вам необходимо сразу же установить пароль включения, так что сделайте это, а затем wr запишите конфигурацию в nvram (который на самом деле представляет собой эластичное хранилище блоков AWS на серверной части).

Теперь у вас есть полнофункциональное устройство Cisco ASAv10 в облаке, с которым вы можете играть!

Уничтожьте все, чтобы сэкономить $$

Экземпляр ec2, на котором работает ASAv10, стоит 0,10 доллара США в час, что составляет 72 доллара США в месяц. Обычно вы не хотели бы разрушать инстанс, чтобы сэкономить деньги (подумайте, сколько времени потребуется, чтобы снова построить его вручную!). Но в этом мире инфра-кода, в котором мы сейчас находимся, перестроить его так же просто, как ввести команду terraform apply.

Так что моя рекомендация на случай, если вы захотите ненадолго отойти — разрушить все. В Terraform есть удобная команда, которая помогает нам в этом: terraform destroy. Введите yes и нажмите Enter, чтобы начать уничтожение Terraform.

Резюме

Создание ASA в VIRL или GNS3 — это боль. Он ресурсоемкий, потенциально связан с затратами на лицензирование и не очень гибкий. Создание устройства ASAv таким образом потенциально может быть привязано к CI/CD — как насчет автоматической проверки конфигураций с помощью динамической сборки устройства VPC + ASAv? Не говоря уже о простой лабораторной работе ASA по запросу, где можно поиграться с VPN, фильтрацией, AnyConnect и т. д.

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

Удачи.
Кайлер