はじめに
2021/03/13 に、YouTube Live で「つまずき Ansible 【Part33】VS Code で Playbook を書きやすくしたい」という配信をしました。
実際に作業しながら(ときには)エラーと戦って進めるシリーズです。
今回は、VS Code にインストールしてる拡張の紹介や、Playbook を書く際、モジュール名などのキーワードを補完しながら書くための設定をしました。
まだお試し中のやり方なので道半ばです。もっといい方法があるかもしれません。
3/8 の VS Code Meetup #10 でお話した内容の一部の補足的な内容です。
動画
- 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、リリースを紹介するコーナーです。
今回は以下を取り上げました。
リリース
- ansible 3.1.0
- Ansible 2.11.0b1
- https://github.com/ansible/ansible/blob/devel/changelogs/CHANGELOG-v2.11.rst#v2-11-0b1
A collection can be reinstalled with new version requirements without using the --force flag. The collection's dependencies will also be updated if necessary with the new requirements. Use --upgrade to force transitive dependency updates.
CLI - Specify jinja version in --version output
Filters - Add new split filter for splitting strings
Made SCM collections be reinstalled regardless of --force being present.
- https://github.com/ansible/ansible/blob/devel/changelogs/CHANGELOG-v2.11.rst#v2-11-0b1
- ansible.netcommon collection 2.0.0
PR
- Docs: Update installation page for package split by acozine · Pull Request #73790 · ansible/ansible · GitHub
- distribution: Add Amazon Linux distribution facts by Akasurde · Pull Request #73767 · ansible/ansible · GitHub
- remove custom_virtualenv support from the AWX collection and docs by ryanpetrello · Pull Request #9498 · ansible/awx · GitHub
以下、本編。
標準機能で便利なところ
インストールしてる拡張
indent-rainbow
YAML
キーワード補間するための仕組み
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ころから)
Part34にむけて
以下のネタを検討中です。気が向いたものをやります。 connpass申込時のアンケートでいただいたものも含めています。