Degdega gm vm ESXi oo wata Terraform

Salaan qof walba, magacaygu waa Ivan waxaana ahay maamulaha nidaamka khamriga (OPS).

Waxaan jeclaan lahaa in aan kuu sheego sida aan ugu shubo mishiinada farsamada ESXi iyada oo aan vCenter isticmaalin Terraform.

Inta badan, waa inaad geysaa / dib u abuurtaa mashiinada farsamada si aad u tijaabiso kan ama codsigaas. Caajisnimada darteed, waxaan ka fikiray inaan hab-socodka si otomaatig ah u sameeyo. Raadintaydii waxay ii horseeday wax soo saar cajiib ah oo shirkadda ah hashicorp, xayawaanka.

Waxaan u maleynayaa in dad badani og yihiin waxa Terraform yahay, iyo kuwa aan garanayn, kani waa codsi lagu maareeyo daruur kasta, kaabayaal ama adeeg iyadoo la adeegsanayo fikradda IasC (Kaabayaasha sida code).

Waxaan u isticmaalaa ESXi sidii jawiga wax-soo-saarkayga. Aad u fudud, ku habboon oo la isku halayn karo.
Su'aal ayaan filayaa.

Waa maxay sababta terraform marka aad isticmaali karto vCenter Server?

Dabcan waad awoodaa, laakiin. Marka hore, kani waa liisan dheeraad ah, marka labaad, alaabtani waa mid aad u kheyraad badan oo si fudud kuma habboona server-ka gurigayga, iyo marka saddexaad, awoodda kor loogu qaado xirfadaha.

Qalabka Intel NUC wuxuu u shaqeeyaa sidii server:

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.)

Oo sidaas daraaddeed, waxyaalaha ugu horreeya marka hore.

Hadda, aynu dejinno esxi, oo ah, fur dekedda VNC ee goobaha dab-damiska.

Sida caadiga ah, feylku waa la ilaaliyaa qorista. Waxaan sameynaa wax is daba marinta soo socda:

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

ku dheji qaybta soo socota dhamaadka faylka:

<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>

Ka bax, badbaadi Beddel xuquuqda dib oo dib u bilow adeegga:

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

Dhab ahaantii ilaa martigeliyaha dib loo kiciyo. Intaa ka dib, wax-is-daba-marintan waa in lagu celiyaa.

Dheeraad ah, waxaan ku fulin doonaa dhammaan shaqada mashiinka farsamada ee isla serverka.

Tilmaamaha sheyga:

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

Marka xigta, waxaan u baahanahay xiraha, sidoo kale wax soo saarka HashiCorp.

Waxaa loo baahan yahay in si toos ah loo ururiyo sawirka "dahab". Kaas oo aan isticmaali doono mustaqbalka.

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

Socodka nooca baakadaha khalad ayaa dhici kara, maadaama RedHat-ku-salaysan ay ku jiri karto xidhmo isku magac ah.

which -a packer
/usr/sbin/packer

Xalka, waxaad samayn kartaa calaamad, ama waxaad isticmaali kartaa waddo buuxda /usr/bin/packer.

Hadda waxaan u baahanahay ovftool download link. Soo deji, geli server-ka oo rakib:

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.

Waanu soconaa.

Githka waxaan ku diyaariyay wax kasta oo aad u baahan tahay.

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

Gal gal weyn waxaad u baahan tahay inaad dhigto qalabka qaybinta nidaamka hawlgalka. Xaaladeyda, tani waa senti 7.

Waxaad sidoo kale u baahan tahay inaad wax ka beddesho faylka. sentos-7-saldhig.json:

variables: ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ свои Π΄Π°Π½Π½Ρ‹Π΅ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
iso_urls: ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ
iso_checksum: чСксумма вашСго ΠΎΠ±Ρ€Π°Π·Π° 

Dhammaan isbeddellada ka dib, socodsii shirka:

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

Haddii wax walba la habeeyey oo si sax ah loo cayimay, markaa waxaad arki doontaa sawirka rakibidda tooska ah ee nidaamka hawlgalka. Habkani wuxuu igu qaadanayaa 7-8 daqiiqo.

Kadib marka si guul leh loo dhammeeyo galka wax soo saarka-packer-centos7-x86_64 faylka ova ayaa la dhigi doonaa.

Ku rakib 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

Mar haddii Terraform aanu lahayn bixiye ESXi, waxaad u baahan tahay inaad mid dhisto.

Waxaan dhigeynaa:

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

Marka xigta, waxaanu ururinay bixiyaha:

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

Waxaan joognaa xariiqii dhamaadka. Aan tagno muuqaalkeena.

Aan tagno galka:

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

Marka hore, wax ka beddel faylka doorsoomayaasha.tf. Waxaad u baahan tahay inaad qeexdo xidhiidhka serverka ESXi.

Faylka ku jira network_config.cfg waxaa ku jira goobaha shabakada ee mashiinka farsamada mustaqbalka. U beddel baahiyahaaga oo socodsii hal-liner:

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

Waa hagaag, faylka ku jira ugu weyn.tf u beddel jidka loo maro faylka ugxan-sidaha una beddel adiga, haddii uu ka duwan yahay.

Daqiiqada runta.

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.

dhame:

terraform apply

Haddii wax walba si sax ah loo sameeyo, ka dib 2-3 daqiiqo gudahood mashiinka farsamada cusub ayaa la geyn doonaa sawirkii hore loo sameeyay.

Isticmaalka waxyaalahan oo dhan waxa xaddidaya male-awaalkaaga oo keliya.

Kaliya waxaan rabay inaan wadaago hababka ugu fiican oo aan muujiyo qodobada ugu muhiimsan marka aan la shaqeynayo alaabtan.

Waad ku mahadsan tahay dareenka!

PS: Waan ku farxi doonaa dhaleecayn wax dhisaysa.

Source: www.habr.com

Add a comment