Вам не нужно знать Terraform, Ansible, Chef, Puppet или любые другие инструменты инфраструктуры как кода (IAC) для автоматизации ваших развертываний на платформе Google Cloud.
Google предлагает несколько инструментов командной строки в своем Комплект для разработки программного обеспечения (SDK) Это можно использовать для создания/уничтожения ресурсов, взаимодействия с ведрами хранения, создания правил брандмауэра и многого другого; Вы можете автоматизировать все свое развертывание!
Наличие надежного понимания инструментов SDK принесет дивиденды в вашей карьере, и они являются требованиями для каждого сертификата GCP; Очень полезно потратить некоторое время на то, чтобы чувствовать себя комфортно с ними.
Это не учебник о том, как использовать GCLOUD, поэтому, если вы, как правило, не знакомы с инструментом, пожалуйста, посмотрите ресурсы ниже, чтобы заполнить какие -либо пробелы в знаниях.
Обзор инструмента командной строки GCLOUD | Облачная документация SDK GCLOUD Chief -Speat | Облачная документация SDK
Чтобы автоматизировать вызов нескольких команд GCLOUD для создания нашей инфраструктуры, я собираюсь использовать сценарии Bash. Если вы не знакомы с сценарием Bash, вот TLDR;
Команды оболочки перечислены в файле, который выполняется в последовательности
Давайте посмотрим на небольшой сценарий развертывания.
create_instance.sh
#!/bin/bash ZONE="us-east1-a" echo "Welcome to our tiny script - lets create an instance" gcloud compute instances create instance-1 --zone $ZONE echo "Done!
Этот скрипт дает нам некоторые консольные выводы, чтобы сообщить нам, что он работает, создает экземпляр с именем экземпляр 1
В зоне, определенной переменной Зона
В этом случае US-EAST1-A
Анкет
С этой концепцией мы можем расширить его до более крупных более сложных развертываний; И то же самое можно использовать для разрыва инфраструктуры целесообразной программой.
Чтобы наши системы были правильно настроены после создания в облаке, мы собираемся использовать еще одну функцию, предлагаемую нам GCP, «сценарий стартапа». Сценарий запуска — это скрипт, который выполняется после создания системы и вращается в первый раз. Мы можем настроить сценарий запуска, чтобы запустить несколько разных способов:
- Удаленный файл, хранящийся на общедоступном сервере
- Файл, хранящийся в ведре Google Cloud
- Вставлен в наш сценарий развертывания
В приведенном ниже примере показана пара значений значений метаданных в команде GCLOUD, чтобы вытащить файл с удаленного сервера
Gcloud Compute Acces Create Encance-1 –Metadata://server.com/script.sh
script.sh # Update and install packages sudo apt-get update sudo apt-get install git build-essential apache2 -y # Update index.html page echo "We're live!
" > /var/www/html/index.html echo "DONE!"
Наш скрипт расположен на удаленном (общедоступном) сервере, снята, выполнено, и наш пользовательский сервер работает и работает!
Этот обзор должен дать вам новое представление о мощности автоматизации создания сети и начальной загрузки системы.
Выходя из этой идеи на следующий уровень, я хотел иметь сценарии развертывания для различных вариантов использования, готовых в моем распоряжении, когда это необходимо. Одна из тех, кого я хочу пройти с вами сегодня, — это простая факультета криминалистики. Место, где файлы могут быть рассечены, хранить вредоносное ПО и сегментирование от моего личного и рабочего оборудования.
Вот мои требования
- Судебная станция
- Kali Linux Workstation
- Горшок меда
- Сегментированный от других рабочих станций
- Ведро для вредоносных программ и потенциальных плохих вещей
Небольшое художественное усилие позже это сетевая диаграмма, которую я придумал.
Эта сетевая диаграмма дает нам больше понимания того, как мы хотим, чтобы наши ресурсы были структурированы и сгруппированы, давайте больше создам нашу дизайнерскую документацию.
VPC, который содержит две подчинки, безопасные/небезопасные. Safe будет содержать наши экземпляры, используемые для анализа и инструментов, помеченных «администратором» для правил брандмауэра, которые позволяют Ingress на 22, 80, 443 и ICMP (Ping).
Небезопасная подсеть будет содержать один хост, honeypot и помеченная «небезопасная» правила брандмауэра, чтобы разрешить соединения на всех портах и протоколах только для хостов с соответствующей тегом.
Не напрямую объект, который будет жить в нашем VPC Но у нас также будет облачное ведро для хранения любых файлов или отчетов анализа; Этот ресурс будет ресурсом на уровне проекта.
Имея в виду эти соображения дизайна и использование пользовательского интерфейса Console, чтобы помочь нам создать Gcloud
команды В конечном итоге мы получим следующий скрипт развертывания (примечание. Для внедрения в блоге сценарии запуска ясности вставлены сценарии)
#!/bin/bash echo "Create VPC and subnets" gcloud compute networks create lab-net --subnet-mode=custom --bgp-routing-mode=regional gcloud compute networks subnets create safe --range=192.168.0.0/24 --network=lab-net --region=us-east1 gcloud compute networks subnets create unsafe --range=192.168.128.0/29 --network=lab-net --region=us-east1 echo "Creating SIFT instance" gcloud compute instances create sift-1 --tags=admin \ --metadata startup-script=' #! /bin/bash sudo su - apt-get update # TO DO: Install SIFT EOF' echo "Creating Kali instance" gcloud compute instances create kali-1 --tags=admin \ --metadata startup-script=' #! /bin/bash sudo su - apt-get update # TO DO: Install KALI Tools EOF' echo "Creating Honeypot instance" gcloud compute instances create honeypot-1 --tags=insecure \ --metadata startup-script=' #! /bin/bash sudo su - apt-get update # TO DO: Install Honeypots EOF' echo "Create Bucket for storage" gsutil mb gs://bucket-of-bad-stuff echo "Adding firewall rules" gcloud compute firewall-rules create allow-ingress-admin-lab-net --direction=INGRESS --priority=1000 --network=lab-net --action=ALLOW --rules=tcp:22,tcp:80,tcp:443,icmp --source-ranges=0.0.0.0/0 --target-tags=admin gcloud compute firewall-rules create allow-ingress-insecure-lab-net --direction=INGRESS --priority=1000 --network=lab-net --action=ALLOW --rules=all --source-ranges=0.0.0.0/0 --target-tags=insecure echo "Done"
Я оставлю понимание сценариев в качестве упражнения для читателя!
Чтобы лаборатория была завершена, все еще есть некоторые недостающие части, ни одна из систем не была сконфигурирована и все еще находится в состоянии их по умолчанию; что будет усилием на другой день.
Кроме того, если наши экземпляры не имеют необходимости сохранять в течение длительных периодов времени, мы можем сократить расходы, используя упреждаемые экземпляры, о чем я говорю в это Сообщение блога.
Как только мы собрали все наши образцы, выполнили наш исчерпывающий анализ криминалистики, написали подробный отчет и отправили его нашему клиенту, мы можем начать разрушать нашу инфраструктуру. Это то, что мы также можем автоматизировать с помощью небольшого сценария Bash.
#!/bin/bash echo "Deleting instances..." gcloud compute instances delete sift-1 -q gcloud compute instances delete kali-1 -q gcloud compute instances delete honeypot-1 -q echo "Removing bucket..." gsutil rm -r gs://bucket-of-bad-stuff echo "Removing firewall rules..." gcloud compute firewall-rules delete allow-ingress-admin-lab-net -q gcloud compute firewall-rules delete allow-ingress-insecure-lab-net -q echo "Removing subnets and network..." gcloud compute networks subnets delete unsafe -q gcloud compute networks subnets delete safe -q gcloud compute networks delete lab-net -q echo "Done"
Каждый ресурс можно ссылаться по имени и удаляется с использованием соответствующего gcloud
командный модуль. -q
Флаг превосходит «Вы уверены? » Предупреждение и управляет действием.
В последнем действии мне было любопытно, сколько времени требуется, чтобы настроить и уничтожить этот VPC, я провел некоторые не очень научные тесты времени.
В среднем VPC и создание ресурсов было завершено менее чем за 1 м30,*
bash DEPLOY_FORENSICS_ENV.sh 7.95s user 1.65s system 11% cpu 1:22.75 total
*Примечание. Время создания не учитывает время настройки системы, если есть какие -либо сценарии запуска, ваша система может быть создана, но не полностью готова к действию.
Разрушение заняло больше времени.
bash DESTROY_FORENSICS_ENV.sh 7.81s user 1.69s system 7% cpu 2:10.41 total
Это время также будет варьироваться в зависимости от таких вещей, как: тип машины, если есть какие -либо сценарии отключения и размер диска.
Я надеюсь, что это дает вам представление о том, что возможно с автоматическими развертываниями, и что вы начнете думать о создании своей собственной одноразовой инфраструктуры для выполнения задач, а не привязан к владению аппаратным обеспечением.
Оригинал: «https://dev.to/0xbanana/automating-deploys-with-bash-scripting-and-google-cloud-sdk-4976»