Terraformiranje vaše AWS infrastrukture

Pisanje vaše infrastrukture kao da je to kôd predstavlja ogroman korak naprijed iz današnjih dana. U jednom koraku, dokumentiraćete ceo vaš stack dok se orkestrira stvaranje svoje infrastrukture. Druga, čak i veća korist, je mogućnost verifikacije kontrole vaše infrastrukture. Zamislite da budete u mogućnosti da podnesete celu proizvodnju ili postavljanje infrastrukture za manje od sat vremena, a ne dana.

U ovom članku ću vas uputiti kroz proces postavljanja prilično jednostavne, ali uobičajene infrastrukture koja se nalazi na Amazonovoj Web servisu. Dijagram ispod pokazuje kako će se infrastruktura nadgledati nakon što se primeni Terraform konfiguracija.

Terrafrom AWS

Terraform

Terraform je proizvod objavljen od strane HashiCorp-a koji se izvlači od API sloja vašeg provajdera, kao što je AWS u ovom slučaju, što vam omogućava da dokumentujete celokupnu infrastrukturu na JSON jeziku koji je lako čitati i razumjeti.

Sama alatka ide mnogo dalje od Amazon AWS-a. Na raspolaganju je veliki broj ponuđača, kao što su VMWare, DigitalOcean i Heroku.

Kodiranje naše infrastrukture

Instalirajte Terraform i Git

  1. Instalirajte Git.
    Debian \ Ubuntu

    sudo apt-get install git

    Redhat \ CentOS

    sudo yum instalirati git

    Windows
    Preuzmite Git za Windows.

  2. Preuzmite Terraform sa web stranice Terraform na https://www.terraform.io/downloads.html
  3. Izvadite preuzetu Terraform arhivu u direktorijum koji je postavljen u vašoj PATH okruženju.
    Windows: C: \ Windows \ System32
    Linux: / usr / bin.

Postavite provajdera

Počinjemo definisanjem našeg provajdera, koji u našem slučaju predstavlja AWS. Morate postaviti neke vrednosti koje Terraform-u omogućavaju da se povežu i komuniciraju sa Amazon-om.

  1. Kreirajte direktorij za držanje vaših Terraform datoteka.
    mkdir -p ~ / terraform / myapp
  2. Kreirajte datoteku sa ekstenzijom ".tf". U ovom primjeru će se stvoriti ime datoteke myapp.tf.
  3. Otvorite tf datoteku u tekst editor.
  4. Dodajte mu sledeći sadržaj. Dobavljač smo postavili na "AWS" da označimo da je za Amazonovu Web servis. Takođe definišemo ključ za pristup, tajni ključ i region u koji ćemo graditi infrastrukturu.
    # Konfigurišući provajdera AWS provajdera "aws" {access_key = "$ {var.aws_access_key}" secret_key = "$ {var.aws_secret_key}" region = "us-istok-1"}
    

Definisanje VPC mreže

  1. Definišite VPC nazvan "myapp" i podesite CIDR blok u 10.100.0.0 / 16.
    resurs "aws_vpc" "myapp" {cidr_block = "10.100.0.0 / 16"}
    
  2. Dodajte dve podmreže za naše javne servere. Eksplicitno postavite zonu dostupnosti kako biste osigurali da se dvoje uvijek kreiraju u odvojenim, jer ćemo želeti osigurati redundantnost. Zato što su oba javna, postavite map_public_ip_on_launch na tačno.
    resurs "aws_subnet" "public_1a" {vpc_id = "$ {aws_vpc.myapp.id}" cidr_block = "10.100.0.0 / 24" map_public_ip_on_launch = "true" availability_zone = oznake "us-east-1a" {Ime = "Javno 1A"} } resurs "aws_subnet" "public_1b" {vpc_id = "$ {aws_vpc.myapp.id}" cidr_block = "10.100.1.0 / 24" map_public_ip_on_launch = "true" availability_zone = oznake "us-east-1b" {Name = "Javno 1B" }}
    
  3. Da bi omogućili pristup Internetu našim serverima, dodajte Internet Gateway u konfiguraciju.
    resurs "aws_internet_gateway" "gw" {vpc_id = "$ {aws_vpc.myapp.id}" oznake {Name = "myapp gw"}}
    

Sigurnosne grupe

  1. Kreirajte novu sigurnosnu grupu koja omogućava pristup SSH
    resurs "aws_security_group" "allow_ssh" description = "dozvolite dolazni promet SSH sa moje IP adrese" vpc_id = "$ {aws_vpc.myapp.id}" ulaz {from_port = 22 to_port = 22 protokol = "tcp" cidr_blocks = ["123.123.123.123 / 32"]} oznake {Name = "Dozvoli SSH"}}
    
  2. Kreirajte sigurnosnu grupu koja omogućava pristup web serveru javnosti.
    resurs "aws_security_group" "web_server" {name = "web server" description = "Dozvoli HTTP i HTTPS saobraćaj, pristup pretraživaču." vpc_id = "$ {aws_vpc.myapp.id}" ulaz {from_port = 80 to_port = 80 protokol = "tcp" cidr_blocks = ["0.0.0.0 / 0"]} izlaz {from_port = 1024 to_port = 65535 protokol = "tcp" cidr_blocks = ["0.0.0.0 / 0"]}}
    
  3. Kreirajte sigurnosnu grupu koja omogućava MySQL RDS pristup web serverima.
    resurs "aws_security_group" "myapp_mysql_rds" {name = "web server" description = "Dozvoli pristup MySQL RDS" vpc_id = "$ {aws_vpc.myapp.id}" ulaz {from_port = 3306 to_port = 3306 protokol = "tcp" cidr_blocks = ["$ {aws_instance.web01.private_ip}", "$ {aws_instance.web02.private_ip}"]} izlaz {from_port = 1024 to_port = 65535 protokol = "tcp" cidr_blocks = ["0.0.0.0 / 0"]}}
    

Kreirajte EC2 instance

Sa mrežnom infrastrukturom, vreme je da počnemo definisati naše EC2 instance.

  1. Kreirajte dva primerka za web servis, sa jednim u svakoj javnoj podmreži definisani gore. Primeri će biti t1.micro, a oba će pokrenuti Ubuntu 14.04 LTS.
    resurs "aws_instance" "web01" {ami = "ami-408c7f28" instance_type = "t1.micro" subnet_id = "$ {aws_subnet.public_1a.id}" vpc_security_group_ids = ["$ {aws_security_group.web_server.id}", "$ {aws_security_group.allow_ssh.id} "] key_name = tagovi" myapp keypair "{Name =" web01 "}} resurs" aws_instance "" web02 "{ami =" ami-408c7f28 "instance_type =" t1.micro "subnet_id =" $ {aws_subnet.public_1b.id} "vpc_security_group_ids = [" $ {aws_security_group.web_server.id} "," $ {aws_security_group.allow_ssh.id} "] key_name = tagovi" myapp keypair "{Name =" web02 "}}
    

Dodajte ELB za Balansiranje opterećenja

  1. Definišite ELB da se priključi na dva javna podmreža, dodajte oba web EC2 instanca i postavite HTTP poslušatelj.
    resurs "aws_elb" "web-elb" {name = "web-elb" availability_zones = ["us-east-1a", "us-east-1b"] listener {instance_port = 80 instance_protocol = "http" lb_port = 80 lb_protocol = "HTTP: 2 /" interval = 2} instanci = ["$ {aws_instance.web3.id}", "$ {aws_instance.web80.id} = health http: // } "] cross_zone_load_balancing = istina idle_timeout = 30 connection_draining = true connection_draining_timeout = oznake 01 {Name =" Web ELB "}}
    

Definišite MySQL RDS instancu

    1. Kreirajte DB Subnet grupu.
      resurs "aws_db_subnet_group" "myapp-db" {name = "main" description = "Naša glavna grupa subnetova" subnet_ids = ["$ {aws_subnet.public-1a.id}", "$ {aws_subnet.public-1b.id } "] oznake {Name =" MyApp DB podmrežne grupe "}}

    1. Kreirajte RDS Instance.
      resurs "aws_db_instance" "web-rds-01" {identifikator = "myappdb-rds" allocated_storage = 10 motor = "mysql" engine_version = "5.6.17" instance_class = "db.t1.micro" name = "myappdb" username = "foo "password =" bar "vpc_security_group_ids = [" $ {aws_security_group.myapp_mysql_rds.id "] db_subnet_group_name =" $ {aws_db_subnet_group.myapp-db.id} "parameter_group_name =" default.mysql5.6 "}

    Verzija kontrolira svoje datoteke

    Uz definisanu osnovnu infrastrukturu treba dodati kontroli verzija. Koristeći Git, inicijalizirajte spremište i izvršite promjene.

    1. Ako je vaša tekstualna datoteka još uvek otvorena, sačuvajte je i zatvorite je.
    2. Inicijalizirajte spremište.
      git init.
    3. Dodajte ".tf" u spremište.
      git dodajte myapp.tf
    4. Stvorite inicijalnu obavezu za vašu infrastrukturu.
      git commit -m "Initial commit"
    5. Naša infrastruktura je sada pod kontrolom verzije i spremna je da bude primenjena po prvi put!

    Upravljanje svojom infrastrukturom

    Upotrebite svoju infrastrukturu

    Pokrenite sledeću naredbu da biste razvili svoju infrastrukturu koristeći Terraform.

    primenjuju se terraformi

    Uništi svoju infrastrukturu

    Pokrenite sledeću naredbu da izbrišete sve resurse koje je napravila kompanija Terraform.

    terraform uništiti

    Related post

    Ostavite odgovor

    Ova stranica koristi Akismet kako bi smanjila neželjenu poštu. Saznajte kako se podaci vašeg komentara obrađuju.