今日は最近開発が再開した、Vagrantで さくらのクラウドのサーバを操作するためのプロバイダーvagrant-sakuraについて、 最近追加された新機能についてご紹介します。
vagrant-sakuraって?
一言で言うと「Vagrantにさくらのクラウド上のサーバを操作する機能を追加するためのプラグイン」です。
基本的な機能は以下の記事が詳しいです。
vagrant-sakuraの開発再開
このvagrant-sakuraですが、元々はtsaharaさんが開発されたものです。
2016年5月にリリースされたv0.0.8以降は新規機能追加などの活動があまり行われていませんでしたが、
2018年7月にさくらのクラウド関連のユーザーコミュニティによるOSSを置いているGitHub上のオーガニゼーションsacloudにリポジトリ移転がなされ、
そこから開発を再開しいくつかの機能追加/改善を行ってきました。
sacloud配下にはVagrantをはじめ、PackerやTerraformといったHashiCorpプロダクトのさくらのクラウド向けプラグインや CLI Usacloudなどもあります。
vagrant-sakuraの新機能には、これらのプロダクトとの相互運用を楽にするための機能追加なども含まれています。
ということで早速新機能を紹介していきます。
sacloud/vagrant-sakuraの新機能
本日(2018/9/10)リリースした vagrant-sakura v0.1.0時点では以下のような機能が追加されています。
- 環境変数
SAKURACLOUD_xxx
からのAPIキーの読み込み機能 - Usacloudの設定ファイル(APIキー)の読み込み機能
- パケットフィルター/スタートアップスクリプト指定機能
- コピー元アーカイブを種別(
os_type
パラメータ)で指定する機能 - OSの再インストール機能
順にみていきます。
環境変数 SAKURACLOUD_xxx
からのAPIキーの読み込み機能
SAKURACLOUD_ACCESS_TOKEN
: APIアクセストークンSAKURACLOUD_ACCESS_TOKEN_SECRET
: APIアクセスシークレットSAKURACLOUD_ZONE
: 操作対象ゾーン
これまでもSAKURA_ACCESS_TOKEN
といった環境変数が利用できましたが、これはvagrant-sakura独自のものでした。
追加された環境変数はUsacloudやTerraform for さくらのクラウド、Packer for さくらのクラウドといったSacloudプロダクトと共通で利用できるもので、
既にSacloudのプロダクトをご利用中の方であれば設定していることの多い環境変数です。
Vagrantで開発してたものをPackerでパッケージングし、Terraformでproduction環境に反映、運用保守はUsacloudでといった場合に それぞれでAPIキーの設定をせずとも共通の環境変数が利用できるようになったのは地味ですが意外と便利です。
Usacloudの設定ファイル(APIキー)の読み込み機能
同じくAPIキーの設定関連の機能ですが、APIキーをUsacloudの設定ファイルから自動で読み込んでくれる機能です。 Usacloudは複数のアカウントを使い分けられるようにAPIキーを設定ファイルに複数保存しておき、必要に応じて切り替えて使う機能を持っています。
今回追加された機能により、この設定ファイルをvagrantでも認識できるようになりました。
前述の機能と合わせるとAPIキーの設定は以下3通りの設定方法があることになります。
複数の方法でAPIキーを指定した場合は、より上に記載されている方法が優先されます。
使い方
VagrantfileにAPIキーの指定を行っていない場合は自動的にUsacloud設定ファイルを読み込むようになっています。
Usacloudで複数のAPIキー設定がある場合はカレントの設定を利用しようとします。
(以下の例だとuser01
の設定を利用する)
# 登録されているAPIキー設定(コンフィグ)を一覧表示 $ usacloud config list default user01 user02 # 現在利用しているAPIキー設定を表示 $ usacloud config current user01
Usacloud側でカレントの設定を変更するとVagrant側も追随するようになっています。
# Usacloudでカレントを変更 $ usacloud config use user02 Current profile: "user02" # 現在利用しているAPIキー設定を表示 $ usacloud config current user02
Usacloudではconfig edit
機能で対話的にAPIキーの設定が可能となっています。複数のAPIキーを利用している場合は手軽に切り替えができるようになりますのでぜひご利用ください。
パケットフィルター/スタートアップスクリプト指定機能
結構要望があった機能です。サーバ作成時にパケットフィルタやスタートアップスクリプトを指定可能となっています。
使い方
VagrantfileにてそれぞれにIDを指定すればOKです。
Vagrant.configure("2") do |config| # ... config.vm.provider :sakura do |sakura, override| # ... #============================================ # スタートアップスクリプトの指定 #============================================ # IDで指定 sakura.startup_scripts = 123456789012 # 文字列でもOK # sakura.startup_scripts = "123456789012" # 複数指定する場合 # sakura.startup_scripts = [123456789012, xxx, yyy, ...] #============================================ # パケットフィルタの指定 #============================================ sakura.packet_filter = 123456789012 end end
コピー元アーカイブを種別(os_type
パラメータ)で指定する機能
これまではサーバ作成時にコピー元アーカイブのIDを指定する必要がありました。
Vagrant.configure("2") do |config| config.vm.box = "dummy" config.ssh.username = "root" config.vm.provider :sakura do |sakura| sakura.disk_source_archive = 111111111111 # アーカイブのIDを指定 sakura.use_insecure_key = true end end
アーカイブのIDを知るにはコントロールパネルで調べたり、vagrant-sakuraのsakura-list-id
コマンドやUsacloudでアーカイブを検索して調べるという作業が必要でした。
さくらのクラウドではいくつかのOSについてはパブリックアーカイブ
というアーカイブが提供されているため、これらのIDを指定することでサーバの作成が可能となっています。
しかし、厄介なことにパブリックアーカイブのIDはゾーンごとに異なります。
例えば石狩第2ゾーンでのCentOS7と東京第1ゾーンでのCentOS7では違うIDとなっています。
また、同じCentOS7でも、さくらのクラウド側でアップデートが行われることがあり、その際にはIDが変更されることが多いです。
なのでIDを直接指定する形だとある日突然サーバの作成が行えなくなるといったことが発生していました。
UsacloudやTerraform、Packerでも同様の問題が発生しますが、これらのプロダクトではos_type
というOSの種別を指定できる機能で対応しています。
これは、centos
やubuntu
といったOS種別を指定すると種別に対応する各ゾーンの最新安定板のアーカイブのIDを検索し設定してくれるものです。
例えばUbuntuパブリックアーカイブの場合は16.04.4や18.04といった複数のバージョンが存在するため、それらの中から最新安定板を選ぶようにしています
vagrant-sakuraでは以下の値が指定可能です。
ubuntu
(デフォルト)centos
centos6
debian
coreos
freebsd
rancheros
パブリックアーカイブを利用する場合はos_type
を用い、自分で作成したアーカイブ(マイアーカイブ)を利用する場合はdisk_source_archive
を利用するという使い分けがオススメです。
OSの再インストール機能
従来はvagrant-sakuraで作成したサーバのOS再インストールを行う場合は、一旦destroy
してから再度up
する必要がありました。
こうするとさくらのクラウドで割り当てられたグローバルIPが変更されてしまうことがあり、DNS登録していた場合はそちらも変更しなければいけないケースがありました。
そこで今回作成されたサーバはそのまま(もちろん割り当てられたグローバルIPは確保したまま)でOSの再インストールを行うためのサブコマンドを追加しました。
使い方
sakura-reinstall
というコマンドを実行することでOS再インストールが行えます。
$ vagrant sakura-reinstall
Ansibleなどのサーバ構成管理ツールを試行錯誤しながら作る際に便利だと思います。
終わりに
ということで、今後も様々な機能追加/改善を行う予定です。 質問やバグ報告、ご要望などはぜひGitHubにIssue/PRを投げてください。
なお、Sacloudプロダクトの使い方などが質問できるSlackワークスペースもあります。
どなたでも参加可能になっていますので、操作方法などでお困りの方はぜひご参加ください。
以上です。