terraform Пример настройки сервисов EC2 и ELB в AWS

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

В нашем слу­чае мы созда­дим вир­ту­аль­ную маши­ну EC2 и балан­си­ров­щик нагруз­ки ELB, а так­же необ­хо­ди­мые допол­ни­тель­ные кон­фи­гу­ра­ции в security-group для про­пус­ка трафика.

для нача­ла созда­дим файл с пере­мен­ны­ми, в кото­рых будут про­пи­са­ны наши пер­со­наль­ные дан­ные для под­клю­че­ния к обла­ку AWS. Файл назо­вем variables.tf. Все фай­лы с рас­ши­ре­ни­ем .tf в теку­щей пап­ке будут обра­бо­та­ны terrafrom при выполнении.

Кон­крет­ные зна­че­ния этих пере­мен­ных про­пи­шем в фай­ле terraform.tfvars, кото­рый так­же обра­ба­ты­ва­ет­ся terraform при запуске.

Теперь, созда­дим файл с базо­вы­ми настрой­ка­ми под­клю­че­ния к AWS и опи­са­ни­ем инстан­са EC2. Файл назо­вем ec2.tf. Его содер­жи­мое пред­став­ле­но ниже.

Выше мы созда­ем provider, кото­рый опи­сы­ва­ет пара­мет­ры под­клю­че­ния к AWS. После это­го созда­ем инстанс EC2 web1 и пуб­лич­ный адрес это­го инстан­са. В настрой­ках инстан­са ука­за­на пере­мен­ная security-group, кото­рая ука­зы­ва­ет на те пра­ви­ла про­пус­ка тра­фи­ка из Интер­не­та к нашим ресур­сам в обла­ке Amazon. Дан­ная security-group про­пи­са­на у нас в отдель­ном фай­ле acl.tf. Содер­жи­мое это­го фай­ла ниже.

В пра­ви­лах мы раз­ре­ша­ем HTTP, SSH и ICMP вхо­дя­щий тра­фик, а так­же весь исхо­дя­щий трафик.

И в завер­ше­ние созда­дим базо­вый клас­си­че­ский балан­си­ров­щик нагруз­ки aws elb, кото­рый будет про­бра­сы­вать тра­фик сна­ру­жи на наши aws сер­ве­ра (в дан­ном при­ме­ре на 1 вир­ту­аль­ный сер­вер). Файл elb.tf при­ве­ден ниже.

В фай­ле elb.tf мы созда­ем балан­си­ров­щик как ресурс aws_elb. В нем ука­зы­ва­ем, какой тип тра­фи­ка мы будем при­ни­мать, а так­же на какие инстан­сы EC2 этот тра­фик будем балансировать.

Вот пожа­луй и все. Выпол­ня­ем в кон­со­ли коман­ду #terraform apply. В резуль­та­те выпол­не­ния этой коман­ды полу­ча­ем раз­во­ра­чи­ва­ни­ей нашей IT инфра­струк­ту­ры в обла­ке Amazon. Мож­но под­клю­чать­ся к инстан­су EC2 через SSH, уста­нав­ли­вать нуж­ный софт для веб при­ло­же­ния. Но это уже не про terraform, поэто­му оста­нав­ли­вать­ся на этом не будем.

C помо­щью коман­ды #aws elb describe-load-balancers узна­ем DNS имя наше­го балан­си­ров­щи­ка. Теперь напра­вив HTTP тра­фик на это имя, мы полу­чим дан­ный тра­фик на наших EC2 серверах.