Windows Subsystem for Linuxでpiculetとroadworkerを実行してみる
中山(順)です。
みなさん、PCは何を利用されてますか?
私はクラスメソッドのジョインするまでWindowsを利用しており、これからもWindowsを利用します。
しかし、社内のノウハウ(ツールのインストールおよび導入方法)はMacやLinuxを前提に書かれていることがほとんどです。
これでは社内のノウハウを十分に生かせない・・・
しかし、今のWindowsにはWindows Subsystem for Linux(以下、WSL)があります!(まだベータですが)
というわけで、この記事ではpiculetとroadworkerを使えるようにするまでの手順をまとめました。
Windows Subsystem for Linux(WSL)とは?
公式のドキュメント1では以下のように説明されています。
The Windows Subsystem for Linux lets developers run Linux environments -- including most command-line tools, utilities, and applications -- directly on Windows, unmodified, without the overhead of a virtual machine.
つまり、Linux上で動作する様々なツールをWindowsで動作させることができる機能です。
この記事の執筆時点ではベータ版ですが、直近の大型アップデート(Windows 10 Fall Creators Update)で正式版が提供される予定2です。
piculet, roadworkerとは?
Genki Sugawaraさんが開発したCodenize Toolsに含まれるツールです。
Codenize Toolsは、AWSのリソースなどをコード化するためのツール群で、puculetはVPCのSecurity Group、roadworkerはRoute53のHosted Zoneを管理するツールです。
全体の流れ
大きくは以下の手順でインストールを行います。
- WSLの有効化
- 前提条件の確認
- ツールのインストール
1. WSLの有効化
弊社福田の記事3をご確認ください。
ちなみに、この記事を書いている時点のビルド(15063.632)では、Ubuntu 16.04に相当する環境を利用することが可能です。
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.3 LTS Release: 16.04 Codename: xenial
将来的には他のディストリビューション(OpenSUSE, SLES)も利用できるようになるとのことです。4
2. 前提条件の確認
初期状態のWSLでは、rubyおよび開発ツールが含まれていません。
インストール済みのパッケージは、以下のコマンドで確認できます。
dpkg -l
ruby, build-essential
ruby5および開発ツールをインストールします。
sudo apt-get install ruby ruby-dev
sudo apt-get install build-essential
zlib1g-dev
piculetをインストールするため、以下のパッケージを追加します。
(ruby, build-essentialのみだと、エラーが発生しました)
sudo apt-get install zlib1g-dev
libpcap-dev
roadworkerをインストールするため、以下のパッケージを追加します。
(ruby, build-essentialのみだと、エラーが発生しました)
sudo apt-get install libpcap-dev
3. ツールのインストール
ツール自体のインストール方法は、gemを実行するだけです。
詳細は各ツールのreadmeをご確認ください。
piculet6
sudo gem install piculet --no-ri --no-rdoc
roadworker7
sudo gem install roadworker --no-rdoc --no-ri
動作確認
piculetで動作を確認してみます。
認証情報、リージョンの指定
認証情報およびリージョンを環境変数に格納します。
(AWS CLIなどで~/.aws
配下に認証情報やリージョンを設定済みの場合、-p
オプションでプロファイル名を指定することも可能です。)
$ export AWS_ACCESS_KEY_ID='...' $ export AWS_SECRET_ACCESS_KEY='...' $ export AWS_REGION='ap-northeast-1'
設定のエクスポート、設定の修正
現在の設定をエクスポートし、変更を加えます。
以下のようにviなどでも問題ありませんが、お好みのエディタ(Visual Studio Codeなど)で編集していただいても大丈夫です。
(Linux側の環境からWindowsファイルシステムを操作することが可能です)
ファイルシステムに関する内容やシンボリックリンクの作成などに関することは、公式ドキュメントのFAQ8をご確認ください。
$ piculet -e -o Groupfile Export SecurityGroup to `Groupfile`
$ vi Groupfile # -*- mode: ruby -*- # vi: set ft=ruby : ec2 "vpc-xxxxxxxx" do security_group "default" do description "default VPC security group" ingress do permission :any do groups( "default" ) end end egress do permission :any do ip_ranges( "0.0.0.0/0" ) end end end end
動作確認(dry-run)
dry-runで実行内容を確認します。
(デフォルトのセキュリティグループと同じルールのセキュリティーグループを追加した結果です。)
$ piculet -a --dry-run Apply `Groupfile` to SecurityGroup (dry-run) Create SecurityGroup: vpc-xxxxxxxx > test (dry-run) Create Permission: vpc-xxxxxxxx > test(ingress) > any (dry-run) authorize test (dry-run) No change
適用
dry-runの結果に問題なければ、適用します。
$ piculet -a Apply `Groupfile` to SecurityGroup Create SecurityGroup: vpc-xxxxxxxx > test Create Permission: vpc-xxxxxxxx > test(ingress) > any authorize test
省略しますが、roadworkerも同じ要領で動作することを確認しました。
まとめ
この投稿がジョインして初めての技術的な内容の投稿です。
初歩的な内容ですが、いかがでしたでしょうか。
このように、WSLでもLinux上で動くツールを利用することができました。
今回使った範囲では、ファイルの作成先を意識する(Windowsファイルシステムを操作する場合)以外は普通のUbuntuを扱うのと差はないように感じました。
動作も非常に軽く、ストレスを感じることはありませんでした。
実際にはGUIのアプリケーションが利用できないなどの制限事項9はいろいろあるのですが、地道に慣れていこうと思います。
これからも社内のノウハウを使いまくって楽をしていこうと思います。
- Windows Subsystem for Linux Documentation ↩
- Windows Subsystem for Linux out of Beta! ↩
- Windows 10 Anniversary Updateで導入されたbashでAWS CLIを実行してみる ↩
- For Windows Insiders: Install Linux distribution of choice ↩
- Rubyのインストール ↩
- codenize-tools/piculet ↩
- codenize-tools/roadworker ↩
- How do I use a Windows file with a Linux app? ↩
- Can I run ALL Linux apps in WSL? ↩