Build VM images with Packer
Packer is an open source tool for creating identical Virtual Machine (VM) images for multiple platforms from a single source configuration. This page explains how to use Packer and FluentCI to create a VM image.
Before you begin
The instructions on this page assume that you are familiar with Packer
. In addition:
- Have your source code including the Packer template handy.
Using the Packer Plugin
You can use FluentCI to build VM images using the packer plugin, no need to install Packer on your machine, FluentCI will handle everything for you.
The following command can be used to build VM image with Packer:
fluenci run --wasm packer fmt
fluenci run --wasm packer validate
fluenci run --wasm packer build
CI/CD pipeline integrations
The following examples show how to integrate FluentCI with popular CI providers to build VM images with Packer:
- Github Actions
- GitLab CI
- Circle CI
- Azure Pipelines
- AWS CodePipeline
ci.yml
name: ci
on:
push:
branches:
- main
jobs:
tasks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Fluent CI
uses: fluentci-io/setup-fluentci@v5
- name: fmt
run: fluentci run --wasm packer fmt
- name: validate
run: fluentci run --wasm packer validate
- name: build
run: fluentci run --wasm packer build
.gitlab-ci.yml
.docker:
image: denoland/deno:debian-1.42.4
services:
- docker:${DOCKER_VERSION}-dind
variables:
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_VERIFY: "1"
DOCKER_TLS_CERTDIR: /certs
DOCKER_CERT_PATH: /certs/client
DOCKER_DRIVER: overlay2
DOCKER_VERSION: 20.10.16
GITLAB_ACCESS_TOKEN: $GITLAB_ACCESS_TOKEN
.fluentci:
extends: .docker
before_script:
- apt-get update
- apt-get install -y curl tar gzip ca-certificates openssl git unzip libncursesw6
- deno install -A -r https://cli.fluentci.io -n fluentci
- fluentci --version
- curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.12.3 sh
- mv bin/dagger /usr/local/bin
- dagger version
fmt:
extends: .fluentci
script:
- fluentci run --wasm packer fmt
validate:
extends: .fluentci
script:
- fluentci run --wasm packer validate
build:
extends: .fluentci
script:
- fluentci run --wasm packer build
.circleci/config.yml
version: 2.1
jobs:
job:
steps:
- checkout
- run: |
sudo apt-get update && sudo apt-get install -y curl unzip
curl -fsSL https://cli.fluentci.io | bash
fluentci --version
name: Setup FluentCI
- run: fluentci run --wasm packer fmt
name: fmt
- run: fluentci run --wasm packer validate
name: validate
- run: fluentci run --wasm packer build
name: build
machine:
image: ubuntu-2004:2023.07.1
workflows:
fluentci:
jobs:
- job
azure-pipelines.yml
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- script: |
curl -fsSL https://cli.fluentci.io | bash
fluentci --version
echo "##vso[task.prependpath]${HOME}/.deno/bin
displayName: Setup FluentCI
- script: fluentci run --wasm packer fmt
displayName: fmt
- script: fluentci run --wasm packer validate
displayName: validate
- script: fluentci run --wasm packer build
displayName: build
buildspec.yml
version: 0.2
phases:
install:
commands:
- curl -fsSL https://cli.fluentci.io | bash
- fluentci --version
build:
commands:
- fluentci run --wasm packer fmt
- fluentci run --wasm packer validate
- fluentci run --wasm packer build
post_build:
commands:
- echo Build completed on `date`