Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.

Packer

Build Status Windows Build Status PkgGoDev GoReportCard codecov

Packer is a tool for building identical machine images for multiple platforms from a single source configuration.

Packer is lightweight, runs on every major operating system, and is highly performant, creating machine images for multiple platforms in parallel. Packer comes out of the box with support for many platforms, the full list of which can be found at https://www.packer.io/docs/builders.

Support for other platforms can be added via plugins.

The images that Packer creates can easily be turned into Vagrant boxes.

Quick Start

Note: There is a great introduction and getting started guide for those with a bit more patience. Otherwise, the quick start below will get you up and running quickly, at the sacrifice of not explaining some key points.

First, download a pre-built Packer binary for your operating system or compile Packer yourself.

After Packer is installed, create your first template, which tells Packer what platforms to build images for and how you want to build them. In our case, we'll create a simple AMI that has Redis pre-installed. Save this file as quick-start.json. Export your AWS credentials as the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables.

{
  "variables": {
    "access_key": "{{env `AWS_ACCESS_KEY_ID`}}",
    "secret_key": "{{env `AWS_SECRET_ACCESS_KEY`}}"
  },
  "builders": [{
    "type": "amazon-ebs",
    "access_key": "{{user `access_key`}}",
    "secret_key": "{{user `secret_key`}}",
    "region": "us-east-1",
    "source_ami": "ami-af22d9b9",
    "instance_type": "t2.micro",
    "ssh_username": "ubuntu",
    "ami_name": "packer-example {{timestamp}}"
  }]
}

Next, tell Packer to build the image:

$ packer build quick-start.json
...

Packer will build an AMI according to the "quick-start" template. The AMI will be available in your AWS account. To delete the AMI, you must manually delete it using the AWS console. Packer builds your images, it does not manage their lifecycle. Where they go, how they're run, etc., is up to you.

Documentation

Comprehensive documentation is viewable on the Packer website:

https://www.packer.io/docs

Developing Packer

See CONTRIBUTING.md for best practices and instructions on setting up your development environment to work on Packer.

Unmaintained Plugins

As contributors' circumstances change, development on a community maintained plugin can slow. When this happens, the Packer team may mark a plugin as unmaintained, to clearly signal the plugin's status to users.

What does unmaintained mean?

  1. The code repository and all commit history will still be available.
  2. Documentation will remain on the Packer website.
  3. Issues and pull requests are monitored as a best effort.
  4. No active development will be performed by the Packer team.

If anyone form them community is interested in maintaining a community supported plugin, please feel free to submit contributions via a pull- request for review; reviews are generally prioritized over feature work when possible. For a list of open plugin issues and pending feature requests see the Packer Issue Tracker.

Owner
HashiCorp
Consistent workflows to provision, secure, connect, and run any infrastructure for any application.
HashiCorp
Comments
  • Add Hyper-V builder

    Add Hyper-V builder

    Add on all the good work done by https://github.com/pbolduc/packer-hyperv/ Supports hyper-v 1 and 2 generation machines Supports boot_command so you can use it to automate linux builds Documentation added

  • Add support for building from an existing Vagrant box

    Add support for building from an existing Vagrant box

    It's quite complex to build a Vagrant box from an ISO file. You need to know the boot sequence and the preseed. Both of these are hardly readable.

    Sometimes, we just need to build a box out of an existing Vagrant box. It would be great if Packer had a pre-processor that would take, in input, a Vagrant box, and would then feed the "virtualbox-ovf" builder. Alternatively, this could be another builder.

    That would add the ability to provision a pre-built Vagrant box, then repackage it as a Vagrant box.

    Ideally, the Vagrant box in input could be taken from the local context or from a URL (e.g. a box from http://www.vagrantbox.es/).

    Does it make sense?

  • [Azure] WinRM timeout with Windows 2016-Datacenter Marketplace Image

    [Azure] WinRM timeout with Windows 2016-Datacenter Marketplace Image

    Please refer the end of this thread to see other users complaining that this is not working. https://github.com/MicrosoftDocs/azure-docs/issues/31188

    Issue:

    Started: December, 2019. Packer cannot connect with WinRM to machines provisioned from Windows 2016 (2016-Datacenter) Marketplace image in Azure.

    Further details:

    WinRM timeout increase is not working. It seems the last image working is version: "14393.3326.1911120150" (Released 12th of Nov). It stopped working with "14393.3384.1912042333" (Released 10th of Dec).

    This issue is only impacting 2016-Datacenter. 2019 is working properly.

    To get image Details for a Region:

    az vm image list --location northeurope --offer WindowsServer --publisher MicrosoftWindowsServer --sku 2016-Datacenter --all

    URL to the Last Working Image:

    https://support.microsoft.com/en-us/help/4525236/windows-10-update-kb4525236

    URL to the Image where something went wrong:

    https://support.microsoft.com/en-us/help/4530689/windows-10-update-kb4530689

    Notes:

    This is currently applying to North EU. I had no time to investigate in other regions but I believe the same images getting distributed to every region.

    I am opening a Microsoft case and planning to update the thread with the progress.

  • --no-destroy-on-error like Vagrant

    --no-destroy-on-error like Vagrant

    It would appear that an error exit code by postinstall.sh is enough to totally wipe out the generated boxes.

    It would be useful to keep them around to manually manipulate while working on them. The -debug switch can be used for this, but it's not really ideal since you basically have to know the appropriate step (stepCreateVM) to wait at.

    See also: https://github.com/mitchellh/vagrant/issues/2011

  • Shell scripts broken with Docker 1.4.x

    Shell scripts broken with Docker 1.4.x

    Using the current source version of packer

    Working scenario using docker 1.3.3:

    2014/12/12 15:49:51 packer-builder-docker: 2014/12/12 15:49:51 Running the provision hook
    1418399391,,ui,message,    docker: Container ID: b0117b8cbffd154539242acb24666f703b78ff22ef782e0d03cc768ba38db982
    2014/12/12 15:49:51 packer-provisioner-shell: 2014/12/12 15:49:51 Opening /tmp/packer-shell648686173 for reading
    2014/12/12 15:49:51 packer-provisioner-shell: 2014/12/12 15:49:51 [INFO] 109 bytes written for 'uploadData'
    2014/12/12 15:49:51 [INFO] 109 bytes written for 'uploadData'
    2014/12/12 15:49:51 packer-builder-docker: 2014/12/12 15:49:51 Executing in container b0117b8cbffd154539242acb24666f703b78ff22ef782e0d03cc768ba38db982: "(cp /packer-files/upload080199707 /tmp/script.sh) >/packer-files/cmd466238654 2>&1; echo $? >/packer-files/cmd466238654-exit"
    1418399391,,ui,say,==> docker: Provisioning with shell script: /tmp/packer-shell648686173
    2014/12/12 15:49:53 packer-builder-docker: 2014/12/12 15:49:53 Waiting for exit code to appear for remote command...
    2014/12/12 15:49:53 packer-builder-docker: 2014/12/12 15:49:53 Executed command exit status: 0
    2014/12/12 15:49:55 packer-builder-docker: 2014/12/12 15:49:55 Executing in container b0117b8cbffd154539242acb24666f703b78ff22ef782e0d03cc768ba38db982: "(chmod 0777 /tmp/script.sh) >/packer-files/cmd678804741 2>&1; echo $? >/packer-files/cmd678804741-exit"
    2014/12/12 15:49:57 packer-builder-docker: 2014/12/12 15:49:57 Waiting for exit code to appear for remote command...
    2014/12/12 15:49:57 packer-builder-docker: 2014/12/12 15:49:57 Executed command exit status: 0
    2014/12/12 15:49:59 packer-builder-docker: 2014/12/12 15:49:59 [INFO] RPC endpoint: Communicator ended with: 0
    2014/12/12 15:49:59 [INFO] RPC client: Communicator ended with: 0
    2014/12/12 15:49:59 [INFO] RPC endpoint: Communicator ended with: 0
    2014/12/12 15:49:59 packer-provisioner-shell: 2014/12/12 15:49:59 [INFO] RPC client: Communicator ended with: 0
    2014/12/12 15:49:59 packer-builder-docker: 2014/12/12 15:49:59 Executing in container b0117b8cbffd154539242acb24666f703b78ff22ef782e0d03cc768ba38db982: "(chmod +x /tmp/script.sh; PACKER_BUILD_NAME='docker' PACKER_BUILDER_TYPE='docker' /tmp/script.sh) >/packer-files/cmd838923936 2>&1; echo $? >/packer-files/cmd838923936-exit"
    2014/12/12 15:50:01 packer-builder-docker: 2014/12/12 15:50:01 Waiting for exit code to appear for remote command...
    2014/12/12 15:50:02 packer-builder-docker: 2014/12/12 15:50:02 Executed command exit status: 127
    2014/12/12 15:50:03 packer-builder-docker: 2014/12/12 15:50:03 [INFO] RPC endpoint: Communicator ended with: 127
    2014/12/12 15:50:03 [INFO] 0 bytes written for 'stderr'
    2014/12/12 15:50:03 [INFO] RPC client: Communicator ended with: 127
    2014/12/12 15:50:03 [INFO] 0 bytes written for 'stdout'
    2014/12/12 15:50:03 [INFO] RPC endpoint: Communicator ended with: 127
    2014/12/12 15:50:03 packer-provisioner-shell: 2014/12/12 15:50:03 [INFO] 0 bytes written for 'stderr'
    2014/12/12 15:50:03 packer-provisioner-shell: 2014/12/12 15:50:03 [INFO] RPC client: Communicator ended with: 127
    2014/12/12 15:50:03 packer-provisioner-shell: 2014/12/12 15:50:03 [INFO] 0 bytes written for 'stdout'
    

    Failing scenario using docker 1.4:

    1418398765,,ui,say,==> docker: Provisioning with shell script: /tmp/packer-shell348099556
    2014/12/12 15:39:25 packer-provisioner-shell: 2014/12/12 15:39:25 Opening /tmp/packer-shell348099556 for reading
    2014/12/12 15:39:25 packer-provisioner-shell: 2014/12/12 15:39:25 [INFO] 109 bytes written for 'uploadData'
    2014/12/12 15:39:25 [INFO] 109 bytes written for 'uploadData'
    2014/12/12 15:39:25 packer-builder-docker: 2014/12/12 15:39:25 Executing in container ff13b288d87f7fa9d3c1e5ffeb810cc8fec6be80b1bd8eab21cc39a8e2b22336: "(cp /packer-files/upload431013147 /tmp/script.sh) >/packer-files/cmd669791166 2>&1; echo $? >/packer-files/cmd669791166-exit"
    2014/12/12 15:39:27 packer-provisioner-shell: 2014/12/12 15:39:27 Retryable error: Error uploading script: Upload failed with non-zero exit status: 1
    2014/12/12 15:39:29 packer-provisioner-shell: 2014/12/12 15:39:29 [INFO] 109 bytes written for 'uploadData'
    2014/12/12 15:39:29 [INFO] 109 bytes written for 'uploadData'
    2014/12/12 15:39:29 packer-builder-docker: 2014/12/12 15:39:29 Executing in container ff13b288d87f7fa9d3c1e5ffeb810cc8fec6be80b1bd8eab21cc39a8e2b22336: "(cp /packer-files/upload047296517 /tmp/script.sh) >/packer-files/cmd706862496 2>&1; echo $? >/packer-files/cmd706862496-exit"
    2014/12/12 15:39:31 packer-provisioner-shell: 2014/12/12 15:39:31 Retryable error: Error uploading script: Upload failed with non-zero exit status: 1
    2014/12/12 15:39:33 packer-provisioner-shell: 2014/12/12 15:39:33 [INFO] 109 bytes written for 'uploadData'
    2014/12/12 15:39:33 [INFO] 109 bytes written for 'uploadData'
    2014/12/12 15:39:33 packer-builder-docker: 2014/12/12 15:39:33 Executing in container ff13b288d87f7fa9d3c1e5ffeb810cc8fec6be80b1bd8eab21cc39a8e2b22336: "(cp /packer-files/upload033689215 /tmp/script.sh) >/packer-files/cmd209553362 2>&1; echo $? >/packer-files/cmd209553362-exit"
    2014/12/12 15:39:35 packer-provisioner-shell: 2014/12/12 15:39:35 Retryable error: Error uploading script: Upload failed with non-zero exit status: 1
    2014/12/12 15:39:37 packer-provisioner-shell: 2014/12/12 15:39:37 [INFO] 109 bytes written for 'uploadData'
    2014/12/12 15:39:37 [INFO] 109 bytes written for 'uploadData'
    2014/12/12 15:39:37 packer-builder-docker: 2014/12/12 15:39:37 Executing in container ff13b288d87f7fa9d3c1e5ffeb810cc8fec6be80b1bd8eab21cc39a8e2b22336: "(cp /packer-files/upload479277833 /tmp/script.sh) >/packer-files/cmd622516948 2>&1; echo $? >/packer-files/cmd622516948-exit"
    2014/12/12 15:39:39 packer-provisioner-shell: 2014/12/12 15:39:39 Retryable error: Error uploading script: Upload failed with non-zero exit status: 1
    2014/12/12 15:39:41 packer-provisioner-shell: 2014/12/12 15:39:41 [INFO] 109 bytes written for 'uploadData'
    
  • Error removing floppy controller

    Error removing floppy controller

    Hi all,

    At the end of a packer build, just before the post-processor (vagrant) is started, packer fails to remove the floppy drive.

    The exact error is:

    virtualbox-iso: Error removing floppy controller: VBoxManage error: VBoxMana
    ge.exe: error: The machine 'packer-virtualbox-iso-1436168056' is already locked
    for a session (or being unlocked)
    ==> virtualbox-iso: VBoxManage.exe: error: Details: code VBOX_E_INVALID_OBJECT_S
    TATE (0x80bb0007), component Machine, interface IMachine, callee IUnknown
    ==> virtualbox-iso: VBoxManage.exe: error: Context: "LockMachine(a->session, Loc
    kType_Write)" at line 1011 of file VBoxManageStorageController.cpp
    ==> virtualbox-iso: Unregistering and deleting virtual machine...
    ==> virtualbox-iso: Deleting output directory...
    Build 'virtualbox-iso' errored: Error removing floppy controller: VBoxManage err
    or: VBoxManage.exe: error: The machine 'packer-virtualbox-iso-1436168056' is alr
    eady locked for a session (or being unlocked)
    VBoxManage.exe: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), c
    omponent Machine, interface IMachine, callee IUnknown
    VBoxManage.exe: error: Context: "LockMachine(a->session, LockType_Write)" at lin
    e 1011 of file VBoxManageStorageController.cpp
    
    ==> Some builds didn't complete successfully and had errors:
    --> virtualbox-iso: Error removing floppy controller: VBoxManage error: VBoxMana
    ge.exe: error: The machine 'packer-virtualbox-iso-1436168056' is already locked
    for a session (or being unlocked)
    VBoxManage.exe: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), c
    omponent Machine, interface IMachine, callee IUnknown
    VBoxManage.exe: error: Context: "LockMachine(a->session, LockType_Write)" at lin
    e 1011 of file VBoxManageStorageController.cpp
    
    ==> Builds finished but no artifacts were created.
    
    The strange thing is the error only happens about 50% of the time. Typically the first build will fail with this error and then the next build will succeed with nothing changed in between.
    

    My packer json is:

    {
      "builders": [
        {
          "type": "virtualbox-iso",
          "iso_url": "http://download.microsoft.com/download/6/2/A/62A76ABB-9990-4EFC-A4FE-C7D698DAEB96/9600.16384.WINBLUE_RTM.130821-1623_X64FRE_SERVER_EVAL_EN-US-IRM_SSS_X64FREE_EN-US_DV5.ISO",
          "iso_checksum_type": "md5",
          "iso_checksum": "458ff91f8abc21b75cb544744bf92e6a",
          "headless": false,
          "boot_wait": "2m",
          "ssh_username": "vagrant",
          "ssh_password": "vagrant",
          "ssh_wait_timeout": "4h",
          "shutdown_command": "shutdown /s /t 10 /f /d p:4:1 /c \"Packer Shutdown\"",
          "guest_os_type": "Windows2012_64",
          "disk_size": 61440,
          "floppy_files": [
            "./floppy_files/Autounattend.xml",
            "./floppy_files/microsoft-updates.bat",
            "./floppy_files/win-updates.ps1",
            "./floppy_files/openssh.ps1",
            "./floppy_files/oracle-cert.cer",
            "./floppy_files/setenv.bat",
            "./floppy_files/setdnssuffix.wsf",
            "./floppy_files/hosts"
          ],
          "vboxmanage": [
            [
              "modifyvm",
              "{{.Name}}",
              "--memory",
              "2048"
            ],
            [
              "modifyvm",
              "{{.Name}}",
              "--cpus",
              "2"
            ]
          ]
        }
      ],
      "provisioners": [
        {
          "type": "shell",
          "remote_path": "/tmp/script.bat",
          "execute_command": "{{.Vars}} cmd /c C:/Windows/Temp/script.bat",
          "scripts": [
            "./packer_scripts/vm-guest-tools.bat",
            "./packer_scripts/vagrant-ssh.bat",
            "./packer_scripts/enable-rdp.bat",
            "./packer_scripts/disable-auto-logon.bat",
            "./packer_scripts/chef.bat",
            "./packer_scripts/chocolatey.bat",
            "./packer_scripts/chocopacks.bat",
            "./packer_scripts/tomcat6.bat",
            "./packer_scripts/copyHosts.bat",
            "./packer_scripts/setdnssuffix.bat",
            "./packer_scripts/setPerlPath.bat"
          ]
        },
        {
          "type": "shell",
          "inline": [
            "rm -rf /tmp/*"
          ]
        }
      ],
      "post-processors": [
        {
          "type": "vagrant",
          "keep_input_artifact": false,
          "output": "windows_2012_r2_{{.Provider}}.box",
          "vagrantfile_template": "vagrantfile-windows_2012_r2.template"
        }
      ]
    }
    

    Any idea how to fix this?

    Thanks

  • Packer build for hyperv-iso fails with `Waiting for SSH` error.

    Packer build for hyperv-iso fails with `Waiting for SSH` error.

    BUG:

    We are trying to create a Ubuntu Vagrant box using hyperv-iso image type. We are stuck with the error Waiting for SSH to be available. After a few minutes, it times out and the build fails.

    • Packer version: v1.0.2
    • Host platform: Windows 10
    • Debug log output: https://gist.github.com/samirprakash/b51e07c0bdc541d567a2c228e5919fa7
    • Template to reproduce the bug: https://gist.github.com/samirprakash/78d599a78e1282d9137b2b7d45a61c4a
  • Generation 2 Hyper-V VM boots too fast for boot_command to trigger

    Generation 2 Hyper-V VM boots too fast for boot_command to trigger

    I'm trying to build a generation 2 Windows Server 2016 VM on Windows 10 with the hyper-v role installed. I have the exact same issue as janegilring in the quote below. More info in a minute, just need to get out of this "Reference new issue" popup which just closed on me.

    "I was just setting up the same Packer build configuration in a different environment (lab - slower hardware). The issue in that environment seems to be the opposite: While Packer is in the "Starting the virtual machine..." state, the VM has already started and the "Press any key to start installation" screen is gone when Packer gets to the waiting state. Even when setting the boot wait to 0 seconds, Packer is too slow to type the boot commands. However, I suppose that`s another issue so I'll create one after some more testing.

    Originally posted by @janegilring in https://github.com/hashicorp/packer/issues/6208#issuecomment-384878910"

  • Feature Request: vsphere-template post processor to work with local builders

    Feature Request: vsphere-template post processor to work with local builders

    It curently looks like the vsphere-template will only work with esxi in the vsphere-iso builder, and not with the local VMware products (fusion, etc).

    2017/09/17 09:28:13 [INFO] (telemetry) Starting post-processor vsphere-template ==> ubuntu-16.04-x86_64-vmware: Running post-processor: vsphere-template 2017/09/17 09:28:13 [INFO] (telemetry) ending vsphere-template 2017/09/17 09:28:13 [INFO] (telemetry) found error: Unknown artifact type, can't build box: mitchellh.vmware 2017/09/17 09:28:13 Deleting original artifact for build 'ubuntu-16.04-x86_64-vmware' 2017/09/17 09:28:16 ui error: Build 'ubuntu-16.04-x86_64-vmware' errored: 1 error(s) occurred:

    • Post-processor failed: Unknown artifact type, can't build box: mitchellh.vmware 2017/09/17 09:28:16 Builds completed. Waiting on interrupt barrier... 2017/09/17 09:28:16 machine readable: error-count []string{"1"} 2017/09/17 09:28:16 ui error: ==> Some builds didn't complete successfully and had errors: 2017/09/17 09:28:16 machine readable: ubuntu-16.04-x86_64-vmware,error []string{"1 error(s) occurred:\n\n* Post-processor failed: Unknown artifact type, can't build box: mitchellh.vmware"} 2017/09/17 09:28:16 ui error: --> ubuntu-16.04-x86_64-vmware: 1 error(s) occurred:

    • Post-processor failed: Unknown artifact type, can't build box: mitchellh.vmware 2017/09/17 09:28:16 ui: ==> Builds finished but no artifacts were created. Build 'ubuntu-16.04-x86_64-vmware' errored: 1 error(s) occurred:

    • Post-processor failed: Unknown artifact type, can't build box: mitchellh.vmware

    ==> Some builds didn't complete successfully and had errors: --> ubuntu-16.04-x86_64-vmware: 1 error(s) occurred:

    • Post-processor failed: Unknown artifact type, can't build box: mitchellh.vmware

    ==> Builds finished but no artifacts were created. 2017/09/17 09:28:16 waiting for all plugin processes to complete...

    I was previously using pvmomi independently of Packer and would love to be able to use this post-processor with any of the artifacts created with the Vsphere builder.

    screen shot 2017-09-17 at 9 43 50 am

    Jon

  • add ansible provisioner

    add ansible provisioner

    Add an Ansible provisioner that does not require installing Ansible on the machine being provisioned.

    The ansible provisioner uses golang.org/x/crypto/ssh to listen for SSH connections on the Packer host. Ansible uses SFTP to transfer files by default; the ansible provisioner executes sftp-server on the machine and connects its and Ansible's stdin, stdout, and stderr.

    Closes #1555 Closes #2732

  • Added support for sound, serial/parallel/usb ports, and mapping the correct network (via a couple parsers) for the VMware builder.

    Added support for sound, serial/parallel/usb ports, and mapping the correct network (via a couple parsers) for the VMware builder.

    Forgot about this branch that I had written some time ago, but it adds support for enabling the various ports in the vmware builder, and does proper parsing of netmap.conf, vmnetdhcp.conf, and the dhcp.leases file that VMware uses to maintain it's VMs and their network.

    This means .GuestIP() + .GuestAddress(), and .HostIP() + .HostAddress() don't have to take a wild guess at what addresses the VM is bound to or assume that the network is "nat", and instead should always return the correct address for a guest as per VMware's configuration. I needed this because I'm in a situation where I can't have my VMs be allowed to connect to the internet.

    Closes #3373 Closes #2530

  • Plugin host rate limited the plugin getter. Try again

    Plugin host rate limited the plugin getter. Try again

    Community Note

    • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
    • Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request
    • If you are interested in working on this issue or have submitted a pull request, please leave a comment

    Overview of the Issue

    During packer init the packer is trying to pull the plugins but it says Plugin host rate limited the plugin getter. I'm using GitHub actions and have no control over the host.

    Reproduction Steps

    Create a GitHub action to run packer and it's coming intermittently.

  • Passing variable set of strings for yum packages as environment variable to script

    Passing variable set of strings for yum packages as environment variable to script

    I have a variable defined as follows:

    variable "packages_to_install" {
      type = set(string)
      default = [  
          "gcc",
          "gcc-c++",
          "kernel-devel-$(uname -r)",
          "unzip"
      ]
    }
    

    that I am passing to a script via environment variable:

    provisioner "shell" {
        environment_vars = [
          "PACKAGES=${join(" ", var.packages_to_install)}"
        ]
        script = "myscript.sh"
      }
    

    then inside myscript.sh I am doing the following:

    yum install -y $PACKAGES
    

    Is there a way to get the uname -r to be evaluated properly as an environment variable of the script, or do I need to move that to the yum line in myscript.sh? I have tried to but backslahes before the dollar sign and surrounded it in back ticks but can't get it to work.

  • Output of ISO files

    Output of ISO files

    Community Note

    • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
    • Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request
    • If you are interested in working on this issue or have submitted a pull request, please leave a comment

    Hey, As far as I could see packer can't output ISO files, this can be very useful thing to add the ability to convert files like VMDK and such to ISO format.

  • build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.29.0 to 0.30.0

    build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.29.0 to 0.30.0

    Bumps github.com/hashicorp/hcp-sdk-go from 0.29.0 to 0.30.0.

    Release notes

    Sourced from github.com/hashicorp/hcp-sdk-go's releases.

    v0.30.0 (December 21, 2022)

    IMPROVEMENTS:

    • Add middleware support to httpclient package [GH-142]
    • Add middleware that gets org ID and project ID from user profile and sets on request [GH-142]
    • Add new Libraries section to README. [GH-155]
    • Bump github.com/go-openapi/loads from 0.20.2 to 0.21.2 [GH-149]
    • Bump github.com/go-openapi/runtime from 0.19.24 to 0.25.0 [GH-148]
    • Bump github.com/go-openapi/spec from 0.20.3 to 0.20.7 [GH-147]
    • Bump github.com/go-openapi/swag from 0.19.14 to 0.22.3 [GH-146]
    • Bump github.com/go-openapi/validate from 0.21.0 to 0.22.0 [GH-153]
    • Bump github.com/hashicorp/go-cleanhttp from 0.5.1 to 0.5.2 [GH-144]
    • Bump github.com/iancoleman/strcase from 0.1.3 to 0.2.0 [GH-145]
    • Remove create-pull-request third party action in favour of plain git commands. [GH-152]
    Changelog

    Sourced from github.com/hashicorp/hcp-sdk-go's changelog.

    v0.30.0 (December 21, 2022)

    IMPROVEMENTS:

    • Add middleware support to httpclient package [GH-142]
    • Add middleware that gets org ID and project ID from user profile and sets on request [GH-142]
    • Add new Libraries section to README. [GH-155]
    • Bump github.com/go-openapi/loads from 0.20.2 to 0.21.2 [GH-149]
    • Bump github.com/go-openapi/runtime from 0.19.24 to 0.25.0 [GH-148]
    • Bump github.com/go-openapi/spec from 0.20.3 to 0.20.7 [GH-147]
    • Bump github.com/go-openapi/swag from 0.19.14 to 0.22.3 [GH-146]
    • Bump github.com/go-openapi/validate from 0.21.0 to 0.22.0 [GH-153]
    • Bump github.com/hashicorp/go-cleanhttp from 0.5.1 to 0.5.2 [GH-144]
    • Bump github.com/iancoleman/strcase from 0.1.3 to 0.2.0 [GH-145]
    • Remove create-pull-request third party action in favour of plain git commands. [GH-152]
    Commits
    • 6a91a16 updated CHANGELOG.md
    • bc97d6d HCE-510: update README with details about new auth and profile libraries (#155)
    • 1d28ede Insert middleware to allow org and prod id on requests (#142)
    • 04fd8cf Bump github.com/go-openapi/validate from 0.21.0 to 0.22.0 (#153)
    • b3e36e2 HCE-742: Remove create-pull-request Third Party Action (#152)
    • 9f01f7a Bump github.com/hashicorp/go-cleanhttp from 0.5.1 to 0.5.2 (#144)
    • d679566 Bump github.com/go-openapi/swag from 0.19.14 to 0.22.3 (#146)
    • 5cb9fcc Bump github.com/go-openapi/spec from 0.20.3 to 0.20.7 (#147)
    • b8be798 Bump github.com/go-openapi/runtime from 0.19.24 to 0.25.0 (#148)
    • d962412 Bump github.com/iancoleman/strcase from 0.1.3 to 0.2.0 (#145)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Rework HCP fingerprint generation

    Rework HCP fingerprint generation

    Fingerprints are how we link a packer build to an iteration on HCP. These are computed automatically from the Git SHA in the current state, and are unique to the bucket/iteration.

    The main problem with this approach is that while sound in theory, it quickly falls apart when users want to run the same build configuration twice, but expect a new image to be created.

    With the current model, this fails, as the iteration with the current SHA already exists.

    While this is solvable through environment variables, or by committing a change to the repository, we think this is not clear enough, and causes an extra step to what should otherwise be a simple process.

    Therefore, to lower the barrier of entry into HCP, we change this behaviour with this commit.

    Now, fingerprints are randomly generated ULIDs instead of a git SHA, and a new one is always generated, unless one is already specified in the environment.

    This makes continuation of an existing iteration a conscious choice rather than something automatic, and virtually eliminates conflicts such as the ones described above.

  • Cannot create file/folder using Docker on Apple M1

    Cannot create file/folder using Docker on Apple M1

    Overview of the Issue

    Hi. I am facing this issue on OSX M1 calling packer build <file>. I cannot create file in Docker container in /srv folder or in other places. I cannot perform apt-get update neither. Using docker build ... with Dockerfile and same commands works perfectly fine.

    Thank you for you help.

    Reproduction Steps

    1. Create file test.pkr.hcl.

    2. Run packer init test.pkr.hcl

    3. Run packer build test.pkr.hcl

    ❯ packer build test.pkr.hcl
    debian11.docker.debian11: output will be in this color.
    
    ==> debian11.docker.debian11: Creating a temporary directory for sharing data...
    ==> debian11.docker.debian11: Pulling Docker image: debian:11
        debian11.docker.debian11: a288aa7ad0e4: Exists
        debian11.docker.debian11: b398b1d261cd: Exists
        debian11.docker.debian11: 92dc36590872: Exists
        debian11.docker.debian11: docker.io/library/debian:11
    ==> debian11.docker.debian11: Error determining source Docker image digest; this image may not have been pushed yet, which means no distribution digest has been created. If you plan to call docker push later, the digest value will be stored then.
    ==> debian11.docker.debian11: Starting docker container...
        debian11.docker.debian11: Run command: docker run -v /Users/felix/.config/packer/tmp1085351018:/packer-files -d -i -t --entrypoint=/bin/sh -- debian:11
        debian11.docker.debian11: Container ID: be7e19755ff3577a1a10163f3f65c8bd7c4d3e0b3454eaaefd231401c688ee7f
    ==> debian11.docker.debian11: Using docker communicator to connect: 172.17.0.2
    ==> debian11.docker.debian11: Provisioning with shell script: /var/folders/jp/fb11hgs91zgbv9hdz9cyrt7c0000gp/T/packer-shell2738914004
    ==> debian11.docker.debian11: /tmp/script_2399.sh: 2: cannot create /srv/test.txt: Directory nonexistent
    ==> debian11.docker.debian11: Provisioning step had errors: Running the cleanup provisioner, if present...
    ==> debian11.docker.debian11: Killing the container: be7e19755ff3577a1a10163f3f65c8bd7c4d3e0b3454eaaefd231401c688ee7f
    Build 'debian11.docker.debian11' errored after 2 seconds 288 milliseconds: Script exited with non-zero exit status: 2. Allowed exit codes are: [0]
    
    ==> Wait completed after 2 seconds 288 milliseconds
    
    ==> Some builds didn't complete successfully and had errors:
    --> debian11.docker.debian11: Script exited with non-zero exit status: 2. Allowed exit codes are: [0]
    
    ==> Builds finished but no artifacts were created.
    

    Packer version

    ❯ packer -v
    1.8.5
    
    ➜ packer plugins installed
    /opt/homebrew/bin/github.com/hashicorp/docker/packer-plugin-docker_v1.0.8_x5.0_darwin_arm64
    

    Simplified Packer Template

    packer {
      required_plugins {
        docker = {
          version = ">= 1.0.8"
          source  = "github.com/hashicorp/docker"
        }
      }
    }
    
    source "docker" "debian11" {
      image   = "debian:11"
      commit  = false
      discard = true
    }
    
    build {
      name = "debian11"
      sources = [
        "source.docker.debian11"
      ]
      provisioner "shell" {
        inline = [
          "echo 'test' > /srv/test.txt"
        ]
      }
    }
    

    Operating system and Environment details

    ❯ docker -v
    Docker version 20.10.21, build baeda1f
    
        System Software Overview:
    
          System Version: macOS 13.0.1 (22A400)
          Kernel Version: Darwin 22.1.0
          Boot Volume: Macintosh HD
          Boot Mode: Normal
          Computer Name: MilanStudio
          Secure Virtual Memory: Enabled
          System Integrity Protection: Enabled
    

    Log Fragments and crash.log files

    Show log
    ➜ PACKER_LOG=1 packer build test.pkr.hcl
    2022/12/20 11:35:14 [INFO] Packer version: 1.8.5 [go1.19.4 darwin arm64]
    2022/12/20 11:35:14 [TRACE] discovering plugins in /opt/homebrew/Cellar/packer/1.8.5/libexec/bin
    2022/12/20 11:35:14 [TRACE] discovering plugins in /Users/felix/.config/packer/plugins
    2022/12/20 11:35:14 [TRACE] discovering plugins in .
    2022/12/20 11:35:14 [TRACE] discovering plugins in
    2022/12/20 11:35:14 [TRACE] discovering plugins in /opt/homebrew/bin
    2022/12/20 11:35:14 [DEBUG] Discovered plugin: docker = /opt/homebrew/bin/github.com/hashicorp/docker/packer-plugin-docker_v1.0.8_x5.0_darwin_arm64
    2022/12/20 11:35:14 [INFO] found external [-packer-default-plugin-name-] builders from docker plugin
    2022/12/20 11:35:14 [INFO] found external [import push save tag] post-processors from docker plugin
    2022/12/20 11:35:14 [INFO] PACKER_CONFIG env var not set; checking the default config file path
    2022/12/20 11:35:14 [INFO] PACKER_CONFIG env var set; attempting to open config file: /Users/felix/.packerconfig
    2022/12/20 11:35:14 [WARN] Config file doesn't exist: /Users/felix/.packerconfig
    2022/12/20 11:35:14 [INFO] Setting cache directory: /Users/felix/.cache/packer
    2022/12/20 11:35:14 [TRACE] listing potential installations for "github.com/hashicorp/docker" that match ">= 1.0.8". plugingetter.ListInstallationsOptions{FromFolders:[]string{"/opt/homebrew/Cellar/packer/1.8.5/libexec/bin/packer", ".", "/Users/felix/.config/packer/plugins", "", "/opt/homebrew/bin"}, BinaryInstallationOptions:plugingetter.BinaryInstallationOptions{APIVersionMajor:"5", APIVersionMinor:"0", OS:"darwin", ARCH:"arm64", Ext:"", Checksummers:[]plugingetter.Checksummer{plugingetter.Checksummer{Type:"sha256", Hash:(*sha256.digest)(0x14000706280)}}}}
    2022/12/20 11:35:14 [TRACE] Found the following "github.com/hashicorp/docker" installations: [{/opt/homebrew/bin/github.com/hashicorp/docker/packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 v1.0.8}]
    2022/12/20 11:35:14 [INFO] found external [-packer-default-plugin-name-] builders from docker plugin
    2022/12/20 11:35:14 [INFO] found external [import push save tag] post-processors from docker plugin
    2022/12/20 11:35:14 [TRACE] Starting external plugin /opt/homebrew/bin/github.com/hashicorp/docker/packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 start builder -packer-default-plugin-name-
    2022/12/20 11:35:14 Starting plugin: /opt/homebrew/bin/github.com/hashicorp/docker/packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 []string{"/opt/homebrew/bin/github.com/hashicorp/docker/packer-plugin-docker_v1.0.8_x5.0_darwin_arm64", "start", "builder", "-packer-default-plugin-name-"}
    2022/12/20 11:35:14 Waiting for RPC address for: /opt/homebrew/bin/github.com/hashicorp/docker/packer-plugin-docker_v1.0.8_x5.0_darwin_arm64
    2022/12/20 11:35:14 Received unix RPC address for /opt/homebrew/bin/github.com/hashicorp/docker/packer-plugin-docker_v1.0.8_x5.0_darwin_arm64: addr is /var/folders/jp/fb11hgs91zgbv9hdz9cyrt7c0000gp/T/packer-plugin2974420626
    2022/12/20 11:35:14 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:14 Plugin address: unix /var/folders/jp/fb11hgs91zgbv9hdz9cyrt7c0000gp/T/packer-plugin2974420626
    2022/12/20 11:35:14 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:14 Waiting for connection...
    2022/12/20 11:35:14 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:14 Serving a plugin connection...
    2022/12/20 11:35:14 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:14 [TRACE] starting builder -packer-default-plugin-name-
    2022/12/20 11:35:14 [TRACE] Starting internal plugin packer-provisioner-shell
    2022/12/20 11:35:14 Starting plugin: /opt/homebrew/Cellar/packer/1.8.5/libexec/bin/packer []string{"/opt/homebrew/Cellar/packer/1.8.5/libexec/bin/packer", "plugin", "packer-provisioner-shell"}
    2022/12/20 11:35:14 Waiting for RPC address for: /opt/homebrew/Cellar/packer/1.8.5/libexec/bin/packer
    2022/12/20 11:35:14 packer-provisioner-shell plugin: [INFO] Packer version: 1.8.5 [go1.19.4 darwin arm64]
    2022/12/20 11:35:14 packer-provisioner-shell plugin: [INFO] PACKER_CONFIG env var not set; checking the default config file path
    2022/12/20 11:35:14 packer-provisioner-shell plugin: [INFO] PACKER_CONFIG env var set; attempting to open config file: /Users/felix/.packerconfig
    2022/12/20 11:35:14 packer-provisioner-shell plugin: [WARN] Config file doesn't exist: /Users/felix/.packerconfig
    2022/12/20 11:35:14 packer-provisioner-shell plugin: [INFO] Setting cache directory: /Users/felix/.cache/packer
    2022/12/20 11:35:14 packer-provisioner-shell plugin: args: []string{"packer-provisioner-shell"}
    2022/12/20 11:35:14 packer-provisioner-shell plugin: Plugin address: unix /var/folders/jp/fb11hgs91zgbv9hdz9cyrt7c0000gp/T/packer-plugin2518400489
    2022/12/20 11:35:14 packer-provisioner-shell plugin: Waiting for connection...
    2022/12/20 11:35:14 Received unix RPC address for /opt/homebrew/Cellar/packer/1.8.5/libexec/bin/packer: addr is /var/folders/jp/fb11hgs91zgbv9hdz9cyrt7c0000gp/T/packer-plugin2518400489
    2022/12/20 11:35:14 packer-provisioner-shell plugin: Serving a plugin connection...
    2022/12/20 11:35:14 Build debug mode: false
    2022/12/20 11:35:14 Force build: false
    2022/12/20 11:35:14 On error:
    2022/12/20 11:35:14 Waiting on builds to complete...
    2022/12/20 11:35:14 Starting build run: debian11.docker.debian11
    2022/12/20 11:35:14 Running builder:
    2022/12/20 11:35:14 [INFO] (telemetry) Starting builder docker.debian11
    debian11.docker.debian11: output will be in this color.
    
    2022/12/20 11:35:14 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:14 [DEBUG] Docker version: 20.0.0
    2022/12/20 11:35:14 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:14 [DEBUG] Container will be discarded
    ==> debian11.docker.debian11: Creating a temporary directory for sharing data...
    2022/12/20 11:35:14 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:14 Set Packer temp dir to /Users/felix/.config/packer/tmp145659102
    ==> debian11.docker.debian11: Pulling Docker image: debian:11
    2022/12/20 11:35:14 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:14 Executing: /usr/local/bin/docker [pull debian:11]
      debian11.docker.debian11: a288aa7ad0e4: Exists
      debian11.docker.debian11: b398b1d261cd: Exists
      debian11.docker.debian11: 92dc36590872: Exists
      debian11.docker.debian11: docker.io/library/debian:11
    ==> debian11.docker.debian11: Error determining source Docker image digest; this image may not have been pushed yet, which means no distribution digest has been created. If you plan to call docker push later, the digest value will be stored then.
    ==> debian11.docker.debian11: Starting docker container...
      debian11.docker.debian11: Run command: docker run -v /Users/felix/.config/packer/tmp145659102:/packer-files -d -i -t --entrypoint=/bin/sh -- debian:11
    2022/12/20 11:35:16 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:16 Starting container with args: [run -v /Users/felix/.config/packer/tmp145659102:/packer-files -d -i -t --entrypoint=/bin/sh -- debian:11]
    2022/12/20 11:35:16 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:16 Waiting for container to finish starting
      debian11.docker.debian11: Container ID: 954577bdc59657046d4cacd31174e793cc1a418d1d22ee1d1bd1e655021dfe23
    ==> debian11.docker.debian11: Using docker communicator to connect: 172.17.0.2
    2022/12/20 11:35:16 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:16 Running the provision hook
    2022/12/20 11:35:16 [INFO] (telemetry) Starting provisioner shell
    ==> debian11.docker.debian11: Provisioning with shell script: /var/folders/jp/fb11hgs91zgbv9hdz9cyrt7c0000gp/T/packer-shell245613446
    2022/12/20 11:35:16 packer-provisioner-shell plugin: Opening /var/folders/jp/fb11hgs91zgbv9hdz9cyrt7c0000gp/T/packer-shell245613446 for reading
    2022/12/20 11:35:16 packer-provisioner-shell plugin: [INFO] 41 bytes written for 'uploadData'
    2022/12/20 11:35:16 [INFO] 41 bytes written for 'uploadData'
    2022/12/20 11:35:16 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:16 Copying to /tmp/script_1419.sh on container 954577bdc59657046d4cacd31174e793cc1a418d1d22ee1d1bd1e655021dfe23.
    2022/12/20 11:35:16 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:16 Copied 41 bytes for /tmp/script_1419.sh
    2022/12/20 11:35:16 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:16 Executing docker exec -i 954577bdc59657046d4cacd31174e793cc1a418d1d22ee1d1bd1e655021dfe23 /bin/sh -c (chmod 0755 /tmp/script_1419.sh):
    2022/12/20 11:35:16 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:16 [INFO] RPC endpoint: Communicator ended with: 0
    2022/12/20 11:35:16 [INFO] RPC client: Communicator ended with: 0
    2022/12/20 11:35:16 [INFO] RPC endpoint: Communicator ended with: 0
    2022/12/20 11:35:16 packer-provisioner-shell plugin: [INFO] RPC client: Communicator ended with: 0
    2022/12/20 11:35:16 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:16 Executing docker exec -i 954577bdc59657046d4cacd31174e793cc1a418d1d22ee1d1bd1e655021dfe23 /bin/sh -c (chmod +x /tmp/script_1419.sh; PACKER_BUILDER_TYPE='docker' PACKER_BUILD_NAME='debian11'  /tmp/script_1419.sh):
    ==> debian11.docker.debian11: /tmp/script_1419.sh: 2: cannot create /srv/test.txt: Directory nonexistent
    2022/12/20 11:35:16 packer-plugin-docker_v1.0.8_x5.0_darwin_arm64 plugin: 2022/12/20 11:35:16 [INFO] RPC endpoint: Communicator ended with: 2
    2022/12/20 11:35:16 [INFO] 0 bytes written for 'stdout'
    2022/12/20 11:35:16 [INFO] 75 bytes written for 'stderr'
    2022/12/20 11:35:16 [INFO] RPC client: Communicator ended with: 2
    2022/12/20 11:35:16 [INFO] RPC endpoint: Communicator ended with: 2
    2022/12/20 11:35:16 packer-provisioner-shell plugin: [INFO] 0 bytes written for 'stdout'
    2022/12/20 11:35:16 packer-provisioner-shell plugin: [INFO] 75 bytes written for 'stderr'
    2022/12/20 11:35:16 packer-provisioner-shell plugin: [INFO] RPC client: Communicator ended with: 2
    2022/12/20 11:35:16 [INFO] (telemetry) ending shell
    ==> debian11.docker.debian11: Provisioning step had errors: Running the cleanup provisioner, if present...
    ==> debian11.docker.debian11: Killing the container: 954577bdc59657046d4cacd31174e793cc1a418d1d22ee1d1bd1e655021dfe23
    2022/12/20 11:35:17 [INFO] (telemetry) ending docker.debian11
    ==> Wait completed after 2 seconds 634 milliseconds
    2022/12/20 11:35:17 machine readable: error-count []string{"1"}
    ==> Some builds didn't complete successfully and had errors:
    2022/12/20 11:35:17 machine readable: debian11.docker.debian11,error []string{"Script exited with non-zero exit status: 2. Allowed exit codes are: [0]"}
    ==> Builds finished but no artifacts were created.
    Build 'debian11.docker.debian11' errored after 2 seconds 634 milliseconds: Script exited with non-zero exit status: 2. Allowed exit codes are: [0]
    
    ==> Wait completed after 2 seconds 634 milliseconds
    
    2022/12/20 11:35:17 [INFO] (telemetry) Finalizing.
    ==> Some builds didn't complete successfully and had errors:
    --> debian11.docker.debian11: Script exited with non-zero exit status: 2. Allowed exit codes are: [0]
    
    ==> Builds finished but no artifacts were created.
    2022/12/20 11:35:17 waiting for all plugin processes to complete...
    2022/12/20 11:35:17 /opt/homebrew/bin/github.com/hashicorp/docker/packer-plugin-docker_v1.0.8_x5.0_darwin_arm64: plugin process exited
    2022/12/20 11:35:17 /opt/homebrew/Cellar/packer/1.8.5/libexec/bin/packer: plugin process exited
    
Related tags
A Packer plugin for provisioning with Terraform (local)

Packer Plugin Terraform Inspired by Megan Marsh's talk https://www.hashicorp.com/resources/extending-packer I bit the bullet and started making my own

Nov 23, 2022
Flux is a tool for keeping Kubernetes clusters in sync with sources of configuration, and automating updates to configuration when there is new code to deploy.
Flux is a tool for keeping Kubernetes clusters in sync with sources of configuration, and automating updates to configuration when there is new code to deploy.

Flux is a tool for keeping Kubernetes clusters in sync with sources of configuration (like Git repositories), and automating updates to configuration when there is new code to deploy.

Jan 8, 2023
An image server which automatically optimize non webp and avif images to webp and avif images

go-imageserver go-imageserver is an image server which automatically optimize no

Apr 18, 2022
GitHub Action: Compose multiple (conditional) checks into a single check based on file paths in a pull request
GitHub Action: Compose multiple (conditional) checks into a single check based on file paths in a pull request

GitHub Action: Composite Example Usage --- name: All Checks on: pull_request: branches: - main jobs: meta: runs-on: - ubuntu-20.

Dec 29, 2022
Vilicus is an open source tool that orchestrates security scans of container images(docker/oci) and centralizes all results into a database for further analysis and metrics.
Vilicus is an open source tool that orchestrates security scans of container images(docker/oci) and centralizes all results into a database for further analysis and metrics.

Vilicus Table of Contents Overview How does it work? Architecture Development Run deployment manually Usage Example of analysis Overview Vilicus is an

Dec 6, 2022
Sbom-operator - Catalogue all images of a Kubernetes cluster to multiple targets with Syft

sbom-operator Catalogue all images of a Kubernetes cluster to multiple targets w

Jan 4, 2023
Open Source runtime tool which help to detect malware code execution and run time mis-configuration change on a kubernetes cluster
Open Source runtime tool which help to detect malware code execution and run time mis-configuration change on a kubernetes cluster

Kube-Knark Project Trace your kubernetes runtime !! Kube-Knark is an open source tracer uses pcap & ebpf technology to perform runtime tracing on a de

Sep 19, 2022
S3pd - CLI utility that downloads multiple s3 objects at a time, with multiple range-requests issued per object

S3 Parallel Downloader CLI utility that downloads multiple s3 objects at a time,

May 13, 2022
Kubernetes is an open source system for managing containerized applications across multiple hosts.
Kubernetes is an open source system for managing containerized applications across multiple hosts.

Kubernetes Kubernetes is an open source system for managing containerized applications across multiple hosts. It provides basic mechanisms for deploym

Nov 25, 2021
An extensible tool for creating your own in cluster health endpoints

healthyk8s an extensible tool for creating your own "in cluster" health endpoints Why? allows for creating a health endpoint for anything - external r

Oct 26, 2021
A tool to check whether docker images exist in the remote registry.

Check Docker Image A tool to check whether docker images exist in the remote registry. Build project: go build -o check-image . Example usage: REGISTR

Jul 26, 2022
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers

Developer-oriented Continuous Delivery Product âŖ English | įŽ€äŊ“中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? How to

Oct 19, 2021
pr-bullet is a tool for copying pull request to multiple repositories.

pr-bullet pr-bullet is a tool for copying pull request to multiple repositories. Usage First, create original pull request ( ex. https://github.com/k1

Oct 5, 2022
Turn a heterogeneous pile of text docs into a single web page with good search.
Turn a heterogeneous pile of text docs into a single web page with good search.

Codex Codex turns an unstructured pile of heterogeneous documents into a single interactive web document. Your input documents maybe in markdown, TeX,

Jan 2, 2022
Lightweight, single-binary Backup Repository client. Part of E2E Backup Architecture designed by RiotKit

Backup Maker Tiny backup client packed in a single binary. Interacts with a Backup Repository server to store files, uses GPG to secure your backups e

Apr 4, 2022
Learning about containers and how they work by creating them the hard way
Learning about containers and how they work by creating them the hard way

Containers the hard way: Gocker: A mini Docker written in Go It is a set of Linux's operating system primitives that provide the illusion of a contain

Jan 7, 2023
Traefik-redirect-operator is created to substitute manual effort of creating an ingress and service type External.
Traefik-redirect-operator is created to substitute manual effort of creating an ingress and service type External.

Overview Traefik Redirect Operator is used to help creating a combination of Ingress of Traefik controller along with Service's ExternalName type. The

Sep 22, 2021