初心者
Docker
Ansible
VSCode

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


概要

タイトルでうすうす感じた方がいるのではないのかと思いますw

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


手順

以下の手順はDocker+VSCode構成になっています

Dockerを用いる理由としては環境を汚さないのと、複数環境(パージョン違い、プロジェクト違い)の同居が容易


  1. Dockerをインストールし、起動する

    共有ドライブを有効にすること!(Windowsの場合は必ずCドライブも追加


  2. VSCode Insidersをインストール

    該当の拡張機能はまだプレビュー版のため、VSCodeのInsiders版を導入する必要があります

    ちょっとだけ試してみたい方はZip版がおすすめ


  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!



環境の再構築

.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に慣れている人もどんどん使っていくべきだと思いました


参考