Tumia Haraka vm ESXi na Terraform

Halo watu wote, jina langu ni Ivan na mimi ni msimamizi wa mfumo wa kileo (OPS).

Ningependa kukuambia jinsi ninavyosambaza mashine pepe kwenye ESXi bila vCenter kutumia Terraform.

Mara nyingi, lazima upeleke / uunda upya mashine pepe ili kujaribu hii au programu hiyo. Kwa sababu ya uvivu, nilifikiria juu ya kuweka mchakato kiotomatiki. Utafutaji wangu uliniongoza kwenye bidhaa nzuri ya kampuni hashicorp, terraform.

Nadhani watu wengi wanajua Terraform ni nini, na ni nani asiyejua, hii ni programu ya kudhibiti wingu, miundombinu au huduma yoyote kwa kutumia dhana ya IasC (Miundombinu kama kanuni).

Ninatumia ESXi kama mazingira yangu ya uvumbuzi. Rahisi kabisa, rahisi na ya kuaminika.
Natarajia swali.

Kwa nini terraform wakati unaweza kutumia vCenter Server?

Unaweza bila shaka, lakini. Kwanza, hii ni leseni ya ziada, pili, bidhaa hii ni ya rasilimali nyingi na haifai tu kwenye seva yangu ya nyumbani, na tatu, uwezo wa kuboresha ujuzi.

Jukwaa la Intel NUC hufanya kama seva:

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

Na hivyo, mambo ya kwanza kwanza.

Kwa sasa, hebu tusanidi esxi, yaani, kufungua bandari ya VNC katika mipangilio ya ngome.

Kwa chaguo-msingi, faili inalindwa kwa maandishi. Tunafanya udanganyifu ufuatao:

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

ongeza kizuizi kifuatacho hadi mwisho wa faili:

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

Ondoka, hifadhi. Badilisha haki nyuma na uanze tena huduma:

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

Halisi hadi seva pangishi iwashwe upya. Baada ya hayo, udanganyifu huu utalazimika kurudiwa.

Zaidi ya hayo, nitafanya kazi yote katika mashine ya kawaida kwenye seva hiyo hiyo.

Specifikationer bidhaa:

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

Ifuatayo, tunahitaji pakiti, pia ni bidhaa ya HashiCorp.

Inahitajika ili kukusanyika moja kwa moja picha ya "dhahabu". ambayo tutatumia katika siku zijazo.

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

Katika harakati toleo la mfungaji kosa linaweza kutokea, kwani msingi wa RedHat unaweza kuwa na kifurushi kilicho na jina moja.

which -a packer
/usr/sbin/packer

Kwa suluhisho, unaweza kuunda ulinganifu, au kutumia njia kabisa /usr/bin/packer.

Sasa tunahitaji ovftool download kiungo. Pakua, weka kwenye seva na usakinishe:

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.

Tunaendelea.

Kwenye gith nilitayarisha kila kitu unachohitaji.

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

Kwa folda iso unahitaji kuweka kit usambazaji wa mfumo wa uendeshaji. Kwa upande wangu, hii ni centos 7.

Pia unahitaji kuhariri faili. centos-7-base.json:

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

Baada ya mabadiliko yote, endesha kusanyiko:

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

Ikiwa kila kitu kimeundwa na kuelezwa kwa usahihi, basi utaona picha ya ufungaji wa moja kwa moja wa mfumo wa uendeshaji. Utaratibu huu unanichukua dakika 7-8.

Baada ya kukamilika kwa mafanikio kwenye folda output-packer-centos7-x86_64 faili ya ova itapatikana.

Weka 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

Kwa kuwa Terraform haina mtoaji wa ESXi, unahitaji kuunda moja.

Tunaweka kwenda:

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

Ifuatayo, tunakusanya mtoaji:

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

Tuko kwenye mstari wa kumaliza. Twende tutoe taswira yetu.

Wacha tuende kwenye folda:

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

Kwanza kabisa, hariri faili vigezo.tf. Unahitaji kutaja muunganisho kwa seva ya ESXi.

Katika faili network_config.cfg vyenye mipangilio ya mtandao ya mashine ya baadaye ya mtandaoni. Badilisha kwa mahitaji yako na uendeshe mjengo mmoja:

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

Kweli, kwenye faili kuu.tf badilisha njia ya faili ya ova iwe yako mwenyewe, ikiwa ni tofauti.

Wakati wa ukweli.

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.

Maliza:

terraform apply

Ikiwa kila kitu kimefanywa kwa usahihi, basi katika dakika 2-3 mashine mpya ya virtual itatumwa kutoka kwa picha iliyofanywa hapo awali.

Matumizi ya haya yote yamepunguzwa tu na mawazo yako.

Nilitaka tu kushiriki mbinu bora na kuonyesha mambo makuu wakati wa kufanya kazi na bidhaa hizi.

Asante kwa umakini!

PS: Nitafurahi kukosolewa kwa kujenga.

Chanzo: mapenzi.com

Kuongeza maoni