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

2020-12-09-00-03-40.png

2020-12-09-00-05-23.png

注意点としては、Windows上のGitでcloneしたディレクトリー上で、Linuxのシェルを起動していることになりますので、シェルスクリプト等の改行コードに整合性がとれるようにする必要があります。この例を実行している環境では、.gitattributesでcloneしている環境に関わりなく、テキストファイルの改行コードはLFとなるよう設定しています。

* eol=lf

以上、Windowsの環境でWSLを用いて、Ansible Vaultを編集する環境としてLinuxのシェルを使用する方法を紹介しました。この方法は、Azure Kubernetes ServiceのCLIや.gitignoreファイルを生成するツールであるgibo など、シェルがUnix系の環境であることを暗黙の前提としているツール等を使うにあたって、macOSとWindowsのユーザー間でコマンド操作のインターフェースを統一するのに有効な手法です。