LoginSignup
26
29

More than 3 years have passed since last update.

Ansible開発環境はこれで決まり! for VSCode

Last updated at Posted at 2019-05-12

概要

タイトルでうすうす感じた方がいるのではないのかと思いますw
そうです!先日発表され話題になったVSCode拡張機能「Remote Development」を用いてもっともスマートなAnsible開発環境の構築方法を紹介したいと思います

手順

以下の手順はDocker+VSCode構成になっています
Dockerを用いる理由としては環境を汚さないのと、複数環境(バージョン違い、プロジェクト違い)の同居が容易

  1. Dockerをインストールし、起動する
    共有ドライブを有効にすること!(Windowsの場合は必ずCドライブも追加、ソースを保管しているドライブが異なる場合はそのドライブを選択しください)
  2. VSCode Insidersをインストール
    該当の拡張機能はまだプレビュー版のため、VSCodeのInsiders版を導入する必要があります
    ちょっとだけ試してみたい方はZip版がおすすめ
    最新のVSCode(v1.35~)で利用できるようになったので、Insiders版は不要になりました!
  3. こちらのサンプルソースをローカルにクローン
  4. VSCodeを起動し、拡張機能「Remote Development」をインストールする
  5. .devcontainer/requirements.txtにansible実行時に必要なpythonライブラリを追加することで、コンテナイメージをビルドする際に取り込まれます
  6. 「Remote-Containers: Open Folder in Container...」で前述のサンプルソースの「.devcontainer」フォルダがあるディレクトリを選択
    vscode-remote-open-folder.png

  7. コンテナイメージの自動ビルド、コンテナの自動起動、拡張機能の自動インストールが行われる

  8. ファイルツリーが表示されたら準備完了なので、ターミナルを「bash」に切り替えて、サンプルplaybookを実行します
    vscode-remote-open-terminal.png

    > ansible-playbook -i localhost, -c local playbook.yml
    
  9. enjoy ansible!

※既存のdocker-compose.ymlを上記のRemote Container化する場合は、docker-compose.ymlにtty: trueを追加しましょう!

環境の再構築

.devcontainer配下の定義を変更したら以下のように環境を再構築

vscode-remote-rebuild-container.png

説明

Docker

.devcontainerフォルダ配下のDockerfileとdevcontainer.jsonによってコンテナの作成と実行が定義されている
Dockerfileも既存のまま利用できるので使わない手はないと思います
コンテナの起動後にvscode-server-linuxがコンテナ内に導入され、このようなリモート接続が実現されているようです
vscode-remote-vscode-server.png

拡張機能

devcontainer.jsonのextensionsで定義されている拡張機能は作成されたコンテナ内にのみ導入されているので、環境に応じて必要最低限の拡張機能で済む
vscode-remote-installed-extensions.png
また、拡張機能の導入も含めてコードで管理できるので、手順書の量も減らせられる
ちなみにextensionsの名前は拡張機能の以下の箇所で調べることができる(一部導入できないものもある)
vscode-remote-extension-name.png

リファレンス

まとめ

「Remote Development」で何が変わるのかを一言でいうとより環境を意識する必要がなくなったと思います
今まではDocker+Ansible構成でansibleが使えるまでにdockerコマンドが度々登場していたが、
上記の手順のようにdockerコマンドは一切出てこない。つまり今までDockerで開発環境を作ったのはいいが、Dockerを知らない人からするとよくわからないから敬遠されがちだった
このようにタダのリモート環境として扱えることで抵抗が減るのではないかと思います。もちろん利便性も向上するので、Dockerに慣れている人もどんどん使っていくべきだと思いました

ちょっとしたトピック

settings.jsonに以下のように追加するとコンテナのリソース量が表示されるようになります
公式ドキュメント

settings.json
"remote.containers.defaultExtensions": [
    "mutantdino.resourcemonitor"
]

参考

26
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
29