WSLを使ってWindows上でAnsible Vaultで暗号化したリソースを編集する
本記事は グロースエクスパートナーズ アドベントカレンダー9日目の記事です。
Ansibleを使った仮想マシンのプロビジョニングにおいて、設定ファイル中に 秘匿したい情報を記述する必要がある場合に、ファイルの内容を暗号化して格納するのが Ansible Vault です。
しかし、Ansible Vaultは環境変数EDITORでデフォルトのエディターが指定されている環境、即ち Unix系の環境を暗黙の前提としており、結果としてAnsibleを使用するインフラ構築の案件では、 エンジニアの作業環境をmacOSなどに限定せざるを得ない場合がありました。
このような場合に、Windows10ではWindows Subsystems for Linux(WSL)を用いて、Ansible Vaultを編集する環境としてLinuxのシェルを使用できます。
AnsibleのGitレポジトリーを複製していているディレクトリーに移動し、ubuntu runコマンドでWSLのUbuntuのディストリビューションを起動します。続いてAnsible Vaultで暗号化されているファイルを指定してansible-vault editコマンドを実行すると、Vaultのパスワードを入力するプロンプトが表示されるので、パスワードを入力するとデフォルトのエディター(この場合はvim)が起動します。
cd (AnsibleのGitレポジトリーを複製していているディレクトリー)
ubuntu run
ansible-vault edit provision/roles/server/jira/custom/tasks/template/dev/crowd.properties
注意点としては、Windows上のGitでcloneしたディレクトリー上で、Linuxのシェルを起動していることになりますので、シェルスクリプト等の改行コードに整合性がとれるようにする必要があります。この例を実行している環境では、.gitattributesでcloneしている環境に関わりなく、テキストファイルの改行コードはLFとなるよう設定しています。
* eol=lf
以上、Windowsの環境でWSLを用いて、Ansible Vaultを編集する環境としてLinuxのシェルを使用する方法を紹介しました。この方法は、Azure Kubernetes ServiceのCLIや.gitignoreファイルを生成するツールであるgibo など、シェルがUnix系の環境であることを暗黙の前提としているツール等を使うにあたって、macOSとWindowsのユーザー間でコマンド操作のインターフェースを統一するのに有効な手法です。