くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

Conohaへ(ほぼ)CLIだけでCoreOSのインスタンスをセットアップしてみた

今回やること一覧

特に記載のない限り、CLIでやります。

  1. ツール等の準備
    1. 環境変数の設定
    2. vagrant-conohaのインストール
    3. ConoHa ISOのインストール
    4. CoreOSのISOイメージをConohaに対してダウンロード
  2. ConohaにCoreOSをインストール
    1. Conohaのインスタンスを作成
    2. CoreOSのISOイメージをConohaにマウント
    3. CoreOSをインストール1 ※一部GUI
    4. CoreOSをインストール2
    5. CoreOSのISOイメージをアンマウントして再起動
    6. Vagrantfileの書き換え(ssh用のユーザを変更)
  3. インスタンスのイメージ保存・削除・復元
    1. インスタンスのイメージ保存 ※GUI
    2. インスタンスの削除
    3. インスタンスの復元

前提条件

準備物

  • 契約済みのConohaアカウント

操作環境

  • Windows10 Pro
  • CLIにはGit bashを使用
  • Vagrantインストール済み

1. ツール等の準備

1-1. 環境変数の設定

あらかじめ以下の環境変数をセットしておきます

export OS_USERNAME=[APIユーザ名]
export OS_PASSWORD=[APIパスワード]
export OS_TENANT_NAME=[テナント名]
export OS_AUTH_URL=[Identity Endpoint]
export OS_REGION=[リージョン]
export OS_ADMIN_PASSWORD=[Adminパスワード]

※ここで設定した環境変数は以降の「vagrant-conoha」と「ConoHa ISO」で利用します。

1-2. vagrant-conohaのインストール

ConohaのインスタンスをCLIで生成・停止・破棄などするために、vagrant-conohaを導入します。

$ vagrant plugin install vagrant-conoha

1-3. ConoHa ISOのインストール

ConohaへカスタムISOを登録するために、ConoHa ISO というツールを導入します。

$ curl -L -O https://github.com/hironobu-s/conoha-iso/releases/download/current/conoha-iso.amd64.zip
$ unzip conoha-iso.amd64.zip

※MacやLinuxの人はREADMEを参照

1-4. CoreOSのISOイメージをConohaに対してダウンロード

ISOイメージのダウンロード

$ conoha-iso download -i "https://stable.release.core-os.net/amd64-usr/1185.3.0/coreos_production_iso_image.iso"

実行結果に

time="2016-11-23T18:48:15+09:00" level=info msg="Download request was accepted."

などと表示されるので、ダウンロードが完了するまでしばらく待ちます。

ISOイメージの一覧を確認

$ conoha-iso list

2. ConohaにCoreOSをインストール

2-1. Conohaのインスタンスを作成

Vagrantfileの作成

Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box       = 'conoha'
  config.ssh.username = 'root'
  config.ssh.pty      = true

  # disable rsync
  config.vm.synced_folder ".", "/vagrant", disabled: true

  config.vm.provider :conoha do |conoha|
    conoha.openstack_auth_url = 'https://identity.tyo1.conoha.io/v2.0'

    conoha.username           = ENV["OS_USERNAME"]
    conoha.password           = ENV["OS_PASSWORD"]
    conoha.tenant_name        = ENV["OS_TENANT_NAME"]

    conoha.flavor             = 'g-1gb'
    conoha.image              = 'vmi-ubuntu-14.04-amd64'
    conoha.region             = ENV["OS_REGION"]
    conoha.admin_pass         = ENV["OS_ADMIN_PASSWORD"]
    conoha.metadata           = {
      instance_name_tag: "vagrant_conoha"
    }
    conoha.security_groups    = [
      "default",
      "gncs-ipv4-all"
    ]
  end
end

※rsyncはローカルにないので無効化しておきます。 ^1

インスタンスを生成

$ vagrant up

authorized_keysの確認

$ echo "cat ~/.ssh/authorized_keys" | vagrant ssh

※あとで使うので控えておく

インスタンスを停止

$ vagrant halt

2-2. CoreOSのISOイメージをConohaにマウント

$ conoha-iso insert

対話形式で進める。こんな感じ。

[1] vagrant_conoha (150-95-143-11)
Please select VPS [1]: 1

[1] coreos_production_iso_image.iso
Please select ISO [1]: 1
time="2016-11-23T19:16:41+09:00" level=info msg="ISO file was inserted and changed boot device."

2-3. CoreOSをインストール1 ※一部GUI

インスタンスを起動

$ vagrant up

SSHでログインできるようにする

ここだけConohaのWEBコンソールから操作します

$ sudo passwd core

2-4. CoreOSをインストール2

稼働中のConohaのインスタンスにsshでログイン

$ ssh core@インスタンスのIPアドレス

パーティションの削除

$ sudo fdisk /dev/vda
p
d
d
d
wq

cloud-config.yamlを作成

~/cloud-config.yaml

#cloud-config

ssh_authorized_keys:
  - ssh-rsa ※項番「2-1」で確認したauthorized_keysを記入

※公開鍵はvagrant ssh-configで取得した秘密鍵から生成するのが正しいと思うのですが横着しました

インストール

$ sudo coreos-install -d /dev/vda -C stable -c ~/cloud-config.yaml

2-5. CoreOSのISOイメージをアンマウントして再起動

$ vagrnat halt
$ conoha-iso eject
$ vagrant up

2-6. Vagrantfileの書き換え(ssh用のユーザを変更)

Vagrantfileの

config.ssh.username = 'root'

config.ssh.username = 'core'

に変更。

これで

$ vagrant ssh

できるようになる。

3. インスタンスのイメージ保存・削除・復元

3-1. インスタンスのイメージ保存 ※GUI

ここもConohaのWEBコンソールから操作します

手動でイメージ保存。(https://www.conoha.jp/guide/saveimages.php)

名前は CoreOS にしました。

3-2. インスタンスの削除

$ vagrant destroy

3-3. インスタンスの復元

インスタンスのイメージから起動できるようにVagrantfileを作成

Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box       = 'conoha'
#  config.ssh.username = 'root'
  config.ssh.username = 'core'
  config.ssh.pty      = true

  # disable rsync
  config.vm.synced_folder ".", "/vagrant", disabled: true

  config.vm.provider :conoha do |conoha|
    conoha.openstack_auth_url = 'https://identity.tyo1.conoha.io/v2.0'

    conoha.username           = ENV["OS_USERNAME"]
    conoha.password           = ENV["OS_PASSWORD"]
    conoha.tenant_name        = ENV["OS_TENANT_NAME"]

    conoha.flavor             = 'g-1gb'
#    conoha.image              = 'vmi-ubuntu-14.04-amd64'
    conoha.image              = 'CoreOS'
    conoha.region             = ENV["OS_REGION"]
#    conoha.admin_pass         = ENV["OS_ADMIN_PASSWORD"]
    conoha.metadata           = {
      instance_name_tag: "vagrant_conoha"
    }
    conoha.security_groups    = [
      "default",
      "gncs-ipv4-all"
    ]
  end
end

※保存したイメージから起動するため、conoha.image = 'CoreOS'にしています。

起動

$ vagrant up

インスタンスが生成されました。

以上。

参考URL

ConohaにCoreOSをセットアップ

ConohaをVagrantから操作する

その他


脚注