【設定爆速】VS CodeのRemote Developmentを使ってSSH接続したEC2上のファイルを編集する

212件のシェア(すこし話題の記事)

先日、MicrosoftよりRemote Development with VS Codeという衝撃的なアップデートが発表されました。

Remote Development with Visual Studio Code

従来のVS Codeの機能を拡張機能含めてリモートマシン(コンテナやWSLも含む)上で実行してしまう、革命的な機能です。ちょっとやってみましたが、接続設定もむっちゃ簡単でした。

2019年5月現在、Visual Studio Code Insidersという特別版でのみ利用できる機能ですが、まずは実際にさわってみて、その設定の簡単さとリモートマシンでVS Codeが使えることの感動を是非味わってみることをオススメします。

リモートデバッグきたか…!!

  ( ゚д゚) ガタッ
  /   ヾ
__L| / ̄ ̄ ̄/_
  \/   /

VS Code Remote Developmentとは

Visual Studio Code Remote Development

Visual Studio CodeのRemote Developmentは、コンテナやリモートマシンやWSLに対して完全な機能の開発環境を提供します。

  • より大きく特化したハードウェア環境における開発
  • ローカルマシンとは環境が完全に切り離されたSandboxの提供
  • アプリケーションが稼働している顧客環境やクラウド上の環境におけるデバッグの可能化

などのメリットがあり、また、ローカルマシンに特定のソースコードは不要。Remote Developmentを使うことで、コマンドや他の拡張機能をコンテナの中や、WSLやリモートマシン上で、あたかもローカルマシンであるかのように利用することができます。

(上記公式ページより引用)

Remote Developmentの始め方(事前準備)

Remote Development - Visual Studio Marketplace

手元のローカルマシンは、macOS Mojava バージョン 10.14.4を利用。

Visual Studio Remote Developmentを始めるには、上記の拡張機能をインストールする必要があります。ただ、2019年5月30日現在、Visual Studio Code Insidersという限定バージョンでのみ利用できるため、まずはそちらをインストールします。

Visual Studio Code Insidersのインストール

Download Visual Studio Code Insiders

上記サイトより、バイナリをダウンロードしてインストールします。

Remote Development 拡張機能のインストール

インストールしたVisual Studio Code Insidersを起動し、拡張機能検索窓にremote developmentと入力し、インストール。これにより、SSHやContainerやWSLで必要となる全ての拡張機能が一括でインストールされます。

ローカルマシンに必要なコンポーネントのインストール

リモートで利用したいコンポーネントに関連するコンポーネントをローカルマシンにインストールします。

  • Remote Containers
    • Dockerのインストール
  • Remote SSH
    • SSHクライアントのインストール
  • Remote WSL
    • Windows Subsystem for Linuxのインストール

異次元に簡単なリモート環境への接続

いよいよ、リモートマシンへの接続です。

自分は普段使うSSH接続先は、~/.ssh/configに設定しています。その状態で、左側のRemote-SSHアイコンをクリックすると、configファイルに設定された接続先の一覧がこんな感じで表示されます。

または、Shift+Cmd+PでコマンドパレットからRemote-SSH: Connect to Hostを利用することでも同様に接続が可能です。

あとは、接続したいリモート先をクリックすると、別ウィンドウで接続先ユーザーのホームディレクトリが対象となった状態でVisual Studio Codeが起動します!この簡単さには恐れ入りました。

上記は、Amazon Linux2のEC2にec2-userで接続した状態です。

あとは、ファイルの編集に必要なlintやデバッグに必要な拡張機能を自由にインストールし、ローカルマシンとほぼ同じ環境で、Visual Studio Codeを使うことができます!!こんなに簡単だとは思わなかった。もちろんVisual Studio Codeのターミナル機能も利用できるので、リモートマシン上でのコマンド実行もそのままできます。

拡張機能の管理について

VS Codeの拡張機能は、UI/クライアント側とリモートSSHホストの2箇所で管理されます。テーマやスニペットなどUIに関連する拡張機能はローカルにインストールされますが、ほとんどの拡張機能はSSHリモートホスト上にインストールされます。

~/.vscode-remoteに拡張機能はインストールされているようです。このリモートウィンドウ上で、拡張機能をインストールすると、リモートホスト側に拡張機能がインストールされ、それをそのまま利用することができます。

拡張機能一覧でみると、こんな感じでSSHインストールされているものと、ローカルインストールされているものが区別して表示されます。

リモートSSH利用上の主な制約

Developing on Remote Machines using SSH and Visual Studio Code

2019年5月30日時点の主な制約は以下の通り。

  • キーベース認証を推奨
  • WindowsとMacOSのSSHホスト機能は利用できない(SSHクライアント機能はOK)
  • Linuxホスト側は/bin/bashと、curl、もしくはwgetが必要
  • PuTTYは未サポート
  • SSHホスト上のファイルをドラッグアンドドロップでローカルへコピーできない
  • SSHホスト側でインストールした拡張機能は、基本的にはローカル側にインストールされる
  • その他issueはこちらまで Issues · microsoft/vscode-remote-release

気軽にSSHリモート接続先でVS Codeを利用できる生産性の高さに注目

たとえば、運用環境におけるIaC(Infrastructure as Code)を、セキュリティや実行環境統一の観点からクラウド上の踏み台サーバーに限定するシチュエーションは多くあると思います。

  • CloudFormationをIAMロールを指定したEC2上で実行する
  • TerraformをIAMロールを指定したEC2上で実行する
  • kubernetesクラスタの管理をEC2上のkubectlで実行する

EC2上のIaCの設定ファイルを編集するとき、自分はVimなどをつかってましたが、Vimerではない自分には辛いものがありました。

今回こういったシチュエーションでも、気軽にVisualStudio Codeが利用でき、普段お世話になってるlinter系の拡張機能も即座に使えるということで、生産性が爆上げできそうで震えています。

自分は基本インフラ屋なので普段あまりアプリケーションコードを書かないんですが、アプリケーション屋の人たちはリモートでVS Codeを使ってデバッグするなど夢が無限に広がる機能なんじゃないでしょうか。

接続方法も異常に簡単なので、早く通常版に取り込まれることを期待したいですね!

それでは、今日はこのへんで。濱田(@hamako9999)でした。