Quick Deploy vm ESXi เบเบฑเบš Terraform

เบชเบฐเบšเบฒเบเบ”เบตเบ—เบธเบเบ„เบปเบ™, เบ‚เป‰เบญเบเบŠเบทเปˆ Ivan เปเบฅเบฐเบ‚เป‰เบญเบเป€เบ›เบฑเบ™เบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™เบฅเบฐเบšเบปเบšเป€เบซเบผเบปเป‰เบฒ (OPS).

เบ‚เป‰เบญเบเบขเบฒเบเบšเบญเบเป€เบˆเบปเป‰เบฒเบงเปˆเบฒเบ‚เป‰เบญเบเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡ virtual เปƒเบ™ ESXi เป‚เบ”เบเบšเปเปˆเบกเบต vCenter เป‚เบ”เบเปƒเบŠเป‰ Terraform.

เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบฅเบทเป‰เบญเบเป†, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰ / เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual เป€เบžเบทเปˆเบญเบ—เบปเบ”เบชเบญเบšเบ™เบตเป‰เบซเบผเบทเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ™เบฑเป‰เบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบ‚เบตเป‰เบ„เป‰เบฒเบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™. เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ‚เบญเบ‡เบ‚เป‰เบญเบเบ™เปเบฒเบ‚เป‰เบญเบเป„เบ›เบชเบนเปˆเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ—เบตเปˆเบเบญเบ”เบขเป‰เบฝเบกเบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ” Hashicorp, terraform.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบซเบผเบฒเบเบ„เบปเบ™เบฎเบนเป‰เบงเปˆเบฒ Terraform เปเบกเปˆเบ™เบซเบเบฑเบ‡, เปเบฅเบฐเบœเบนเป‰เบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰, เบ™เบตเป‰เปเบกเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เป€เบกเบ„, เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบซเบผเบทเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ” IasC (เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”).

เบ‚เป‰เบญเบเปƒเบŠเป‰ ESXi เป€เบ›เบฑเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก virtualization เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ, เบชเบฐเบ”เบงเบเปเบฅเบฐเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰.
เบ‚เป‰เบญเบเบ„เบฒเบ”เบเบฒเบ™เบ„เบณเบ–เบฒเบก.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡ terraform เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰ vCenter Server?

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”, เปเบ™เปˆเบ™เบญเบ™, เปเบ•เปˆ. เบ›เบฐเบเบฒเบ™เบ—เปเบฒเบญเบดเบ”, เบ™เบตเป‰เปเบกเปˆเบ™เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบซเบผเบฒเบเปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบšเป‰เบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เปเบฅเบฐเบ—เบตเบชเบฒเบก, เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบเบปเบเบฅเบฐเบ”เบฑเบšเบ—เบฑเบเบชเบฐ.

เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Intel NUC เป€เบฎเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ:

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

เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบ—เปเบฒเบญเบดเบ”.

เบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เปƒเบซเป‰เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ esxi, เบ„เบท, เป€เบ›เบตเบ”เบžเบญเบ” VNC เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป„เบŸเบงเป.

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป„เบŸเบฅเปŒเปเบกเปˆเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เบ‚เบฝเบ™. เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบซเบกเบนเบ™เปƒเบŠเป‰เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

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

เบ•เบทเปˆเบกเบเบฒเบ™เบšเบฅเบฑเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เปƒเบชเปˆเบ—เป‰เบฒเบเป„เบŸเบฅเปŒ:

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

เบญเบญเบเบˆเบฒเบ, เบšเบฑเบ™เบ—เบถเบ. เบ›เปˆเบฝเบ™เบชเบดเบ”เบเบฑเบšเบ„เบทเบ™ เปเบฅเบฐเป€เบ›เบตเบ”เบšเปเบฅเบดเบเบฒเบ™เบ„เบทเบ™เปƒเปเปˆ:

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

เปเบ—เป‰เบˆเบดเบ‡เบˆเบปเบ™เบเปˆเบงเบฒเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบˆเบฐเบ›เบดเบ”เป€เบ›เบตเบ”เปƒเบซเบกเปˆ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เบซเบกเบนเบ™เปƒเบŠเป‰เบ™เบตเป‰เบˆเบฐเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบŠเป‰เปเบฒเบญเบตเบ.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ”เบฝเบงเบเบฑเบ™.

เบฅเบฒเบเบฐเบฅเบฐเบญเบฝเบ”เบชเบดเบ™เบ„เป‰เบฒ:

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

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ เป€เบ„เบทเปˆเบญเบ‡เบซเบธเป‰เบกเบซเปเปˆ, เบเบฑเบ‡เป€เบ›เบฑเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ‚เบญเบ‡ HashiCorp.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบเบญเบšเบฎเบนเบšเบžเบฒเบš "เบ—เบญเบ‡" เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปƒเบ™โ€‹เบญเบฐโ€‹เบ™เบฒโ€‹เบ„เบปเบ”โ€‹.

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

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง เบชเบฐเบšเบฑเบš packer เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ RedHat-based เบญเบฒเบ”เบˆเบฐเบกเบตเบŠเบธเบ”เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™.

which -a packer
/usr/sbin/packer

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡ symlink, เบซเบผเบทเปƒเบŠเป‰เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡ /usr/bin/packer.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ ovftool เบ”เบฒเบงเป‚เบซเบผเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบ”เบฒเบงเป‚เบซเบฅเบ”, เปƒเบชเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡:

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.

เบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบงเบ•เปเปˆเป„เบ›.

เปƒเบ™ gith เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบเบฐเบเบฝเบกเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™.

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

เป„เบ›เบ—เบตเปˆเป‚เบŸเบ™เป€เบ”เบต เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบชเปˆเบŠเบธเบ”เบเบฒเบ™เปเบˆเบเบขเบฒเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ™เบตเป‰เปเบกเปˆเบ™ centos 7.

เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒ. centos-7-base.json:

variables: ัƒะบะฐะทะฐั‚ัŒ ัะฒะพะธ ะดะฐะฝะฝั‹ะต ะดะปั ะฟะพะดะบะปัŽั‡ะตะฝะธั
iso_urls: ัƒะบะฐะทะฐั‚ัŒ ะฐะบั‚ัƒะฐะปัŒะฝั‹ะน
iso_checksum: ั‡ะตะบััƒะผะผะฐ ะฒะฐัˆะตะณะพ ะพะฑั€ะฐะทะฐ 

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ›เบฐเบเบญเบš:

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

เบ–เป‰เบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบตเป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒ 7-8 เบ™เบฒเบ—เบต.

เบซเบผเบฑเบ‡เบˆเบฒเบเบชเปเบฒเป€เบฅเบฑเบ”เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เปƒเบ™เป‚เบŸเบ™เป€เบ”เบต output-packer-centos7-x86_64 เป„เบŸเบฅเปŒ ova เบˆเบฐเบ•เบฑเป‰เบ‡เบขเบนเปˆ.

เบ•เบดเบ”เบ•เบฑเป‰เบ‡ 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

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ Terraform เบšเปเปˆเบกเบตเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบชเปเบฒเบฅเบฑเบš ESXi, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบซเบ™เบถเปˆเบ‡.

เบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡เป„เบ›:

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

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบฅเบงเบšเบฅเบงเบกเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™:

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

เบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบชเปเบฒเป€เบฅเบฑเบ”เบฎเบนเบš. เปƒเบซเป‰เป„เบ›เบกเป‰เบงเบ™เบฎเบนเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เปƒเบซเป‰เป„เบ›เบ—เบตเปˆเป‚เบŸเบ™เป€เบ”เบต:

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

เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒ variables.tf. เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเบฐเบšเบธเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ ESXi.

เปƒเบ™เป„เบŸเบฅเปŒ network_config.cfg เบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”. เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบซเบ™เบถเปˆเบ‡ liner:

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

เบ”เบต, เปƒเบ™เป„เบŸเบฅเปŒ main.tf เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเป„เบŸเบฅเปŒ ova เบเบฑเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡, เบ–เป‰เบฒเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบ„เบงเบฒเบกเบˆเบดเบ‡.

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.

เบชเปเบฒเป€เบฅเบฑเบ”เบฎเบนเบš:

terraform apply

เบ–เป‰เบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ–เบทเบเป€เบฎเบฑเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบ™ 2-3 เบ™เบฒเบ—เบต, เป€เบ„เบทเปˆเบญเบ‡ virtual เปƒเบซเบกเปˆเบˆเบฐเบ–เบทเบเบ™เปเบฒเป„เบ›เปƒเบŠเป‰เบˆเบฒเบเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰.

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เปเบกเปˆเบ™เบˆเปเบฒเบเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเป‚เบ”เบเบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบžเบฝเบ‡เปเบ•เปˆเบขเบฒเบเปเบšเปˆเบ‡เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เปเบฅเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบˆเบธเบ”เบ•เบปเป‰เบ™เบ•เปเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เบ‚เบญเบšเปƒเบˆเบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆ!

PS: เบ‚เป‰เบญเบเบˆเบฐเบ”เบตเปƒเบˆเบเบฑเบšเบเบฒเบ™เบงเบดเบžเบฒเบเบงเบดเบˆเบฒเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบชเบฑเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™