tabimoba.net

とあるエンジニアの雑記帳

lxdコンテナをイメージファイル化して、そのままS3バケットへアップロードするスクリプト

環境

Ubuntu 18.04 LTS

前提条件

  • LXDが利用できる
  • awscliがインストールされている
  • aws configureが完了している
  • IAMロール または IAMユーザーの認証情報が設定済み

実行方法

スクリプトのファイル名が、lxd_publish_image_to_s3.shの場合

# ./lxd_publish_image_to_s3.sh <LXDコンテナ名>

コード

IMAGE_OUTPUT_DIRに、lxdコンテナイメージファイルのアップロード先ディレクトリを指定 S3_BUCKETに、アップロード先のS3バケットを指定

#!/bin/sh
set -eu
IMAGE_NAME=${1}
IMAGE_OUTPUT_DIR=/data/lxd_images
S3_BUCKET=lxd-images

lxc publish ${IMAGE_NAME} --alias ${IMAGE_NAME}
lxc image export ${IMAGE_NAME} ${IMAGE_OUTPUT_DIR}/
mv `lxc image info ${IMAGE_NAME} | grep "Fingerprint:" | sed "s/Fingerprint: //g"`.tar.gz ${IMAGE_NAME}.tar.gz
aws s3 cp ${IMAGE_OUTPUT_DIR}/${IMAGE_NAME}.tar.gz s3://${S3_BUCKET}/