LoginSignup
2
0

More than 3 years have passed since last update.

Nervesのnode_nameとnode_hostとcookieを設定した

Posted at

そろそろNerves同士を接続したくなってきたので接続に必要なnode_namenode_hostcookieを設定しました。

これは「NervesのSSH環境を整えた 〜upload.shを使ってファームウェア更新も〜」の続編になります。

環境

ハードウェア

  • Mac OSX
  • NervesをRaspberryPi 3で稼働

ネットワーク

  • Mac OSX

    • 有線LAN→メンテナンス用、固定IPアドレス(192.168.88.1/24)
  • ラズパイ

    • 有線LAN(eth0)→メンテナンス用、固定IPアドレス(192.168.88.2/24)
    • 無線LAN(wlan0)→インターネット接続用、DHCP(192.168.0.10-100/24から自動割当)

ゴール(こうしたい)

Nervesを起動してログインした際、node_namenode_hostcookieが設定されている状態にしたい。

bash
$ ssh 192.168.88.2

iex
iex(nishiuchikazuma@192.168.0.11)> Node.self()
:"nishiuchikazuma@192.168.0.11"

iex(nishiuchikazuma@192.168.0.11)> Node.get_cookie()
:comecomeeverybody

前提

前提としてネットワークの設定ができていることとします。ネットワークの設定は「Nervesのネットワーク環境を整えた」を参考にしてください。

やったこと

config/target.exsconfig :nerves_init_gadgetnode_namenode_hostの設定をします。

config/target.exs
(変更前)
config :nerves_init_gadget,
  ifname: "usb0",
  address_method: :dhcpd,
  mdns_domain: "nerves.local"
  node_name: node_name,
  node_host: :mdns_domain



(変更後)
config :nerves_init_gadget,
  ifname: "wlan0",
  address_method: :dhcp,
  node_name: "nishiuchikazuma",
  node_host: :ip

cookieの設定はmix.exsdef releaseに設定します。cookienode_namenode_hostが設定されていないと有効にならないようです。無効の場合は:nocookieとなります。

デフォルトの設定だとcookie: "#{@app}_cookie"となっているのでmix.exsの上の方に設定されている@app(プロジェクト名)が展開されてプロジェクト名_cookieとなります。

mix.exs
  def release do
    [
      overwrite: true,
      cookie: "comecomeeverybody",    ←ここに設定を記載
      include_erts: &Nerves.Release.erts/0,
      steps: [&Nerves.Release.init/1, :assemble],
      strip_beams: Mix.env() == :prod
    ]
  end

ファームウェアをアップロードします。

bash
$ mix deps.get
$ mix firmware
$ ./upload.sh 192.168.88.2

確認します。

bash
$ ssh 192.168.88.2

iex
iex(nishiuchikazuma@192.168.0.11)> Node.self()
:"nishiuchikazuma@192.168.0.11"

iex(nishiuchikazuma@192.168.0.11)> Node.get_cookie()
:comecomeeverybody

まとめ

config/target.exsnode_namenode_hostを、mix.exscookieの設定をすることでNerves起動時にnode_namenode_hostcookieを設定することができました。

おまけ

NervesのIPアドレスとインタフェースを確認するコマンドは以下でifconfigがオススメ。

iex
iex> ifconfig
or
iex> Nerves.NetworkInterface.interfaces()
iex> Nerves.NetworkInterface.settings("eth0")
iex> Nerves.NetworkInterface.settings("wlan0")
or
iex> Nerves.NetworkInterface.interfaces() |> Enum.map(& Nerves.NetworkInterface.settings(&1))

参考URL

nerves-project/nerves_init_gadget - Configuration

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0