この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
今回は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で使い捨て可能な環境ができました。今からハンズオンが楽しみです。