terraform. ИСПОЛЬЗОВАНИЕ ВНЕШНИХ СТАТИЧЕСКИХ ФАЙЛОВ ПРИ СОЗДАНИИ AWS СЕРВЕРА

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

В преды­ду­щей ста­тье мы рас­смот­ре­ли раз­вер­ты­ва­ние сер­ве­ра с помо­щью Terraform в Amazon обла­ке. Мы исполь­зо­ва­ли для раз­вер­ты­ва­ния файл с кодом, где опи­са­ли пол­но­стью наш сер­вер и доба­ви­ли скрипт на скрип­то­вом язы­ке bash, что­бы созда­лась HTML стра­нич­ка с IP адре­сом сервера.

Сам скрипт:

Поме­ще­ние подоб­но­го скрип­та в код для под­ня­тия инстан­са, не очень хоро­шая прак­ти­ка, обыч­но для это­го исполь­зу­ют­ся внеш­ние ста­ти­че­ские фай­лы. На это есть несколь­ко при­чин, одна из них раз­де­ле­ние ролей в коман­де, напри­мер. Один чело­век пишет Terraform код, а дру­гой скрип­ты для сер­ве­ров на bash если это Linux сер­вер или на PowerShell если сер­вер раз­во­ра­чи­ва­ет­ся под управ­ле­ни­ем опе­ра­ци­он­ной систе­мой Windows. Еще одной при­чи­ной явля­ет­ся инфор­ма­ци­он­ная без­опас­ность точ­ки зре­ния, кото­рой не кор­рект­но встав­лять скрипт внут­ри тер­ра­форм кода.

созда­дим новый файл WebServer.tr, коман­дой nano webserver.tr и вста­вим рабо­чий код:

Далее мы можем выре­зать те дан­ные кото­рые у нас пой­дут в скрипт и сохра­ня­ем файл. Созда­дим еще один файл назо­вем его user_data.sh. Созда­ет­ся файл доста­точ­но про­сто - nano user_data.sh. В дан­ный файл мы встав­ля­ем выре­зан­ный кусок скрип­та. Очень важ­но, обра­ти­те вни­ма­ние! Файл дол­жен начи­нать­ся с #!/bin/bash дан­ная стро­ка ука­зы­ва­ет, что для испол­не­ния дан­но­го фай­ла дол­жен исполь­зо­вать­ся скрип­то­вый язык bash. Сохра­ня­ем. На самом деле рас­ши­ре­ние фай­ла, созда­ва­е­мо­го не важ­но, т.к мы будем исполь­зо­вать функ­цию в Terraform кото­рая берет кон­тент из фай­ла и дела­ет встав­ку в код, авто­ма­ти­че­ски под­хва­ты­вая скрипт. Далее пере­хо­дим к редак­ти­ро­ва­нию основ­но­го фай­ла из кото­ро­го мы выре­за­ли скрипт. Откры­ва­ем его любым тек­сто­вым редак­то­ром опять - nano webserver.tr. И нам теперь необ­хо­ди­мо вста­вить функ­цию, кото­рая возь­мет дан­ные из фай­ла. В общем виде дан­ная функ­ция будет выгля­деть сле­ду­ю­щим образом:

user_data = file(“./dir/myfile.txt”)

В нашем слу­чае строч­ка моди­фи­ци­ру­ет­ся, т.к файл лежит в той же дирек­то­рии, что и Terraform файл user_data = file(“user_data.sh”).

Теперь, что­бы про­ве­рить, как это рабо­та­ет мы долж­ны сде­лать пер­во­на­чаль­ную ини­ци­а­цию Terraform, коман­дой terraform init. Terraform, как обыч­но ска­ча­ет все, что ему необ­хо­ди­мо для рабо­ты. Далее про­ве­ря­ем, что у нас полу­чи­лось и посмот­рим, какие изме­не­ния Terraform про­из­ве­дет. В резуль­та­те мы можем видеть, что, как и в про­шлый раз будет созда­но 2 эле­мен­та. Сер­вер и Груп­па без­опас­но­сти. Далее для запус­ка сер­ве­ра мы можем исполь­зо­вать стан­дарт­ную коман­ду terraform apply и на вопрос систе­мы отве­ча­ем утвер­ди­тель­но. Мож­но сра­зу уви­деть, что про­цесс созда­ния сер­ве­ра и груп­пы без­опас­но­сти начался.

Как види­те про­цесс занял совсем неболь­шое время.

В дан­ном слу­чае не более одной мину­ты. Если мы зай­дем в кон­соль мы можем убе­дит­ся, что инстанс поднялся.

Нахо­дим при­сво­ен­ный ама­зо­ном белый ip адрес, кото­рый нам поз­во­лит из интер­не­та про­ве­рить рабо­то­спо­соб­ность наше­го сер­ве­ра и исполь­зо­ва­ние ста­ти­че­ско­го фай­ла в каче­стве наше­го скрип­та, т.е убе­дит­ся, что у нас все заработало.

 

И послед­ний шаг, про­ве­ря­ем что наш веб сер­вер досту­пен из гло­баль­ной сети. Обра­ща­ем­ся к нему, через бра­у­зер по про­то­ко­лу http. В дан­ном слу­чае - http://18.157.187.102/.

Вот мы можем уви­деть вот такую картину.

Не забудь­те выклю­чить и уда­лить все не нуж­ные вам ресур­сы в Ама­зон, во избе­жа­ние лиш­них затрат.