はじめに
普段AnsibleのPlaybookを作成する際は、VSCodeを使用しています。
備忘録も兼ねて現在使用しているVSCode等の環境設定についてまとめます。
WSLの導入
まず、AnsibleのLinterとして有名どころでAnsible Lintが存在します。
こちらを活用することで、PlaybookやRoleがルールに従ってコーディングできているかをチェックできます。
.....が、Ansible LintはWindowsに対応していません。
自分は最初知らずにWindows環境で使おうとしたのですが、インストールはできるものの正常に動きませんでした。
そこで、Windows上でLinuxを動かせる、Windows Subsystem for Linux (WSL) を導入します。
Windowsのバージョンに問題なければ、PowerShellを管理者で開き、以下を実行して再起動するだけです。
自分はディストリビューションにはUbuntu(default)を使用しています。
wsl --install -d <DistroName>
インストールが完了したら、パッケージの最新化をしておきます。
sudo apt update && sudo apt upgrade
Ansible Lintの導入
それでは、WSLに対してAnsible Lintをインストールしていきます。
Ansible LintはPyPIからインストールを行うため、事前にpython3-pipをインストールしておきます。
sudo apt install python3-pip
pip -V
その後、Ansible Lintをインストールします。
単体でもインストールできますが、Ansible Development Tools (ADT)としてパッケージをインストールするのが推奨となります。
pip3 install ansible-dev-tools
ansible-lint --version
これで、Windows PCでもAnsible Lintを使用できるようになりました。
VSCode上での設定
VSCode上でWSLを使用して効率的に開発をするための設定を実施していきます。
続いて、WSL上で以下のコマンドを実行します。
これにより、VS Code Server for Linuxがインストールされ、VSCodeとWSLが連携されるようになります。
code .
VSCodeに戻り、今度は拡張機能「Ansible」をインストールします。
WSL側にインストールしますので、VSCodeがWSLに接続されていない場合は接続します。
下図の場合はローカル接続の状態ですので、次の操作をしましょう。

WSLとの接続に問題なければ、拡張機能「Ansible」をインストールしていきます。
インストール後は拡張機能はWSL: xxxで有効ですの表示がされるはずです。

インストールが完了したら設定を変更していきます。
歯車から設定をクリックし、設定の画面を開きます。

リモート[WSL: xxx]タブを選択し、「Ansible: Path」にWSL上でのAnsibleのPathを記載します。

同様に「Python: Interpreter Path」にもPythonのPathを入れます。

Lightspeedは使用しないため、チェックを外します。
※こちらはAIを活用した開発支援ツールです。私はGitHub Copilotを使用しているためこちらは無効化しています。

これで、設定は完了です。
あとはVSCodeでPlkaybookの開発を行うだけです。
Ansible Lintのルールに則って、エラーや警告を出してくれるようになります。
※下図はモジュール名をFQCNで指定しましょう…といったエラーです。

コンテナでの開発
これまでの設定を実施すれば、VSCode上でAnsible Lintを使用した開発が可能となります。
ただ、以前先輩に教えていただいたコンテナ上での開発が便利だったので、現在はコンテナ上に開発環境を作成しています。
開発環境をコンテナ化することで、主に以下のメリットを感じています。
- 開発環境の再現が簡単にできる
- パッケージはそれぞれのコンテナで独立しているため、競合が起こらない
- ローカル環境のパッケージ導入が不要で、不必要にパッケージを導入しなくて済む
VSCodeで簡単にコンテナ環境を準備するには、拡張機能「Dev Containers」を使用します。
ローカル環境の方でインストールを実施しましょう。

インストール完了後、リモートウィンドウから「新しい開発コンテナー…」をクリックすると、WSLにDockerをインストールするか聞かれます。
未インストールの場合は、「インストール」を選択し、Dockerのインストールを行います。
Dockerのインストールができたら「新しい開発コンテナー…」からコンテナを作成していきます。

後からでも設定できますが、構成テンプレートはPython 3を選択します。

その後、任意のコンテナ名を入力して、Dev Containerの作成を行います。

すると、コンテナが作成され、.devcontainer/devcontainer.jsonに設定ファイルが作成されます。
こちらを書き換えて開発コンテナをカスタマイズできます。
今回は以下のようにdevcontainer.jsonを書き換えましょう。
{
"name": "Ansible Container",
"image": "mcr.microsoft.com/devcontainers/python:2-3.13-trixie",
"postCreateCommand": "pip3 install ansible-dev-tools",
"customizations": {
"vscode": {
"extensions": [
"redhat.ansible",
"yzhang.markdown-all-in-one",
"DavidAnson.vscode-markdownlint"
],
"settings": {
"yaml.customTags": [
"!vault"
],
"ansible.ansible.path": "/home/vscode/.local/bin/ansible",
"ansible.validation.enabled": true,
"ansible.validation.lint.enabled": true,
"ansible.validation.lint.arguments": "--fix",
"ansible.validation.lint.path": "/home/vscode/.local/bin/ansible-lint",
"ansible.ansibleNavigator.path": "/home/vscode/.local/bin/ansible-navigator",
"ansible.lightspeed.enabled": false,
"ansible.python.interpreterPath": "/usr/local/bin/python3",
"files.associations": {
"*.yml": "ansible"
},
"[ansible]": {
"editor.defaultFormatter": "redhat.ansible"
},
"markdownlint.config": {
"MD032": false
},
"[markdown]": {
"editor.unicodeHighlight.ambiguousCharacters": false,
"editor.unicodeHighlight.invisibleCharacters": false,
"diffEditor.ignoreTrimWhitespace": false,
"editor.wordWrap": "on",
"editor.quickSuggestions": {
"comments": "off",
"strings": "off",
"other": "off"
}
}
}
}
}
}
}
その後、リモートウィンドウから「コンテナーのリビルド」を実施します。
リビルド完了後、コンテナ上でのPlaybook開発を開始できるようになります。

まとめ
今回は自分がPlaybook作成時に使用しているVSCodeの設定をまとめました。
後々ansible-builderを使うことを考えると、WSLでvenvを利用して開発環境を整える方がよい気もしますね。
次はMacを買おうか悩み中です…




