謹賀新年&VagrantでGCP

あけましておめでとうございます。

なにとぞ本年もよろしくご愛顧のほどひとえにお願い申し上げます。

というわけでvagrantでGCEのインスタンス立ち上げです。

まずはVagrantインストール。は終わったとして、Vagrant Google Compute Engine (GCE) Providerプラグインのインストールです。

Microsoft Windows [Version 10.0.16299.125]
(c) 2017 Microsoft Corporation. All rights reserved.

>vagrant plugin install vagrant-google
Installing the 'vagrant-google' plugin. This can take a few minutes...
Fetching: vagrant-share-1.1.9.gem (100%)
Fetching: excon-0.60.0.gem (100%)
Fetching: formatador-0.2.5.gem (100%)
Fetching: fog-core-1.45.0.gem (100%)
Fetching: fog-json-1.0.2.gem (100%)
Fetching: mini_portile2-2.3.0.gem (100%)
Fetching: nokogiri-1.8.1-x64-mingw32.gem (100%)
Nokogiri is built with the packaged libraries: libxml2-2.9.5, libxslt-1.1.30, zlib-1.2.11, libiconv-1.15.
Fetching: fog-xml-0.1.3.gem (100%)
Fetching: fog-google-0.5.5.gem (100%)
Fetching: public_suffix-3.0.1.gem (100%)
Fetching: addressable-2.5.2.gem (100%)
Fetching: multipart-post-2.0.0.gem (100%)
Fetching: faraday-0.13.1.gem (100%)
Fetching: jwt-2.1.0.gem (100%)
Fetching: signet-0.8.1.gem (100%)
Fetching: memoist-0.16.0.gem (100%)
Fetching: os-0.9.6.gem (100%)
Fetching: googleauth-0.6.2.gem (100%)
Fetching: extlib-0.9.16.gem (100%)
Fetching: autoparse-0.3.3.gem (100%)
Fetching: launchy-2.4.3.gem (100%)
Fetching: retriable-1.4.1.gem (100%)
Fetching: thread_safe-0.3.6.gem (100%)
Fetching: tzinfo-1.2.4.gem (100%)
Fetching: minitest-5.10.3.gem (100%)
Fetching: activesupport-4.2.10.gem (100%)
Fetching: google-api-client-0.8.7.gem (100%)
Fetching: vagrant-google-1.0.0.gem (100%)
Installed the plugin 'vagrant-google (1.0.0)'!

>

。。。いつの間にかgemなの?まあいいや。

前準備としてGCPのサービスアカウントを作ります。役割はComputeインスタンス管理者(ベータ版)としてました。鍵はダウンロードしておきます。

個人用のSSH公開鍵をGCPに登録しておきます。

サービスアカウントの鍵とSSH秘密鍵を先程作ったディレクトリにコピーしておきます。

適当にvagrant用のディレクトリを作ります。

そこでVagrantfileを作ります。

Vagrant.configure('2') do |config|
  config.vm.box = 'google/gce'

  config.vm.provider :google do |google, override|
    google.google_project_id = 'GCPプロジェクト名'
    google.google_client_email = 'サービスアカウント名'
    google.google_json_key_location = 'サービスアカウントの鍵'

    override.ssh.username = 'SSHで接続するときのユーザー名'
    override.ssh.private_key_path = '秘密鍵'
    #override.ssh.private_key_path = '~/.ssh/google_compute_engine'
  end

end

Vagrantfileを作るときの注意点はダブルクォーテーションが使えないみたいです。シングルクォーテーションにすること。

そしてvagrant –provider=googleを実行。

>vagrant up --provider=google
Bringing machine 'default' up with 'google' provider...
==> default: Box 'google/gce' could not be found. Attempting to find and install...
    default: Box Provider: google
    default: Box Version: >= 0
==> default: Loading metadata for box 'google/gce'
    default: URL: https://vagrantcloud.com/google/gce
==> default: Adding box 'google/gce' (v0.1.0) for provider: google
    default: Downloading: https://vagrantcloud.com/google/boxes/gce/versions/0.1.0/providers/google.box
    default: Progress: 100% (Rate: 348/s, Estimated time remaining: --:--:--)
==> default: Successfully added box 'google/gce' (v0.1.0) for 'google'!
==> default: Checking if box 'google/gce' is up to date...
==> default: Launching an instance with the following settings...
==> default:  -- Name:            i-2018010112-30572ce9
==> default:  -- Type:            n1-standard-1
==> default:  -- Disk type:       pd-standard
==> default:  -- Disk size:       10 GB
==> default:  -- Disk name:
==> default:  -- Image:           debian-8-jessie-v20160511
==> default:  -- Instance Group:
==> default:  -- Zone:            us-central1-f
==> default:  -- Network:         default
==> default:  -- Metadata:        '{}'
==> default:  -- Tags:            '[]'
==> default:  -- IP Forward:
==> default:  -- Use private IP:  false
==> default:  -- External IP:
==> default:  -- Preemptible:     false
==> default:  -- Auto Restart:    true
==> default:  -- On Maintenance:  MIGRATE
==> default:  -- Autodelete Disk: true
==> default:  -- Scopes:
==> default: Waiting for instance to become "ready"...
==> default: Machine is booted and ready for use!
==> default: Waiting for SSH to become available...
Enter passphrase for C:/vagrant/id_rsa:
==> default: Machine is ready for SSH access!
==> default: Rsyncing folder: /cygdrive/C/vagrant/ => /vagrant
There was an error when attemping to rsync a share folder.
Please inspect the error message below for more info.

Host path: /cygdrive/C/vagrant/
Guest path: /vagrant
Error: This rsync lacks old-style --compress due to its external zlib.  Try -zz.
Continuing without compression.

Could not create directory '/.ssh'.
Failed to add the host to the list of known hosts (/.ssh/known_hosts).
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.2]

>

というわけでGCEができました。いくつかエラーが出ていますが、もともとWindowsで動かすのではなくMacで動かすことが想定されているのでしょう。

Vagrantfileに設定できる項目はこちらにまとめられているので見ておくといいでしょう。

なんで今さらVagrant?

Vagrantならvirtualboxでも使えるし。開発⇔ステージング⇔本番環境とまったく同じツールで構築できるのはでかいかなと。

コメントを残す

メールアドレスが公開されることはありません。