0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCodeのAnsible拡張が、追加した roles_path を認識しないときの対処法

0
Last updated at Posted at 2026-03-11

忙しい人向け

.vscode/settings.json にディレクトリを指定します。

{
  "files.associations": {
    "**/roles_common/**/*.{yml,yaml}": "ansible"
  }
}

ansible.cfgへの roles_path の設定や、.ansible-linterANSIBLE_ROLES_PATH を指定してもダメなので気を付けてください。

roles_path を追加する

ansibleでRoleは書いてるとだんだん増えてきがちで、<ProjectRoot>/roles ディレクトリに横並びにするとだんだん管理が大変になってきます。

こんな時のために ansible.cfg には、roles_path を指定することでデフォルトの roles/ ディレクトリ以外もRoleのディレクトリとして認識させる機能があります。

ansible.cfg
[defaults]
roles_path = roles:roles_common:roles_specific

通常コマンドラインから ansible-lint --fix を行う場合は、 ansible.cfgroles_path を認識してくれるため、特に何もしなくても追加したパスもちゃんと走ります。

Ansible拡張が roles_path を読まない?

VSCodeにはAnsible公式の拡張機能があります。

補完等に加えて、 ansible-lint を使ったフォーマットも可能です。特に ansible.validation.lint.autoFixOnSave を true にしておけば、セーブ時に自動でLinterが走るのでうれしいです。

ただしAnsible拡張は ansible.cfg をプロジェクトルートに置いていても、 roles_path で追加したディレクトリを認識してくれません。

これは拡張機能の挙動によるもので、

  1. Ansible対象ファイルでフォーマットを走らせる
  2. 拡張機能が ansible-lint を呼び出す
  3. ansible-lintansible.cfg を読む

という順番で動くことが原因です。特に設定せず追加したディレクトリでフォーマットを走らせても、VSCodeの Output -> Ansible Support には何も表示されません。

要は、拡張機能が直接 ansible.cfg を読み込む事はしていなさそうです。

解決法

解決法としては、.vscode/settings.json にディレクトリ内のファイルは ansible として認識させればOKです。

.vscode/settings.json
{
  "files.associations": {
    "**/roles_common/**/*.{yml,yaml}": "ansible"
  }
}

正しく認識していれば、エディタの下がこんな感じの表記になります。

image.png

「わざわざこんな記事書かなくてもそうでしょ?」と思うかもしれません。私が引っかかったのはココです。

files.associations を設定していないときの表記がこれです。

image.png

Ansible Tasks Schema です。認識してるじゃん。

ですがこれは罠で、 YAML/Ansible Tasks Schema では ansible-linterは走りません。でも中途半端な補完は出ます(word suggestionがoffの環境で出てます)。なんで?

image.png

まとめ

大したことはないのですが、わかりづらい表記に引っかかってしまいました。同じような人がこれ以上増えないことを願い、記事にしました😢

普段はJetbrains使いなのですが、そっちは残念ながらWSL環境の OpenTofu を読まなかったり、Ansibleのいい感じのプラグインが無かったりするので、IaCのプロジェクトで普段使わないVSCodeに来たんですが、こっちでも問題にぶつかってしまいました、うーんつらい。

追記

  • マルチルートワークスペースの対処法については、分量がが長くなったため別記事に分離しました。こちらも合わせてご覧ください :)

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?