IoT開発フレームワーク『Nerves』のハンズオン環境をAnsibleで構築してみた
はじめに
今回は10/5に開催されるElixir製IoT開発フレームワーク『Nerves』のハンズオンの開発環境を構築してみました。
イベントの詳細などはこちら→ Nerves Training at Sapporo
やったこと
イベントページでも紹介されているElixirでIoT#4.1:Nerves開発環境の準備のセットアップ内容を下記のAnsibleでやってみました。
サーバーのように複数環境を繰り返しプロビジョニングする訳ではないのですが、VMを削除したり、環境をリセットできると楽だなと思ってAnsibleの素振りも兼ねて挑戦してみた次第です。
動作環境
環境は手元のMacBook(macOS 10.14.6)にVagrant + Virtualboxで構築しました。
- Vagrant 2.2.5
- Virtualbox 6.0.12
playbook
基本的には必要なパッケージを淡々とインストールしていきますが、いくつかポイントがあります。
- 環境構築後にvagrantユーザーで使う関係で、aptパッケージのインストール以外はvagrantユーザーで行います。
- 最後のasdfによるビルドではVMに4GB以上のメモリが必要でした(後述)
- このスクリプトではヘッドレス環境しかセットアップできないのでお好みでデスクトップ環境をインストールします
--- - hosts: all remote_user: vagrant tasks: - name: install packages become: true apt: name: - build-essential - automake - autoconf - git - squashfs-tools - ssh-askpass - libssl-dev - libncurses5-dev - bc - m4 - unzip - cmake - python - picocom - libwxgtk3.0-dev - libgl1-mesa-dev - libglu1-mesa-dev - libglfw3 - libglfw3-dev - libglew2.0 - libglew-dev - fop - xsltproc - libxml2-utils - curl update_cache: yes - name: download fwup get_url: url: https://github.com/fhunleth/fwup/releases/download/v1.3.1/fwup_1.3.1_amd64.deb dest: ./fwup_1.3.1_amd64.deb force: true - name: install fwup apt: deb: ./fwup_1.3.1_amd64.deb - name: git clone asdf git: repo: https://github.com/asdf-vm/asdf.git dest: /home/vagrant/.asdf depth: 1 version: v0.7.1 - name: set env vars lineinfile: dest: /home/vagrant/.bashrc state: present line: "{{ item.line }}" with_items: - line: . $HOME/.asdf/completions/asdf.bash regexp: '^ \. \$HOME/\.asdf/completions/asdf\.bash' - line: . $HOME/.asdf/asdf.sh regexp: '^ \. \$HOME/\.asdf/asdf\.sh' - name: install elixir script: ./install_elixir.sh
最後に実行しているinstall_elixir.sh
は下記のファイルです。
このスクリプトではErlangやElixirのビルドを行うので4GB以上のメモリが必要でした。
#!/bin/bash source ~/.bashrc ASDF_BIN=~/.asdf/bin/asdf $ASDF_BIN plugin-add erlang $ASDF_BIN plugin-add elixir $ASDF_BIN install erlang 22.0.7 $ASDF_BIN install elixir 1.9.1-otp-22 $ASDF_BIN global erlang 22.0.7 $ASDF_BIN global elixir 1.9.1-otp-22
まとめ
Ansibleで使い捨て可能な環境ができました。今からハンズオンが楽しみです。