概要
タイトルでうすうす感じた方がいるのではないのかと思いますw
そうです!先日発表され話題になったVSCode拡張機能「Remote Development」を用いてもっともスマートなAnsible開発環境の構築方法を紹介したいと思います
手順
以下の手順はDocker+VSCode構成になっています
Dockerを用いる理由としては環境を汚さないのと、複数環境(バージョン違い、プロジェクト違い)の同居が容易
-
Dockerをインストールし、起動する
共有ドライブを有効にすること!(Windowsの場合は必ずCドライブも追加、ソースを保管しているドライブが異なる場合はそのドライブを選択しください) -
VSCode Insidersをインストール
該当の拡張機能はまだプレビュー版のため、VSCodeのInsiders版を導入する必要があります
ちょっとだけ試してみたい方はZip版がおすすめ
最新のVSCode(v1.35~)で利用できるようになったので、Insiders版は不要になりました! -
こちらのサンプルソースをローカルにクローン
-
VSCodeを起動し、拡張機能「Remote Development」をインストールする
-
.devcontainer/requirements.txt
にansible実行時に必要なpythonライブラリを追加することで、コンテナイメージをビルドする際に取り込まれます -
「Remote-Containers: Open Folder in Container...」で前述のサンプルソースの「.devcontainer」フォルダがあるディレクトリを選択
-
コンテナイメージの自動ビルド、コンテナの自動起動、拡張機能の自動インストールが行われる
-
ファイルツリーが表示されたら準備完了なので、ターミナルを「bash」に切り替えて、サンプルplaybookを実行します
> ansible-playbook -i localhost, -c local playbook.yml
-
enjoy ansible!
※既存のdocker-compose.ymlを上記のRemote Container化する場合は、docker-compose.ymlにtty: true
を追加しましょう!
環境の再構築
.devcontainer配下の定義を変更したら以下のように環境を再構築
説明
Docker
.devcontainerフォルダ配下のDockerfileとdevcontainer.jsonによってコンテナの作成と実行が定義されている
Dockerfileも既存のまま利用できるので使わない手はないと思います
コンテナの起動後にvscode-server-linux
がコンテナ内に導入され、このようなリモート接続が実現されているようです
拡張機能
devcontainer.jsonのextensionsで定義されている拡張機能は作成されたコンテナ内にのみ導入されているので、環境に応じて必要最低限の拡張機能で済む
また、拡張機能の導入も含めてコードで管理できるので、手順書の量も減らせられる
ちなみにextensionsの名前は拡張機能の以下の箇所で調べることができる(一部導入できないものもある)
リファレンス
まとめ
「Remote Development」で何が変わるのかを一言でいうとより環境を意識する必要がなくなったと思います
今まではDocker+Ansible構成でansibleが使えるまでにdockerコマンドが度々登場していたが、
上記の手順のようにdockerコマンドは一切出てこない。つまり今までDockerで開発環境を作ったのはいいが、Dockerを知らない人からするとよくわからないから敬遠されがちだった
このようにタダのリモート環境として扱えることで抵抗が減るのではないかと思います。もちろん利便性も向上するので、Dockerに慣れている人もどんどん使っていくべきだと思いました
ちょっとしたトピック
settings.jsonに以下のように追加するとコンテナのリソース量が表示されるようになります
公式ドキュメント
"remote.containers.defaultExtensions": [
"mutantdino.resourcemonitor"
]