Facebook Twitter
お問い合わせ
TOPICS
更新情報
ホーム > ブログ > Oracle Cloud > PackerでOCIのCustum Imageを作成してみた

PackerでOCIのCustum Imageを作成してみた

Oracle Cloud
ソフトウェア
2019.02.12

こんにちは、id:a-oonoです。

当ブログではオラクルクラウドを主で扱っているので、Oracle Cloud Infrastructure (OCI) に対応している自動化ツールである Packer を紹介したいと思います。

Packerは定義ファイルをもとにマシンイメージを作成するツールです。 AWSのAMI作成等では標準的なツールなのですが、つい先日、OCIの Compute Custom Image 1作成にも利用できる点に気が付きましたので皆さんに是非紹介したいと思います。

記事の到達目標

  • Packerを用いてOCIの Custom Imageを作成します。

前提

  • packerの導入が必要となります。GoのバイナリですのでWindows, Linux, Macの各種で動作します。公式の導入手順2をご確認ください。この記事では version 1.3.3で動作確認しています。
  • oci cliが導入され、設定済みであること。
  • packerで用いるパラメータの準備。
    • 詳細は本家リファレンスを確認下さい。
      • OSイメージによってsshユーザが異なるので注意が必要です。Oracle Linuxはopc、Ubuntuはubuntuとなります。
    • Packerで作成するCustom Imageの編集元となるOracle Cloud オリジナル・イメージのocidは以下コマンドで確認しておきます。
      • イメージの命名規則は参考資料のOracle-Provided Images3を参照。
 $ oci compute image list --compartment-id xxxxxx

手順

  • packerで用いるbuild用のファイルpacker-example.jsonを準備します。

今回は、base_image_ocidにOCI公式イメージ(Ubuntu 18.04 LTS)を指定してみました。

{
"builders": [{
"availability_domain": "dArW:US-ASHBURN-AD-2",
"base_image_ocid": "ocid1.image.oc1..aaaaaxxx",
"compartment_ocid": "ocid1.compartment.xxx..aaaxxxx",
"image_name": "ExampleImage",
"shape": "VM.Standard.E2.1",
"ssh_username": "ubuntu",
"subnet_ocid": "ocid1.subnet.oc1.iad.aaaaaxxxxx",
"type": "oracle-oci"  }],
"provisioners": [{
"type": "shell",
"inline": [
"sudo apt -y install apache2"
]  }]
}
  • packer buildコマンドに先ほどのファイルを引数に渡します。
$ packer build packer-example.json
oracle-oci output will be in this color.
==> oracle-oci: Creating temporary ssh key for instance...
==> oracle-oci: Creating instance...
==> oracle-oci: Created instance (ocid1.instance.oc1.ixxx).
~ 省略 ~
Build 'oracle-oci' finished.
==> Builds finished. The artifacts of successful builds are:
--> oracle-oci: An image was created: 'ExampleImage' (OCID: ocid1.image.oc1.xxxs) in region 'us-ashburn-1'

最後にCustom Image ExampleImage のocidが出力されます。 また、下図のようにCustom Imageが作成されていることも確認できます。。

f:id:a-oono:20190212140141p:plain
Packerで作成したCustom Image

動作確認

実際に、Custom ImageからComputeインスタンスをデプロイしてみると、provisionersで記載したpackegeが導入されていることが確認できます。

上記のjsonに指定している、apache2(httpd)が導入されていることが確認できました。

ubuntu@ubuntucustomimage:~$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
mqapache2-systemd.conf
Active: active (running) since Tue 2019-02-12 04:54:11 UTC; 2min 43s ago
Main PID: 1089 (apache2)
Tasks: 55 (limit: 4915)
CGroup: /system.slice/apache2.service
tq1089 /usr/sbin/apache2 -k start
tq1090 /usr/sbin/apache2 -k start
mq1091 /usr/sbin/apache2 -k start
Feb 12 04:54:11 ubuntucustomimage systemd[1]: Starting The Apache HTTP Server...
Feb 12 04:54:11 ubuntucustomimage apachectl[1020]: AH00558: apache2: Could not reliably determine the server's fully qua
Feb 12 04:54:11 ubuntucustomimage systemd[1]: Started The Apache HTTP Server.

発展的な課題として、セキュリティパッチを更新したイメージを定期的に自動作成したり、provisionersでansibleを利用するなどできそうです。

以上、Packer でCustom Imageを作成する方法を紹介させて頂きました。

参考文献


この記事が気に入ったら
「いいね!」

この記事を書いた人


関連コンテンツ

CONTACT お問い合わせ

Cloudiiのサービスやプロダクトについて
興味をお持ちの方は、
お気軽にお問い合わせください。