СОЗДАНИЕ РЕСУРСОВ AWS С TERRAFORM

Thank you for reading this post, don't forget to subscribe!

раз­бе­рем, как создать про­стей­шие ресур­сы в обла­ке AWS (Amazon Web Services) с помо­щью заме­ча­тель­но­го инстру­мен­та IaaS, под назва­ни­ем Terraform. Для того, что­бы мож­но было повто­рить то, о чем пой­дет речь в ста­тье необ­хо­дим дей­ству­ю­щий акка­унт AWS и рабо­чая маши­на (вир­ту­аль­ный сер­вер) с уста­нов­лен­ным Terraform, и тек­сто­вым редак­то­ром Atom + пла­гин для Terraform.

созда­дим пап­ку под наш новый про­ект, мож­но непо­сред­ствен­но в домаш­ней директории.

sudo mkdir terraform 

Созда­дим пер­вый файл наше­го тер­ра­форм кода. Мож­но создать непо­сред­ствен­но в редак­то­ре, через меню или в команд­ной стро­ке sudo touch myterr.tf. Прин­ци­пи­аль­ной раз­ни­цы, как будет создан файл нет. Если созда­ли через команд­ную стро­ку откры­ва­ем, как обыч­ный файл в редакторе.

Далее схе­ма рабо­ты сле­ду­ю­щая: пишем код в фай­ле, сохра­ня­ем, про­из­во­дим управ­ля­ю­щие коман­ды в команд­ной стро­ке для выпол­не­ния или про­вер­ки дан­но­го кода, уни­что­же­ния, моди­фи­ка­ции эле­мен­тов или объ­ек­тов в облаке.

Как в нача­ле ста­тьи было ска­за­но, нам необ­хо­дим акка­унт AWS, что­бы тер­ра­форм вза­и­мо­дей­ство­вал с облач­ной инфра­струк­ту­рой, а более кон­крет­но нам нуж­но создать поль­зо­ва­те­ля и полу­чить access key и secret key, для досту­па к обла­ку. Это необ­хо­ди­мо для аун­ти­фи­ка­ции Terraform в AWS облаке.

Захо­дим в AWS кон­соль и выби­ра­ем сер­вис IAM. Захо­дим во вклад­ку поль­зо­ва­те­ли и созда­ем новую учет­ную запись. Вво­дим имя поль­зо­ва­те­ля в пустое поле. Нуж­но поста­вить Programmatic Access. Далее нажи­ма­ем Создать поль­зо­ва­те­ля и попа­да­ем на заклад­ку назна­че­ния прав. Тут необ­хо­ди­мо при­со­еде­нить уже создан­ный по умол­ча­нию в AWS набор прав адми­ни­стра­то­ра. Далее пере­хо­дим к стра­нич­ке назна­че­ния Tag, тут по жела­нию ваше­му, если хоти­те то може­те доба­вить тэги. Нажи­ма­ем кноп­ку создать пользователя.

Финаль­ное окно будет выгля­деть сле­ду­ю­щим образом.

Полу­ча­ем те дан­ные, кото­рые нам необ­хо­ди­мы для Terraform.

Очень важ­но - Secret key пока­зы­ва­ет­ся толь­ко один раз!

Теперь в прин­ци­пе все гото­во для созда­ния пер­во­го ресур­са в AWS.

Начи­на­ем с объ­яв­ле­ния с каким обла­ком мы работаем.

Тем самым мы обо­зна­чи­ли с каким облач­ным про­вай­де­ром мы будем рабо­тать. В дан­ном коде в отли­чии от YAML, коли­че­ство про­бе­лов не важ­но. Далее про­пи­сы­ва­ем access key и secret key. В каком реги­оне будут исполь­зо­вать­ся ресур­сы. Реги­он мы ука­жем eu-central-1 – это ЦОД рас­по­ло­жен­ный в Евро­пе во Фран­фурк­те. Ста­рай­тесь реги­он ука­зы­вать, побли­же к себе, что­бы до ресур­сов была мини­маль­ная задерж­ка про­хож­де­ния пакетов.

При нажа­тии Ctrl+S, мы сохра­ня­ем и видим, что пла­гин акку­рат­но выправ­ля­ет для удоб­ства напи­сан­ный код.

Теперь мож­но сде­лать пер­вый ресурс. Напри­мер, инстанс в Ама­зон. Добав­ля­ем ниже:

Для под­ня­тия ресур­са необ­хо­ди­мо ука­зать 2 мини­маль­ные вещи. Это ami – image id и instance_type. Теперь необ­хо­ди­мо пой­ти в ука­зан­ный реги­он, открыть EC2 и посмот­реть ami инте­ре­су­ю­ще­го инстанса.

А тип возь­мем t2.micro. Дан­ный тип для новых акка­ун­тов на год бес­плат­ный. Полу­ча­ем код пол­но­стью гото­вый для раз­вер­ты­ва­ния пер­во­го инстанса.

 

В прин­ци­пе все гото­во для запус­ка пер­во­го инстан­са. Код Terraform будет выгля­деть сле­ду­ю­щим образом:

Запус­ка­ем кон­соль и пере­хо­дим в дирек­то­рию, где нахо­дит­ся у нас 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 подтвердить.

После под­твер­жде­ния видим сле­ду­ю­щую кар­ти­ну. Со сто­ро­ны консоли.

Со сто­ро­ны ама­зо­на спу­стя полминуты.

Как мы видим сер­вер создал­ся и про­хо­дит инициализацию.