Saurin tura vm ESXi ta amfani da Terraform

Sannu kowa da kowa, sunana Ivan kuma ni mai kula da tsarin giya ne (OPS).

Ina so in gaya muku yadda nake tura injinan kama-da-wane akan ESXi ba tare da vCenter ta amfani da Terraform ba.

Yawancin lokaci dole ne ka tura / sake ƙirƙira injunan kama-da-wane don gwada wannan ko waccan aikace-aikacen. Saboda kasala, na yi tunani game da sarrafa tsarin. Bincikena ya kai ni ga samfur mai ban mamaki daga kamfanin hashicorp, terraform.

Ina tsammanin mutane da yawa sun san abin da Terraform yake, amma waɗanda ba su sani ba, aikace-aikace ne don sarrafa kowane girgije, kayan aiki ko sabis ta amfani da ra'ayin IasC (Kayayyakin aiki azaman code).

Ina amfani da ESXi a matsayin mahallin haɓakawa na. Sauƙi mai sauƙi, dacewa kuma abin dogara.
Na hango tambaya.

Me yasa terraform idan zaka iya amfani da vCenter Server?

Tabbas za ku iya, amma ... Da fari dai, wannan ƙarin lasisi ne, na biyu, wannan samfurin yana da ƙarfi sosai kuma ba zai dace da sabar gida ta ba, kuma na uku, dama ce ta haɓaka ƙwarewar ku.

Dandalin Intel NUC yana aiki azaman sabar:

CPU: 2 CPUs x Intel(R) Core(TM) i3-4010U CPU @ 1.70GHz
RAM: 8Gb
HDD: 500Gb
ESXi version: ESXi-6.5.0-4564106-standard (VMware, Inc.)

Sabili da haka, abubuwa na farko.

A yanzu, bari mu saita esxi, wato, buɗe tashar VNC a cikin saitunan Tacewar zaɓi.

Ta tsohuwa, fayil ɗin yana da kariya. Muna aiwatar da magudi kamar haka:

chmod 644 /etc/vmware/firewall/service.xml
chmod +t /etc/vmware/firewall/service.xml
vi /etc/vmware/firewall/service.xml

ƙara toshe mai zuwa zuwa ƙarshen fayil ɗin:

<service id="1000">
  <id>packer-vnc</id>
  <rule id="0000">
    <direction>inbound</direction>
    <protocol>tcp</protocol>
    <porttype>dst</porttype>
    <port>
      <begin>5900</begin>
      <end>6000</end>
    </port>
  </rule>
  <enabled>true</enabled>
  <required>true</required>
</service>

Mu fita mu ajiye. Canja haƙƙoƙin baya kuma sake kunna sabis:

chmod 444 /etc/vmware/firewall/service.xml
esxcli network firewall refresh

Yana aiki har sai an sake kunna mai watsa shiri. Bayan haka, wannan magudin dole ne a maimaita.

Daga yanzu zan yi duk aikin a cikin injin kama-da-wane akan sabar iri ɗaya.

Bayanin samfur:

OS: Centos 7 x86_64 minimal
RAM: 1GB
HDD: 20GB
Selinux: disable
firewalld: disable

Na gaba muna bukata Mai kwashewa, kuma samfurin HashiCorp.

Ana buƙatar don haɗa hoton "zinariya" ta atomatik. Wanda za mu yi amfani da shi nan gaba.

yum install unzip git -y
curl -O https://releases.hashicorp.com/packer/1.5.5/packer_1.5.5_linux_amd64.zip
unzip packer_1.5.5_linux_amd64.zip -d /usr/bin && rm -rf packer_1.5.5_linux_amd64.zip
packer version
Packer v1.5.5

Akan tafiya sigar fakiti Kuskure na iya faruwa saboda tushen RedHat na iya ƙunsar fakiti mai suna iri ɗaya.

which -a packer
/usr/sbin/packer

Don magance wannan, zaku iya ƙirƙirar alamar alama ko amfani da cikakkiyar hanya /usr/bin/packer.

Yanzu muna buƙatar ovftool download link. Zazzage, saka uwar garken kuma shigar:

chmod +x VMware-ovftool-4.4.0-15722219-lin.x86_64.bundle
./VMware-ovftool-4.4.0-15722219-lin.x86_64.bundle
Extracting VMware Installer...done.
You must accept the VMware OVF Tool component for Linux End User
License Agreement to continue.  Press Enter to proceed.
VMWARE END USER LICENSE AGREEMENT
Do you agree? [yes/no]:yes
The product is ready to be installed.  Press Enter to begin
installation or Ctrl-C to cancel. 
Installing VMware OVF Tool component for Linux 4.4.0
    Configuring...
[######################################################################] 100%
Installation was successful.

Mu ci gaba.

Na shirya duk abin da nake buƙata don gig.

git clone https://github.com/letnab/create-and-deploy-esxi.git && cd create-and-deploy-esxi

Zuwa babban fayil babban kana buƙatar shigar da rarraba tsarin aiki. A halin da nake ciki shine centos 7.

Hakanan kuna buƙatar gyara fayil ɗin centos-7-base.json:

variables: указать свои данные для подключения
iso_urls: указать актуальный
iso_checksum: чексумма вашего образа 

Bayan duk canje-canje, gudanar da ginin:

/usr/bin/packer build centos-7-base.json

Idan an daidaita komai kuma an ƙayyade daidai, to, zaku ga hoton shigarwa ta atomatik na tsarin aiki. Wannan tsari yana ɗaukar ni 7-8 mintuna.

Bayan nasarar kammalawa a cikin babban fayil ɗin fitarwa-packer-centos7-x86_64 za a sami fayil ɗin ova.

Shigar da Terraform:

curl -O https://releases.hashicorp.com/terraform/0.12.24/terraform_0.12.24_linux_amd64.zip
unzip terraform_0.12.24_linux_amd64.zip -d /usr/bin/ && rm -rf terraform_0.12.24_linux_amd64.zip
terraform version
Terraform v0.12.24

Tun da Terraform ba shi da mai bayarwa ga ESXi, kuna buƙatar gina ɗaya.

Saita tafi:

cd /tmp
curl -O https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.14.2.linux-amd64.tar.gz && rm -rf go1.14.2.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version
go version go1.14.2 linux/amd64

Bayan haka, muna tattara mai bayarwa:

go get -u -v golang.org/x/crypto/ssh
go get -u -v github.com/hashicorp/terraform
go get -u -v github.com/josenk/terraform-provider-esxi
export GOPATH="$HOME/go"
cd $GOPATH/src/github.com/josenk/terraform-provider-esxi
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -ldflags '-w -extldflags "-static"' -o terraform-provider-esxi_`cat version`
cp terraform-provider-esxi_`cat version` /usr/bin

Muna kan karshen layin. Mu je mirgine hoton mu.

Je zuwa babban fayil:

cd /root/create-and-deploy-esxi/centos7

Da farko, gyara fayil ɗin masu canji.tf. Kuna buƙatar saka haɗi zuwa uwar garken ESXi.

A cikin fayil network_config.cfg ya ƙunshi saitunan cibiyar sadarwa na injin kama-da-wane na gaba. Muna canza shi don dacewa da bukatunmu kuma muna tafiyar da layi ɗaya:

sed -i -e '2d' -e '3i "network": "'$(gzip < network_config.cfg| base64 | tr -d 'n')'",' metadata.json

To, a cikin fayil babban.tf canza hanyar zuwa fayil ɗin ova zuwa naku, idan daban.

Lokacin gaskiya.

terraform init
Initializing the backend...

Initializing provider plugins...

The following providers do not have any version constraints in configuration,
so the latest version was installed.

To prevent automatic upgrades to new major versions that may contain breaking
changes, it is recommended to add version = "..." constraints to the
corresponding provider blocks in configuration, with the constraint strings
suggested below.

* provider.esxi: version = "~> 1.6"
* provider.template: version = "~> 2.1"

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.

data.template_file.Default: Refreshing state...
data.template_file.network_config: Refreshing state...

------------------------------------------------------------------------

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # esxi_guest.Default will be created
  + resource "esxi_guest" "Default" {
      + boot_disk_size         = (known after apply)
      + disk_store             = "datastore1"
      + guest_name             = "centos7-test"
      + guest_shutdown_timeout = (known after apply)
      + guest_startup_timeout  = (known after apply)
      + guestinfo              = {
          + "metadata"          = "base64text"
          + "metadata.encoding" = "gzip+base64"
          + "userdata"          = "base64text"
          + "userdata.encoding" = "gzip+base64"
        }
      + guestos                = (known after apply)
      + id                     = (known after apply)
      + ip_address             = (known after apply)
      + memsize                = "1024"
      + notes                  = (known after apply)
      + numvcpus               = (known after apply)
      + ovf_properties_timer   = (known after apply)
      + ovf_source             = "/root/create-and-deploy-esxi/output-packer-centos7-x86_64/packer-centos7-x86_64.ova"
      + power                  = "on"
      + resource_pool_name     = (known after apply)
      + virthwver              = (known after apply)

      + network_interfaces {
          + mac_address     = (known after apply)
          + nic_type        = (known after apply)
          + virtual_network = "VM Network"
        }
    }

Plan: 1 to add, 0 to change, 0 to destroy.

------------------------------------------------------------------------

Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.

Gama:

terraform apply

Idan an yi komai daidai, to a cikin mintuna 2-3 za a tura sabon injin kama-da-wane daga hoton da aka ƙirƙira a baya.

Zaɓuɓɓukan amfani da duk waɗannan suna iyakance ne kawai ta tunanin ku.

Ina so kawai in raba gwaninta kuma in nuna mahimman abubuwan lokacin aiki tare da waɗannan samfuran.

Na gode da kulawa!

PS: Zan yi farin cikin samun suka mai ma'ana.

source: www.habr.com

Add a comment