LoginSignup
0
0

More than 5 years have passed since last update.

Packer で GCP のイメージ作成を CircleCI 経由でやってみる

Posted at

Packer で GCP のイメージ作成を CircleCI 経由でやってみる

前に AWS のイメージ作成のやつで、Packer でイメージ作るのを CircleCI でやってみる というのをやったので、その GCP 版をやってみたいと思います。

流れ的には、前回のものとほぼ一緒なので、違う点だけ書いていきます。

前提条件

  • CircleCI の Contexts に GCP を作成し、AUTHPROJECT_ID を登録
  • GCP にサービスアカウントを作成して、GCE とストレージあたりに権限つけ、ダウンロードした キーは base64 エンコードして、CircleCI の Contexts の GCP の AUTH に入れておく

ソース

今回は、github に用意してみました。

ファイルは2個です。

build.json
{  "variables": {
    "project_id": "{{env `PROJECT_ID`}}"
  },
  "builders": [
    {
      "type": "googlecompute",
      "account_file": "account.json",
      "project_id": "{{user `project_id`}}",
      "machine_type": "f1-micro",
      "source_image_family": "ubuntu-1804-lts",
      "region": "asia-northeast1",
      "zone": "asia-northeast1-b",
      "image_description": "Ubuntu Machine Image",
      "image_name": "ubuntu1804",
      "disk_size": 10,
      "disk_type": "pd-ssd",
      "ssh_username": "root"
    }
  ],
  "provisioners": [
    {
      "type": "shell",
      "inline": [
        "sleep 30",
        "sudo apt-get update",
        "sudo apt-get install -y nginx"
      ]
    }
  ]
}
circleci/config.yml
version: 2
jobs:
  build:
    docker:
      - image: hashicorp/packer:1.3.3
    working_directory: ~/packer
    steps:
      - checkout
      - attach_workspace:
          at: ~/packer
      - run:
          name: Build 
          command: |
            if [ "${CIRCLE_BRANCH}" == "master" ]; then
              echo $AUTH | base64 -d > ./account.json
              packer build --force build.json
            fi
          no_output_timeout: 30m
workflows:
  version: 2
  build-and-deploy:
    jobs:
      - build:
          context: GCP

前回の時と違うのは、サービスアカウントのキーの扱いですね。
GCP のサービスアカウントのキーは、ダウンロードした JSON を base64 でエンコードしておきます。エンコードしたキーは CircleCI の Contexts に作った GCP の AUTH に登録します。

ちょっと面倒だったのが、base64 の処理で、今回は docker 上で動いてる関係で、オプションが微妙に違っていてエラーが出たりしたとこでした。

ではやっていきます

  1. github のレポジトリを CircleCI 上で Set Up Project します
  2. Start Building を押します
  3. SUCCESS したら、GCE のイメージを確認します

まぁ、そんなに難しくないですね。
前回と流れはあんまり変わらないと思います。

もしかすると、GCP の権限でひっかかるかもしれないですが・・・

まとめ

GCP でも CircleCI 連携で Packer のイメージ作成ができました。
これで、プッシュすればイメージが作成されるという環境が構築できると思います。
何度プッシュしても大丈夫なように、ビルドオプションに --force つけてます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0