เดŸเต†เดฑเดพเดซเต‹เดฎเดฟเดจเตŠเดชเตเดชเด‚ vm ESXi เดฆเตเดฐเตเดค เดตเดฟเดจเตเดฏเดพเดธเด‚

เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เดนเดฒเต‹, เดŽเดจเตเดฑเต† เดชเต‡เดฐเต เด‡เดตเดพเตป, เดžเดพเตป เด’เดฐเต เด†เตฝเด•เตเด•เดนเต‹เตพ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดฑเตเดฑเดฑเดพเดฃเต (OPS).

เดŸเต†เดฑเดพเดซเต‹เด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต vCenter เด‡เดฒเตเดฒเดพเดคเต† ESXi-เดฏเดฟเตฝ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เตพ เดŽเด™เตเด™เดจเต† เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดชเดฑเดฏเดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเดฒเดชเตเดชเต‹เดดเตเด‚, เดˆ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดจเดฟเด™เตเด™เตพ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เตพ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต / เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดฎเดŸเดฟ เด•เดพเดฐเดฃเด‚, เดชเตเดฐเด•เตเดฐเดฟเดฏ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเดพเตป เดšเดฟเดจเตเดคเดฟเดšเตเดšเต. เดŽเดจเตเดฑเต† เด…เดจเตเดตเต‡เดทเดฃเด‚ เดŽเดจเตเดจเต† เด•เดฎเตเดชเดจเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดฎเดฟเด•เดšเตเดš เด‰เตฝเดชเตเดชเดจเตเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเดšเตเดšเต เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต, เดŸเต†เดฑเดซเต‹เด‚.

เดŸเต†เดฑเดพเดซเต‹เด‚ เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เดชเดฒเตผเด•เตเด•เตเด‚ เด…เดฑเดฟเดฏเดพเดฎเต†เดจเตเดจเต เดžเดพเตป เด•เดฐเตเดคเตเดจเตเดจเต, เด†เตผเด•เตเด•เดฑเดฟเดฏเดฟเดฒเตเดฒ, เด‡เดคเต IasC เด†เดถเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดเดคเต เด•เตเดฒเต—เดกเตเด‚ เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเตเด‚ เดธเต‡เดตเดจเดตเตเด‚ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฃเต (เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏเด™เตเด™เตพ เด•เต‹เดกเดพเดฏเดฟ).

เดŽเดจเตเดฑเต† เดตเดฟเตผเดšเตเดšเตเดตเดฒเตˆเดธเต‡เดทเตป เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เด†เดฏเดฟ เดžเดพเตป ESXi เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดตเดณเดฐเต† เดฒเดณเดฟเดคเดตเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเด‚ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดตเตเดฎเดพเดฃเต.
เดžเดพเตป เด’เดฐเต เดšเต‹เดฆเตเดฏเด‚ เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เด•เดพเดฃเตเดจเตเดจเต.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต vCenter เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดฎเตเดชเต‹เตพ เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต เดŸเต†เดฑเดพเดซเต‹เด‚?

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เด•เดดเดฟเดฏเตเด‚, เดชเด•เตเดทเต‡. เด’เดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เด‡เดคเตŠเดฐเต เด…เดงเดฟเด• เดฒเตˆเดธเตปเดธเดพเดฃเต, เดฐเดฃเตเดŸเดพเดฎเดคเดพเดฏเดฟ, เดˆ เด‰เตฝเดชเตเดชเดจเตเดจเด‚ เดตเดณเดฐเต† เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต-เด‡เดจเตเดฑเตปเดธเต€เดตเต เด†เดฃเต, เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เด‡เดคเต เดŽเดจเตเดฑเต† เดนเต‹เด‚ เดธเต†เตผเดตเดฑเดฟเตฝ เดฏเต‹เดœเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เดฎเต‚เดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เด•เดดเดฟเดตเตเด•เตพ เด…เดชเตโ€Œเด—เตเดฐเต‡เดกเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต.

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

เดนเต‹เดธเตเดฑเตเดฑเต เดฑเต€เดฌเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเตเดตเดฐเต† เดฏเดฅเดพเตผเดคเตเดฅเดฎเดพเดฃเต. เด…เดคเดฟเดจเตเดถเต‡เดทเด‚, เดˆ เด•เตƒเดคเตเดฐเดฟเดฎเดคเตเดตเด‚ เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เต‡เดฃเตเดŸเดฟเดตเดฐเตเด‚.

เด‡เดจเดฟ เดฎเตเดคเตฝ เดžเดพเตป เดŽเดฒเตเดฒเดพ เดœเต‹เดฒเดฟเด•เดณเตเด‚ เด’เดฐเต‡ เดธเต†เตผเดตเดฑเดฟเตฝ เด’เดฐเต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเดฟเตฝ เดšเต†เดฏเตเดฏเตเด‚.

เด‰เตฝเดชเตเดชเดจเตเดจ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ:

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

เด…เดŸเตเดคเตเดคเดคเต เดจเดฎเตเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฃเต เดชเดพเด•เตเด•เตผ, เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เตฝเดชเตเดชเดจเตเดจเด‚ เด•เต‚เดŸเดฟเดฏเดพเดฃเต.

"เด—เต‹เตพเดกเตป" เด‡เดฎเต‡เดœเต เดธเตเดตเดฏเดฎเต‡เดต เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เดพเตป เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดญเดพเดตเดฟเดฏเดฟเตฝ เดžเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

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

เดฏเดพเดคเตเดฐเดฏเดฟเดฒเดพเดฃเต เดชเดพเด•เตเด•เตผ เดชเดคเดฟเดชเตเดชเต RedHat-เด…เดŸเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเตฝ เด‡เดคเต‡ เดชเต‡เดฐเดฟเดฒเตเดณเตเดณ เด’เดฐเต เดชเดพเด•เตเด•เต‡เดœเต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ เด’เดฐเต เดชเดฟเดถเด•เต เดธเด‚เดญเดตเดฟเด•เตเด•เดพเด‚.

which -a packer
/usr/sbin/packer

เด‡เดคเต เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเดฟเด‚เดฒเดฟเด™เตเด•เต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดธเดฎเตเดชเต‚เตผเดฃเตเดฃ เดชเดพเดค เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚ /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.

เดžเด™เตเด™เตพ เดฎเตเดจเตเดจเต‹เดŸเตเดŸเต.

เด—เดฟเด—เดฟเดจเต เดตเต‡เดฃเตเดŸเดคเต†เดฒเตเดฒเดพเด‚ เดžเดพเตป เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟ.

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

เดซเต‹เตพเดกเดฑเดฟเดฒเต‡เด•เตเด•เต เดตเดฒเดฟเดฏ เดจเดฟเด™เตเด™เตพ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฟเดคเดฐเดฃ เด•เดฟเดฑเตเดฑเต เด‡เดŸเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดŽเดจเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด‡เดคเต เดธเต†เดจเตเดฑเต‹เดธเต 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 เดซเดฏเตฝ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเด‚.

เดŸเต†เดฑเดพเดซเต‹เด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•:

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 เดญเดพเดตเดฟเดฏเดฟเดฒเต† เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเดฑเต† เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เต เดฎเดพเดฑเตเดฑเด‚ เดตเดฐเตเดคเตเดคเดฟ เดตเตบ-เดฒเตˆเดจเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•:

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

เดถเดฐเดฟ, เดซเดฏเดฒเดฟเตฝ main.tf เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด“เดต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดพเดค เดจเดฟเด™เตเด™เดณเตเดŸเต‡เดคเดพเดฏเดฟ เดฎเดพเดฑเตเดฑเตเด•.

เดธเดคเตเดฏเดคเตเดคเดฟเดจเตเดฑเต† เดจเดฟเดฎเดฟเดทเด‚.

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 เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เดฎเตเดฎเตเดชเต เดธเตƒเดทเตเดŸเดฟเดšเตเดš เด‡เดฎเต‡เดœเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดชเตเดคเดฟเดฏ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด‚.

เด‡เดคเต†เดฒเตเดฒเดพเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด“เดชเตเดทเดจเตเด•เตพ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดญเดพเดตเดจเดฏเดพเตฝ เดฎเดพเดคเตเดฐเด‚ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดˆ เด‰เตฝเดชเตเดชเดจเตเดจเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดฎเดฟเด•เดšเตเดš เดฐเต€เดคเดฟเด•เตพ เดชเด™เตเด•เดฟเดŸเดพเดจเตเด‚ เดชเตเดฐเดงเดพเดจ เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เตพ เด•เดพเดฃเดฟเด•เตเด•เดพเดจเตเด‚ เดžเดพเตป เด†เด—เตเดฐเดนเดฟเดšเตเดšเต.

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดถเตเดฐเดฆเตเดงเดฏเตเด•เตเด•เต เดจเดจเตเดฆเดฟ!

PS: เดธเตƒเดทเตเดŸเดฟเดชเดฐเดฎเดพเดฏ เดตเดฟเดฎเตผเดถเดจเด‚ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดžเดพเตป เดธเดจเตเดคเต‹เดทเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•