{"id":15,"date":"2025-01-24T16:51:47","date_gmt":"2025-01-24T14:51:47","guid":{"rendered":"https:\/\/itraft.com\/?p=15"},"modified":"2025-02-11T14:52:49","modified_gmt":"2025-02-11T12:52:49","slug":"almalinux-9-vm-using-hashicorp-packer-and-vsphere-iso-plugin","status":"publish","type":"post","link":"https:\/\/itraft.com\/?p=15","title":{"rendered":"AlmaLinux 9 VM using HashiCorp Packer and vSphere ISO Plugin"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>This guide walks through the process of setting up a virtual machine (VM) with AlmaLinux 9 using HashiCorp Packer and the vSphere ISO plugin. I will create a Packer template, configure a Kickstart file, and automate post-configuration using an Ansible playbook.<\/p>\n\n\n\n<p>With <strong>Packer<\/strong> we can create a virtual machine image in a vSphere environment starting from a single source configuration. It has a collection of <strong>builders<\/strong> like <strong>vSphere ISO<\/strong> that is used to create VMs in vSphere.<\/p>\n\n\n\n<p><span data-cite-text=\"https:\/\/developer.hashicorp.com\/packer\/integrations\/hashicorp\/vsphere\/latest\/components\/builder\/vsphere-iso\" class=\"js--wpm-format-cite\">Packer vSphere builder build a new virtual machine starting from an <strong>ISO image file<\/strong>. It proceeds to the OS installation automatically from the <strong>Kickstart <\/strong>file configuration.<\/span><\/p>\n\n\n\n<p>A boot command in vSphere builder configuration, is responsible to get kickstart file and start the installation of AlmaLinux. The <strong>boot_command<\/strong> specifies the necessary parameters like the keyboard keys should be typed in order to start the isntallation after the first boot.<\/p>\n\n\n\n<p>When installation of operating system is finished, there is another builder plugin that performs a helper task like running an <strong>Ansible Packer provisioner<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites<\/h2>\n\n\n\n<p>Before starting, ensure you have the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Packer<\/strong>: Download and install from <a href=\"https:\/\/www.packer.io\/\">HashiCorp\u2019s website<\/a>.<\/li>\n\n\n\n<li>Access to a <strong>vSphere environment<\/strong>.<\/li>\n\n\n\n<li>An ISO image of <strong>AlmaLinux 9<\/strong>.<\/li>\n\n\n\n<li><strong>Ansible<\/strong> installed on your local machine.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Directory Structure<\/h2>\n\n\n\n<p>Here is an example structure of the project:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"almalinux-vm-setup\/\n\u251c\u2500\u2500 almalinux_template.pkr.hcl\n\u251c\u2500\u2500 ks_file\/\n\u2502   \u2514\u2500\u2500 ks.cfg\n\u251c\u2500\u2500 almalinux_ed25519\n\u251c\u2500\u2500 almalinux_ed25519.pub\n\u2514\u2500\u2500 ansible\/\n    \u2514\u2500\u2500 playbook.yml\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">almalinux<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">vm<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">setup<\/span><span style=\"color: #81A1C1\">\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u251c\u2500\u2500 almalinux_template<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">pkr<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">hcl<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u251c\u2500\u2500 ks_file<\/span><span style=\"color: #81A1C1\">\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u2502   \u2514\u2500\u2500 ks<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">cfg<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u251c\u2500\u2500 almalinux_ed25519<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u251c\u2500\u2500 almalinux_ed25519<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">pub<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u2514\u2500\u2500 ansible<\/span><span style=\"color: #81A1C1\">\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    \u2514\u2500\u2500 playbook<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">yml<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Create the Packer Template<\/h2>\n\n\n\n<p>The configuration file that determines the Packer&#8217;s behavior is the <strong>Packer template<\/strong>, which consists of a series of declarations and commands for Packer to follow. This template tells Packer what plugins to use, how to configure each one, and what order to run them in. Packer template uses the HLC2 configuration language used by Terraform and HashiCorp.<\/p>\n\n\n\n<p>The template file has the extension .pkr.hcl that is recognized by packer init, and build commands. On top of the file we define the necessary variables. The variables are accessible directly by giving them the&nbsp;<code>var.<\/code> prefix. For example vcenter_server = <strong>var.<\/strong>vsphere_server.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"# almalinux_template.pkr.hcl\n\nvariable &quot;vsphere_server&quot; {\n  type    = string\n  default = &quot;10.3.2.50&quot;\n}\n\nvariable &quot;vsphere_user&quot; {\n  type    = string\n  default = &quot;username@vcenter.example.com&quot;\n}\n\nvariable &quot;vsphere_password&quot; {\n  type    = string\n  default = &quot;userpass&quot;\n}\n\nvariable &quot;datacenter&quot; {\n  type    = string\n  default = &quot;MainDataCenter&quot;\n}\n\nvariable &quot;host&quot; {\n  type    = string\n  default = &quot;esxi.example.com&quot;\n}\n\nvariable &quot;datastore&quot; {\n  type    = string\n  default = &quot;MainDataStore&quot;\n}\n\nvariable &quot;network_name&quot; {\n  type    = string\n  default = &quot;VM Network&quot;\n}\n\nvariable &quot;network_card&quot; {\n  type    = string\n  default = &quot;vmxnet3&quot;\n}\n\nvariable &quot;ssh_host&quot; {\n  type    = string\n  default = &quot;10.3.2.5&quot;\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\"># almalinux_template.pkr.hcl<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">variable <\/span><span style=\"color: #D8DEE9\">&quot;vsphere_server&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">type<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">string<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">default<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">10.3.2.50<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">variable <\/span><span style=\"color: #D8DEE9\">&quot;vsphere_user&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">type<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">string<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">default<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">username@vcenter.example.com<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">variable <\/span><span style=\"color: #D8DEE9\">&quot;vsphere_password&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">type<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">string<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">default<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">userpass<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">variable <\/span><span style=\"color: #D8DEE9\">&quot;datacenter&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">type<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">string<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">default<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">MainDataCenter<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">variable <\/span><span style=\"color: #D8DEE9\">&quot;host&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">type<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">string<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">default<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">esxi.example.com<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">variable <\/span><span style=\"color: #D8DEE9\">&quot;datastore&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">type<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">string<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">default<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">MainDataStore<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">variable <\/span><span style=\"color: #D8DEE9\">&quot;network_name&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">type<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">string<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">default<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">VM Network<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">variable <\/span><span style=\"color: #D8DEE9\">&quot;network_card&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">type<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">string<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">default<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">vmxnet3<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">variable <\/span><span style=\"color: #D8DEE9\">&quot;ssh_host&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">type<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">string<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">default<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">10.3.2.5<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>The <strong>packer block<\/strong> gathers together a number of settings related to version and plugins.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"packer {\n  required_plugins {\n    vsphere = {\n      version = &quot;&gt;= 1.4.2&quot;\n      source  = &quot;github.com\/hashicorp\/vsphere&quot;\n    }\n    ansible = {\n      version = &quot;~&gt; 1&quot;\n      source = &quot;github.com\/hashicorp\/ansible&quot;\n    }\n  }\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">packer <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  required_plugins <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">vsphere<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #D8DEE9\">version<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">&gt;= 1.4.2<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #D8DEE9\">source<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">github.com\/hashicorp\/vsphere<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">ansible<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #D8DEE9\">version<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">~&gt; 1<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #D8DEE9\">source<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">github.com\/hashicorp\/ansible<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>In the same file, <span data-cite-text=\"https:\/\/developer.hashicorp.com\/packer\/docs\/templates\/hcl_templates\/blocks\/source\" class=\"js--wpm-format-cite\">the <strong>source block<\/strong> defines the VM parameters like CPU, network, disks and memory size<\/span>. The http_directory parameter is required. Packer will start a temporary http server to send the Kickstart file in the new VM in order to start the OS installation. If we omit http_directory parameter http server will not start.<\/p>\n\n\n\n<p>The first label &#8220;vsphere-iso&#8221; is the builder type. The second label &#8220;almalinux&#8221; is the unique name of the source.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"source &quot;vsphere-iso&quot; &quot;almalinux&quot; {\n  vcenter_server      = var.vsphere_server\n  username            = var.vsphere_user\n  password            = var.vsphere_password\n  datacenter          = var.datacenter\n  datastore           = var.datastore\n  host                = var.host\n  insecure_connection = true # Do not validate the certificate of the vCenter Server instance\n  \n  # Packer will create an http server serving http_directory when it is set.\n  # Kickstart file in this directory will be available to virtual machine over HTTP request\n  http_directory      = &quot;ks_file&quot; \n\n  # Set VM name, OS type, CPUs, RAM, Hard Disk and Network adapter.\n  vm_name       = var.vm_name \n  guest_os_type = &quot;rhel9_64Guest&quot;\n  CPUs            = 4\n  cpu_cores       = 2\n  RAM             = 4096 \n  \n  disk_controller_type = [&quot;pvscsi&quot;]\n  storage {\n    disk_size             = 81920 \n    disk_thin_provisioned = true\n  }\n  \n  network_adapters {\n    network = var.network_name\n    network_card = var.network_card\n  }\n\n  # Packer will attempt to connect via ssh after setup.\n  ssh_host = var.vm_ip_address \n  ssh_username = &quot;almalinux&quot;\n  ssh_password = &quot;almAl1nux.&quot;\n  ssh_timeout  = &quot;60m&quot;\n  ssh_handshake_attempts = 1000\n  ssh_private_key_file = &quot;almalinux_ed25519&quot;\n\n  # ISO path to find the guest OS image.\n  iso_paths = [&quot;[ESXNFS] _ISOs\/AlmaLinux-9.4-x86_64-minimal.iso&quot;]\n\n  # Boot command includes the parameters for the installation.\n  # When the VM is booted then the escape key is pressed.\n  # Except of linux kernel and initial RAM disk, the boot option inst.ks is\n  # provided to give the location of kickstart file.\n  # Boot loader will request the kickstart file from http server of Packer   \n  boot_command = [&quot;&lt;esc&gt;&lt;wait&gt;&quot;, &quot;vmlinuz initrd=initrd.img &quot;, &quot;inst.ks=http:\/\/{{ .HTTPIP }}:{{ .HTTPPort }}\/ks_preseed.cfg &quot;, &quot;&lt;enter&gt;&quot;]\n  boot_wait = &quot;3s&quot;\n  \n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">source <\/span><span style=\"color: #D8DEE9\">&quot;vsphere-iso&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">&quot;almalinux&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">vcenter_server<\/span><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> var<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">vsphere_server<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">username<\/span><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> var<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">vsphere_user<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">password<\/span><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> var<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">vsphere_password<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">datacenter<\/span><span style=\"color: #D8DEE9FF\">          <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> var<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">datacenter<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">datastore<\/span><span style=\"color: #D8DEE9FF\">           <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> var<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">datastore<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">host<\/span><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> var<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">host<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">insecure_connection<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">true<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #616E88\"># Do not validate the certificate of the vCenter Server instance<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># Packer will create an http server serving http_directory when it is set.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># Kickstart file in this directory will be available to virtual machine over HTTP request<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">http_directory<\/span><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">ks_file<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># Set VM name, OS type, CPUs, RAM, Hard Disk and Network adapter.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">vm_name<\/span><span style=\"color: #D8DEE9FF\">       <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> var<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">vm_name<\/span><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">guest_os_type<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">rhel9_64Guest<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">CPUs<\/span><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">cpu_cores<\/span><span style=\"color: #D8DEE9FF\">       <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">RAM<\/span><span style=\"color: #D8DEE9FF\">             <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">4096<\/span><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">disk_controller_type<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">pvscsi<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  storage <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">disk_size<\/span><span style=\"color: #D8DEE9FF\">             <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">81920<\/span><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">disk_thin_provisioned<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  network_adapters <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">network<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> var<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">network_name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">network_card<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> var<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">network_card<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># Packer will attempt to connect via ssh after setup.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">ssh_host<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> var<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">vm_ip_address<\/span><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">ssh_username<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">almalinux<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">ssh_password<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">almAl1nux.<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">ssh_timeout<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">60m<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">ssh_handshake_attempts<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1000<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">ssh_private_key_file<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">almalinux_ed25519<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># ISO path to find the guest OS image.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">iso_paths<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">[ESXNFS] _ISOs\/AlmaLinux-9.4-x86_64-minimal.iso<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># Boot command includes the parameters for the installation.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># When the VM is booted then the escape key is pressed.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># Except of linux kernel and initial RAM disk, the boot option inst.ks is<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># provided to give the location of kickstart file.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># Boot loader will request the kickstart file from http server of Packer   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">boot_command<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">&lt;esc&gt;&lt;wait&gt;<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">vmlinuz initrd=initrd.img <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">inst.ks=http:\/\/{{ .HTTPIP }}:{{ .HTTPPort }}\/ks_preseed.cfg <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">&lt;enter&gt;<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">boot_wait<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">3s<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>At the end of the template file, <span data-cite-text=\"https:\/\/developer.hashicorp.com\/packer\/docs\/templates\/hcl_templates\/blocks\/build\" class=\"js--wpm-format-cite\">the <strong>build block<\/strong> defines the sources are going to build<\/span>. Also in the same block we define nay provisioners. The build of machine will found in source block will start and when it is done, it will start the <strong>Ansible provisioner<\/strong>. The Ansible Packer provisioner runs Ansible playbooks. For the Ansible, if we don&#8217;t give a user parameter, and use_proxy is false, Ansible uses the ssh_username and key. If use_proxy is true then Ansible provisioner uses the user run the packer command. In the example below the <strong>use_proxy=false<\/strong> will prevent the proxy SSH server to start and Ansible will attempt to connect directly to the new server.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"build {\n  sources = [\n    &quot;source.vsphere-iso.almalinux&quot;\n  ]\n\n  provisioner &quot;ansible&quot; {\n    playbook_file = &quot;.\/ansible\/playbook.yml&quot;\n    use_proxy = false\n    ansible_env_vars = [\n      &quot;ANSIBLE_HOST_KEY_CHECKING=False&quot;\n    ]\n  }\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">build <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">sources<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">source.vsphere-iso.almalinux<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  provisioner <\/span><span style=\"color: #D8DEE9\">&quot;ansible&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">playbook_file<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">.\/ansible\/playbook.yml<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">use_proxy<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">ansible_env_vars<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">ANSIBLE_HOST_KEY_CHECKING=False<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Configure the Kickstart File<\/h2>\n\n\n\n<p>The kickstart file includes the rules for the OS installation. An easy way to obtain a kickstart file is to get it from a linux machine that you have setup manually. In \/root directory you can find the file anaconda-ks.cfg that includes all the necessary directions for the installation you have done manually. You can get the same file and make the appropriate modifications.<\/p>\n\n\n\n<p>This is a simple kickstart file. In <strong>%post<\/strong> block I install open-vm-tools and this is necessary because Packer will need them to communicate with the operating system after the installation. Otherwise the process will stuck in &#8220;<strong>Wainting for IP&#8230;<\/strong>&#8221; status.<\/p>\n\n\n\n<p>Also in this file I have created the user almalinux that will be used by the <strong>SSH<\/strong> <strong>Packer communicator<\/strong>. Communicator is the mechanism Packer uses to upload files, execute scripts, etc. with the machine being created. Packer will use the ssh_username and ssh_password that will find in almalinux_template.pkr.hcl file.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"# ks.cfg \n\n# Run installation in text mode\ntext\n\n%addon com_redhat_kdump --disable\n\n%end\n\n# Keyboard layouts\nkeyboard --vckeymap=gr --xlayouts='us'\n\n# System language\nlang en_US.UTF-8\n\n# Network information\nnetwork  --bootproto=static --device=ens192 --gateway=10.3.2.1 --ip=10.3.2.5 --nameserver=10.3.2.1 --netmask=255.255.255.0 --ipv4-dns-search=example.net --noipv6 --activate\nnetwork  --hostname=alma.example.net\n\n# Use CDROM installation media\ncdrom\n\n%packages\n@^minimal-environment\n\n%end\n\n# Run the Setup Agent on first boot\nfirstboot --enable\n\n# Generated using Blivet version 3.6.0\nignoredisk --only-use=\/dev\/sda\n\n# Partition clearing information\nclearpart --none --initlabel\n\n# Disk partitioning information. Create an ext4 partition 78GB and a swap 2GB.\npart \/ --fstype=&quot;ext4&quot; --ondisk=sda --size=79872 --label=SystemHDD\npart swap --fstype=&quot;swap&quot; --ondisk=sda --size=2047\n\n# System timezone\ntimezone Europe\/Athens --utc\n\n# Root password. Create encrypted password with the command openssl passwd -6 or give the password in plain text without --iscrypted attribute.\nrootpw --allow-ssh r00tPass\nuser --name=almalinux --password=almAl1nux.\n\n# Disable SELinux\nselinux --disabled\n\n%post\nyum -y install open-vm-tools # This is necessary\n\nmkdir \/home\/almalinux\/.ssh\nchmod 700 \/home\/almalinux\/.ssh\n\necho 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH4KzuyoCJwfiDJS07mcWzPDxhBKhwtZLgrPPX37uU1m root@mtestiv.zulutrade.local' &gt; \/home\/almalinux\/.ssh\/authorized_keys\nchmod 600 \/home\/almalinux\/.ssh\/authorized_keys\nchown -R almalinux:almalinux \/home\/almalinux\/.ssh\n\necho 'almalinux ALL=(ALL) NOPASSWD: ALL' &gt; \/etc\/sudoers.d\/almalinux\nchmod 440 \/etc\/sudoers.d\/almalinux\n\nyum -y update\n\n%end\n\n# Reboot when the install is finished.\nreboot\n\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\"># ks.cfg <\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Run installation in text mode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">text<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">%<\/span><span style=\"color: #D8DEE9FF\">addon com_redhat_kdump <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\">disable<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">%<\/span><span style=\"color: #D8DEE9FF\">end<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Keyboard layouts<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">keyboard <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">vckeymap<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">gr <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">xlayouts<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">&#39;us&#39;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># System language<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">lang en_US<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">UTF-8<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Network information<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">network  <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">bootproto<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">static <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">device<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">ens192 <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">gateway<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">ip<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">nameserver<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">netmask<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">255<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">255<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #B48EAD\">255<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">ipv4-dns-search<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">example<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">net<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\">noipv6 <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\">activate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">network  <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">hostname<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">alma<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">example<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">net<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Use CDROM installation media<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">cdrom<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">%<\/span><span style=\"color: #D8DEE9FF\">packages<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">@^minimal<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">environment<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">%<\/span><span style=\"color: #D8DEE9FF\">end<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Run the Setup Agent on first boot<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">firstboot <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\">enable<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Generated using Blivet version 3.6.0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">ignoredisk <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">only-use<\/span><span style=\"color: #81A1C1\">=\/<\/span><span style=\"color: #D8DEE9FF\">dev<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">sda<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Partition clearing information<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">clearpart <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\">none <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\">initlabel<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Disk partitioning information. Create an ext4 partition 78GB and a swap 2GB.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">part <\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">fstype<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">ext4<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">ondisk<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">sda <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">size<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">79872<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">label<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">SystemHDD<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">part swap <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">fstype<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">swap<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">ondisk<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">sda <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">size<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">2047<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># System timezone<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">timezone Europe<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">Athens <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\">utc<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Root password. Create encrypted password with the command openssl passwd -6 or give the password in plain text without --iscrypted attribute.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">rootpw <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\">allow<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">ssh r00tPass<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">user <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">name<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">almalinux <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">password<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">almAl1nux<\/span><span style=\"color: #81A1C1\">.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Disable SELinux<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">selinux <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\">disabled<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">%<\/span><span style=\"color: #D8DEE9FF\">post<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">yum <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">y install open<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">vm<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">tools <\/span><span style=\"color: #616E88\"># This is necessary<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">mkdir <\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">home<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">almalinux<\/span><span style=\"color: #81A1C1\">\/.<\/span><span style=\"color: #D8DEE9\">ssh<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">chmod <\/span><span style=\"color: #B48EAD\">700<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">home<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">almalinux<\/span><span style=\"color: #81A1C1\">\/.<\/span><span style=\"color: #D8DEE9\">ssh<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">echo &#39;ssh<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH4KzuyoCJwfiDJS07mcWzPDxhBKhwtZLgrPPX37uU1m root@mtestiv<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">zulutrade<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">local<\/span><span style=\"color: #D8DEE9FF\">&#39; <\/span><span style=\"color: #81A1C1\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">home<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">almalinux<\/span><span style=\"color: #81A1C1\">\/.<\/span><span style=\"color: #D8DEE9\">ssh<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">authorized_keys<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">chmod <\/span><span style=\"color: #B48EAD\">600<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">home<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">almalinux<\/span><span style=\"color: #81A1C1\">\/.<\/span><span style=\"color: #D8DEE9\">ssh<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">authorized_keys<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">chown <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">R almalinux:almalinux <\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">home<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">almalinux<\/span><span style=\"color: #81A1C1\">\/.<\/span><span style=\"color: #D8DEE9\">ssh<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">echo &#39;almalinux <\/span><span style=\"color: #D8DEE9\">ALL<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">ALL<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> NOPASSWD: ALL&#39; <\/span><span style=\"color: #81A1C1\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">etc<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">sudoers<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">d<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">almalinux<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">chmod <\/span><span style=\"color: #B48EAD\">440<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">etc<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">sudoers<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9\">d<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">almalinux<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">yum <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">y update<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">%<\/span><span style=\"color: #D8DEE9FF\">end<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Reboot when the install is finished.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">reboot<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Create the Ansible Playbook<\/h2>\n\n\n\n<p>When the installation of the operating system has finished, the build of the ansible provisioner is starting. In almalinux_template.pkr.hcl we have assigned the local path of playbook.yml file to playbook_file variable. If you do not provide a user to ansible, it will use the user associated with your builder, almalinux in this case,  not the user running Packer.<\/p>\n\n\n\n<p>In order for Ansible to connect properly to the new VM, I have added the <strong>use_proxy<\/strong>=flase flag in ansible provisioner. Also I have added the private key for the SSH comunicator user in almalinux_template.pkr.hcl file. <\/p>\n\n\n\n<p>I have created a private and public key for user almalinux in the current directory, and I have given the name of private key to <strong>ssh_private_key_file<\/strong> flag.<\/p>\n\n\n\n<p>Below is a simple playbook that makes an update of all packages and setup some new packages like nano, nmap and wget.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"# playbook.yml\n---\n- name: Install additional packages and start nginx\n  hosts: all \n  become: true\n  \n  tasks:\n  - name: Install packages\n    yum:\n      name: [&quot;nginx&quot;, &quot;git&quot;]\n      state: present\n  - name: Enable and start Nginx\n    service:\n      name: nginx\n      state: started\n      enabled: true\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\"># playbook.yml<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">---<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">-<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">name<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Install additional packages and start nginx<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #8FBCBB\">hosts<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">all<\/span><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #8FBCBB\">become<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #8FBCBB\">tasks<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">-<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">name<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Install packages<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">yum<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #8FBCBB\">name<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">nginx<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">git<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #8FBCBB\">state<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">present<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">-<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">name<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Enable and start Nginx<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">service<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #8FBCBB\">name<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">nginx<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #8FBCBB\">state<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">started<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #8FBCBB\">enabled<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">true<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Build the VM<\/h2>\n\n\n\n<p>1. Firstly we run the packer init command to setup the required plugins.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"# packer init .\nInstalled plugin github.com\/hashicorp\/vsphere v1.4.2 in &quot;\/root\/.config\/packer\/plugins\/github.com\/hashicorp\/vsphere\/packer-plugin-vsphere_v1.4.2_x5.0_linux_amd64&quot;\nInstalled plugin github.com\/hashicorp\/ansible v1.1.2 in &quot;\/root\/.config\/packer\/plugins\/github.com\/hashicorp\/ansible\/packer-plugin-ansible_v1.1.2_x5.0_linux_amd64&quot;\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\"># packer init .<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">Installed<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">plugin<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">github.com\/hashicorp\/vsphere<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">v1.4.2<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">\/root\/.config\/packer\/plugins\/github.com\/hashicorp\/vsphere\/packer-plugin-vsphere_v1.4.2_x5.0_linux_amd64<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">Installed<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">plugin<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">github.com\/hashicorp\/ansible<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">v1.1.2<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">\/root\/.config\/packer\/plugins\/github.com\/hashicorp\/ansible\/packer-plugin-ansible_v1.1.2_x5.0_linux_amd64<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>Then run the packer build command.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"$ packer build .\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #88C0D0\">$<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">packer<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">build<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>2. During the build process, the ISO will boot, install AlmaLinux using the Kickstart file, and execute the Ansible playbook.<\/p>\n\n\n\n<p>3. Once completed, the VM will shutdown. This is the normal process for the Packer. We can boot the VM in order to use it or we can add the <strong>convert_to_template: true<\/strong> parameter to convert it to a template in order to make clones from it.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Bellow is the output of the packer command.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"# packer build .\nvsphere-iso.almalinux: output will be in this color.\n\n==&gt; vsphere-iso.almalinux: Creating virtual machine...\n==&gt; vsphere-iso.almalinux: Customizing hardware...\n==&gt; vsphere-iso.almalinux: Mounting ISO images...\n==&gt; vsphere-iso.almalinux: Adding configuration parameters...\n==&gt; vsphere-iso.almalinux: Starting HTTP server on port 8444\n==&gt; vsphere-iso.almalinux: Setting temporary boot order...\n==&gt; vsphere-iso.almalinux: Powering on virtual machine...\n==&gt; vsphere-iso.almalinux: Waiting 3s for boot...\n==&gt; vsphere-iso.almalinux: Serving HTTP requests at http:\/\/10.3.5.20:8444\/.\n==&gt; vsphere-iso.almalinux: Typing boot command...\n==&gt; vsphere-iso.almalinux: Waiting for IP...\n==&gt; vsphere-iso.almalinux: IP address: 10.3.2.5\n==&gt; vsphere-iso.almalinux: Using SSH communicator to connect: 10.3.2.5\n==&gt; vsphere-iso.almalinux: Waiting for SSH to become available...\n==&gt; vsphere-iso.almalinux: Connected to SSH!\n==&gt; vsphere-iso.almalinux: Provisioning with Ansible...\n    vsphere-iso.almalinux: Not using Proxy adapter for Ansible run:\n    vsphere-iso.almalinux:      Using ssh keys from Packer communicator...\n==&gt; vsphere-iso.almalinux: Executing Ansible: ansible-playbook -e packer_build_name=&quot;almalinux&quot; -e packer_builder_type=vsphere-iso -e packer_http_addr=10.3.5.20:8444 --ssh-extra-args '-o IdentitiesOnly=yes' -e ansible_ssh_private_key_file=almalinux_ed25519 -i \/tmp\/packer-provisioner-ansible2737930965 \/root\/almalinux-vm-setup\/ansible\/playbook.yml\n    vsphere-iso.almalinux:\n    vsphere-iso.almalinux: PLAY [Install inst] ************************************************************\n    vsphere-iso.almalinux:\n    vsphere-iso.almalinux: TASK [Gathering Facts] *********************************************************\n    vsphere-iso.almalinux: ok: [default]\n    vsphere-iso.almalinux:\n    vsphere-iso.almalinux: TASK [Update yum cache] ********************************************************\n    vsphere-iso.almalinux: ok: [default]\n    vsphere-iso.almalinux:\n    vsphere-iso.almalinux: TASK [Install epel repo] *******************************************************\n    vsphere-iso.almalinux: changed: [default]\n    vsphere-iso.almalinux:\n    vsphere-iso.almalinux: TASK [Upgrade all packages] ****************************************************\n    vsphere-iso.almalinux: changed: [default]\n    vsphere-iso.almalinux:\n    vsphere-iso.almalinux: TASK [Install new packages for AlmaLinux 9] ************************************\n    vsphere-iso.almalinux: changed: [default]\n    vsphere-iso.almalinux:\n    vsphere-iso.almalinux: PLAY RECAP *********************************************************************\n    vsphere-iso.almalinux: default                    : ok=5    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\n    vsphere-iso.almalinux:\n==&gt; vsphere-iso.almalinux: Shutting down virtual machine...\n==&gt; vsphere-iso.almalinux: Deleting floppy drives...\n==&gt; vsphere-iso.almalinux: Ejecting CD-ROM media...\n==&gt; vsphere-iso.almalinux: Clearing boot order...\n    vsphere-iso.almalinux: Closing sessions ....\nBuild 'vsphere-iso.almalinux' finished after 16 minutes 44 seconds.\n\n==&gt; Wait completed after 16 minutes 44 seconds\n\n==&gt; Builds finished. The artifacts of successful builds are:\n--&gt; vsphere-iso.almalinux: Alma\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\"># packer build .<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">output<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">will<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">be<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">this<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">color.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Creating<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">virtual<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">machine...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Customizing<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">hardware...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Mounting<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">ISO<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">images...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Adding<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">configuration<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">parameters...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Starting<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">HTTP<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">server<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">on<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">port<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">8444<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Setting<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">temporary<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">boot<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">order...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Powering<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">on<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">virtual<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">machine...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Waiting<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #A3BE8C\">s<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">boot...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Serving<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">HTTP<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">requests<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">at<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">http:\/\/10.3.5.20:8444\/.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Typing<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">boot<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">command...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Waiting<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">IP...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">IP<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">address:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10.3<\/span><span style=\"color: #A3BE8C\">.2.5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Using<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">SSH<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">communicator<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">to<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">connect:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10.3<\/span><span style=\"color: #A3BE8C\">.2.5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Waiting<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">SSH<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">to<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">become<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">available...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Connected<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">to<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">SSH!<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Provisioning<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">with<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Ansible...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Not<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">using<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Proxy<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">adapter<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Ansible<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">run:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #A3BE8C\">Using<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">ssh<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">keys<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">from<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Packer<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">communicator...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Executing<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Ansible:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">ansible-playbook<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">-e<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">packer_build_name=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">almalinux<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">-e<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">packer_builder_type=vsphere-iso<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">-e<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">packer_http_addr=<\/span><span style=\"color: #B48EAD\">10.3<\/span><span style=\"color: #A3BE8C\">.5.20:8444<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">--ssh-extra-args<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">-o IdentitiesOnly=yes<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">-e<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">ansible_ssh_private_key_file=almalinux_ed25519<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">-i<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">\/tmp\/packer-provisioner-ansible2737930965<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">\/root\/almalinux-vm-setup\/ansible\/playbook.yml<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">PLAY<\/span><span style=\"color: #D8DEE9FF\"> [Install <\/span><span style=\"color: #A3BE8C\">inst]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">************************************************************<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">TASK<\/span><span style=\"color: #D8DEE9FF\"> [Gathering <\/span><span style=\"color: #A3BE8C\">Facts]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*********************************************************<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">ok:<\/span><span style=\"color: #D8DEE9FF\"> [default]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">TASK<\/span><span style=\"color: #D8DEE9FF\"> [Update <\/span><span style=\"color: #A3BE8C\">yum<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">cache]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">********************************************************<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">ok:<\/span><span style=\"color: #D8DEE9FF\"> [default]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">TASK<\/span><span style=\"color: #D8DEE9FF\"> [Install <\/span><span style=\"color: #A3BE8C\">epel<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">repo]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*******************************************************<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">changed:<\/span><span style=\"color: #D8DEE9FF\"> [default]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">TASK<\/span><span style=\"color: #D8DEE9FF\"> [Upgrade <\/span><span style=\"color: #A3BE8C\">all<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">packages]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">****************************************************<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">changed:<\/span><span style=\"color: #D8DEE9FF\"> [default]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">TASK<\/span><span style=\"color: #D8DEE9FF\"> [Install <\/span><span style=\"color: #A3BE8C\">new<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">packages<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">AlmaLinux<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">9<\/span><span style=\"color: #A3BE8C\">]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">************************************<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">changed:<\/span><span style=\"color: #D8DEE9FF\"> [default]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">PLAY<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">RECAP<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*********************************************************************<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">default<\/span><span style=\"color: #D8DEE9FF\">                    <\/span><span style=\"color: #A3BE8C\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">ok=<\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #A3BE8C\">changed=<\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #A3BE8C\">unreachable=<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #A3BE8C\">failed=<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #A3BE8C\">skipped=<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #A3BE8C\">rescued=<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #A3BE8C\">ignored=<\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Shutting<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">down<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">virtual<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">machine...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Deleting<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">floppy<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">drives...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Ejecting<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">CD-ROM<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">media...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Clearing<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">boot<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">order...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Closing<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">sessions<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">....<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">Build<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">finished<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">after<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">16<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">minutes<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">44<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">seconds.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">Wait<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">completed<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">after<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">16<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">minutes<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">44<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">seconds<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">==&gt; <\/span><span style=\"color: #A3BE8C\">Builds<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">finished.<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">The<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">artifacts<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">of<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">successful<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">builds<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">are:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">--&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">vsphere-iso.almalinux:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">Alma<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This guide walks through the process of setting up a virtual machine (VM) with AlmaLinux 9 using HashiCorp Packer and the vSphere ISO plugin. I will create a Packer template, configure a Kickstart file, and automate post-configuration using an Ansible playbook. With Packer we can create a virtual machine image in a vSphere environment starting &#8230; <a title=\"AlmaLinux 9 VM using HashiCorp Packer and vSphere ISO Plugin\" class=\"read-more\" href=\"https:\/\/itraft.com\/?p=15\" aria-label=\"Read more about AlmaLinux 9 VM using HashiCorp Packer and vSphere ISO Plugin\">Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"[]"},"categories":[4],"tags":[13,11,8,14,15],"class_list":["post-15","post","type-post","status-publish","format-standard","hentry","category-hcp-packer","tag-almalinux-9","tag-hashicorp","tag-hcp-packer","tag-kickstart","tag-vsphere-iso-plugin"],"_links":{"self":[{"href":"https:\/\/itraft.com\/index.php?rest_route=\/wp\/v2\/posts\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itraft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itraft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itraft.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/itraft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=15"}],"version-history":[{"count":70,"href":"https:\/\/itraft.com\/index.php?rest_route=\/wp\/v2\/posts\/15\/revisions"}],"predecessor-version":[{"id":238,"href":"https:\/\/itraft.com\/index.php?rest_route=\/wp\/v2\/posts\/15\/revisions\/238"}],"wp:attachment":[{"href":"https:\/\/itraft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itraft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itraft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}