てくなべ (tekunabe)

ansible / network / automation / 学習の記録

[Ansible] 「つまずき Ansible 【Part33】VS Code で Playbook を書きやすくしたい」ふりかえり

はじめに

2021/03/13 に、YouTube Live で「つまずき Ansible 【Part33】VS Code で Playbook を書きやすくしたい」という配信をしました。

実際に作業しながら(ときには)エラーと戦って進めるシリーズです。

tekunabe.connpass.com

今回は、VS Code にインストールしてる拡張の紹介や、Playbook を書く際、モジュール名などのキーワードを補完しながら書くための設定をしました。

まだお試し中のやり方なので道半ばです。もっといい方法があるかもしれません。

3/8 の VS Code Meetup #10 でお話した内容の一部の補足的な内容です。


動画

youtu.be

  • 0:00 イントロダクション
  • 1:36 気になり Ansible
  • 7:18 標準機能で便利な点
  • 8:55 拡張 indent-rainbow
  • 9:39 拡張 YAML
  • 12:19 拡張 YAML + Ansible 向け JSON Schema
  • 23:17 キーワード補完のデモ
  • 29:45 おわりに

(冒頭のおまけコーナー) 気になり Ansible 👀

ここ一週間くらいで気になった issue や PR、リリースを紹介するコーナーです。

今回は以下を取り上げました。

リリース

PR


以下、本編。

標準機能で便利なところ

https://image.slidesharecdn.com/202012vscodeansible-201218094047/95/ansible-7-638.jpg

インストールしてる拡張

indent-rainbow

marketplace.visualstudio.com

https://image.slidesharecdn.com/202012vscodeansible-201218094047/95/ansible-9-638.jpg

YAML

marketplace.visualstudio.com

https://image.slidesharecdn.com/202012vscodeansible-201218094047/95/ansible-10-638.jpg

キーワード補間するための仕組み

YAML という拡張と、JSON Schema Store にある Ansible 関連の Schema を組み合わせます。

Schema の設定 その1 (https版)

./vscode/setting.json に以下の設定を追加します。

{
    // 略
    "yaml.schemas": {
        "https://json.schemastore.org/ansible-playbook": ["*.yml"],
    },
}

Schema の設定 その2 (ローカル配置)

(このあたりが、もっと良い方法があればなぁとおもっているところです)

ダウンロード

先程の方法では、Schema ファイルのサイズが大きすぎて、動作がもっさりします。

対策として予め以下の Schema を JSON Schema Sote からダウンロードします。

  • Ansible Playbook (ここではファイル名 ansible-playbook.json として保存)
  • Ansible Role (ここではファイル名 ansible-role-2.9.json として保存)

ここでは、2ファイルとも /home/admin/schemas/ 配下に保存します。あとの指定とあっていれば場所は任意です。

参照先の修正

ダウンロードした。ansible-playbook.json は、参照先の Schema として

              "$ref": "https://json.schemastore.org/ansible-role-2.9"

のような指定が何箇所かあります。

これらをすべて、セットでダウンロードした ansible-role-2.9.json に向くように、以下のように修正します。

              "$ref": "./ansible-role-2.9.json"

./vscode/setting.json の修正

前述の「Schema の設定 その1 (https版)」でいれた設定の代わりに、以下の設定をします。

{
    // 略
    "yaml.schemas": {
        "/home/admin/schemas/ansible-playbook.json": ["*.yml"],
    },
}

また、配信時に紹介しきれませんでしたが、以下の設定もいれています。デフォルトは 5000 です。

    "json.maxItemsComputed": 300000,

計算されたアウトライン記号と折りたたまれた領域の最大数 (パフォーマンス上の理由から制限されています)。 というものです。変更せずに試した時にエラーが表示されて、少々乱暴ですがこの設定変更に至りました。

おためし

デモ (23:17​ころから)

www.youtube.com


Part34にむけて

以下のネタを検討中です。気が向いたものをやります。 connpass申込時のアンケートでいただいたものも含めています。

  • connection: local ななにか
  • Windows
  • cli_parse モジュール(Part15 の続き)
  • Ansible 2.10 関連
  • Ansible 3.0.0 関連
  • モジュールのテスト
  • Tower / AWX
  • role と Playbook のリポジトリ分割と読み込み
  • AWXとの共存を念頭に入れたDirectory構成