แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ vm ESXi Terraform-แƒ˜แƒ—

แƒ›แƒแƒ’แƒ”แƒกแƒแƒšแƒ›แƒ”แƒ‘แƒ˜แƒ— แƒงแƒ•แƒ”แƒšแƒแƒก, แƒ›แƒ” แƒ›แƒฅแƒ•แƒ˜แƒ แƒ˜แƒ•แƒแƒœแƒ” แƒ“แƒ แƒ•แƒแƒ  แƒแƒšแƒ™แƒแƒฐแƒแƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜ (OPS).

แƒ›แƒ˜แƒœแƒ“แƒ แƒ’แƒ˜แƒ—แƒฎแƒ แƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒ•แƒแƒงแƒ”แƒœแƒ”แƒ‘ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒก ESXi-แƒ–แƒ” vCenter-แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” Terraform-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒฎแƒจแƒ˜แƒ แƒแƒ“, แƒแƒ›แƒ แƒ—แƒฃ แƒ˜แƒ› แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒšแƒแƒ“ แƒ’แƒ˜แƒฌแƒ”แƒ•แƒ— แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ/แƒฎแƒ”แƒšแƒแƒฎแƒแƒšแƒ˜ แƒจแƒ”แƒฅแƒ›แƒœแƒ. แƒกแƒ˜แƒ–แƒแƒ แƒ›แƒแƒชแƒ˜แƒก แƒ’แƒแƒ›แƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒแƒ–แƒ” แƒ•แƒคแƒ˜แƒฅแƒ แƒแƒ‘แƒ“แƒ˜. แƒฉแƒ”แƒ›แƒ›แƒ แƒซแƒ˜แƒ”แƒ‘แƒแƒ› แƒ›แƒ˜แƒ›แƒ˜แƒงแƒ•แƒแƒœแƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒกแƒ™แƒ”แƒœ แƒฐแƒแƒจแƒ˜แƒ™แƒแƒ แƒžแƒ˜, terraform.

แƒ•แƒคแƒ˜แƒฅแƒ แƒแƒ‘, แƒ‘แƒ”แƒ•แƒ แƒ›แƒ แƒ˜แƒชแƒ˜แƒก แƒ แƒ แƒแƒ แƒ˜แƒก Terraform แƒ“แƒ แƒ•แƒ˜แƒœแƒช แƒแƒ  แƒ˜แƒชแƒ˜แƒก, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒฆแƒ แƒฃแƒ‘แƒšแƒ˜แƒก, แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒแƒœ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก 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 แƒžแƒแƒ แƒขแƒ˜ firewall-แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒจแƒ˜.

แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, แƒคแƒแƒ˜แƒšแƒ˜ แƒ“แƒแƒชแƒฃแƒšแƒ˜แƒ แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒกแƒ’แƒแƒœ. แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ›แƒแƒœแƒ˜แƒžแƒฃแƒšแƒแƒชแƒ˜แƒ”แƒ‘แƒก:

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

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ, แƒแƒกแƒ”แƒ•แƒ” 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

แƒ›แƒแƒซแƒ แƒแƒแƒ‘แƒแƒจแƒ˜ แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ RedHat-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒ“แƒ”แƒก แƒ˜แƒ›แƒแƒ•แƒ” แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒก.

which -a packer
/usr/sbin/packer

แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒกแƒ˜แƒ›แƒ‘แƒšแƒแƒ™แƒ˜, แƒแƒœ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒแƒ‘แƒกแƒแƒšแƒฃแƒขแƒฃแƒ แƒ˜ แƒ’แƒ–แƒ /usr/bin/packer.

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ ovftool download แƒšแƒ˜แƒœแƒ™แƒ”แƒ‘แƒ˜. แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ—, แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ—:

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

แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜ iso แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒงแƒ”แƒœแƒแƒ— แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒกแƒแƒ“แƒ˜แƒกแƒขแƒ แƒ˜แƒ‘แƒฃแƒชแƒ˜แƒ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜. แƒฉแƒ”แƒ›แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒชแƒ”แƒœแƒขแƒแƒก 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

แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— แƒคแƒแƒ˜แƒšแƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜.tf. แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒ— แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ ESXi แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ—แƒแƒœ.

แƒคแƒแƒ˜แƒšแƒจแƒ˜ network_config.cfg แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ˜แƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒก. แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒ”แƒ แƒ—แƒ˜ แƒฎแƒแƒ–แƒ˜:

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

แƒ˜แƒกแƒ”, แƒคแƒแƒ˜แƒšแƒจแƒ˜ แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜.แƒขแƒค แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— แƒ’แƒ–แƒ 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 แƒฌแƒฃแƒ—แƒจแƒ˜ แƒแƒฎแƒแƒšแƒ˜ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ แƒ’แƒแƒœแƒšแƒแƒ’แƒ“แƒ”แƒ‘แƒ แƒแƒ“แƒ แƒ” แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒ“แƒแƒœ.

แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒแƒ˜แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒคแƒแƒœแƒขแƒแƒ–แƒ˜แƒ˜แƒ—.

แƒ›แƒ” แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ›แƒ˜แƒœแƒ“แƒแƒ“แƒ แƒ’แƒแƒ›แƒ”แƒ–แƒ˜แƒแƒ แƒ”แƒ‘แƒ˜แƒœแƒ แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒ แƒ“แƒ แƒ›แƒ”แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒœแƒ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒžแƒฃแƒœแƒฅแƒขแƒ”แƒ‘แƒ˜ แƒแƒ› แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒแƒก.

แƒ’แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ— แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก!

PS: แƒ›แƒแƒฎแƒแƒ แƒฃแƒšแƒ˜ แƒ•แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ˜ แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒฃแƒšแƒ˜ แƒ™แƒ แƒ˜แƒขแƒ˜แƒ™แƒ˜แƒ—.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ