layereight.pimatic
ansible-pimatic 
Ansibleの役割で、pimatic - Raspberry Pi用のスマートホーム自動化ソフトウェアをインストールし、設定します。
要件
- Raspbian OSがインストールされたRaspberry Pi
- Raspberry Piへのネットワークアクセスとsshdが有効
- sudo権限を持つユーザー
Ansible Galaxyを使って役割をインストール
一般的なコマンド:
$ ansible-galaxy install layereight.pimatic
特定のバージョンを他の役割と一緒に役割ファイルを使用してインストールする場合:
$ ansible-galaxy install -r roles.yml
roles.yml
- name: layereight.pimatic
src: layereight.pimatic
version: "2.0.1"
さらにAnsible GalaxyのドキュメントとAnsible Galaxyの紹介も参照してください。
役割変数
必須
- pimatic_nodejs_arch: 設定する必要があります。node.jsのハードウェアアーキテクチャを選択してください。通常はarmv6l(PiモデルA、B、B+またはZero)またはarmv7l(Pi 2モデルBまたはPi 3モデルB)。
任意
pimatic_nodejs_version
- デフォルト: "v10.18.1"
- 説明: インストールするnodejsのバージョン
pimatic_app_dir
- デフォルト: "pimatic-app"
- 説明: pimaticをインストールするユーザーのホームディレクトリ内のディレクトリ名。例えば、ユーザー
pi
の場合、最終的なインストールディレクトリは/home/pi/pimatic-app
になります。
pimatic_port
- デフォルト: 8080
- 説明: pimaticのウェブフロントエンドがリッスンするポート。このポートでpimaticが起動するのを待機します。pimatic_sslを有効にする場合は、443に設定することを検討してください。
pimatic_config_template
- デフォルト: "config.json.j2"
- 説明: 役割にはpimaticの標準設定が付属。pimaticのhttpServerはpimatic_port上で起動します。通常は独自のpimatic設定テンプレートを提供したいです。例としてpimatic_config_templateをpimatic_config.json.j2に設定し、その名前のファイルをansibleプレイブックに対する
templates
ディレクトリ内に作成します。
pimatic_waitfor_startup
- デフォルト: true
- 説明: 役割がpimaticの起動を待つかどうかを設定します。動作するハードウェアや構成されたプラグインに応じて、最大1時間かかることがあります。
pimatic_ssl
- デフォルト: false
- 説明: 自己署名のSSL証明書を生成するかどうかを設定します。trueに設定すると、役割は生成されたSSLプライベートキーと証明書へのパスを持つ変数pimatic_ssl_privkeyとpimatic_ssl_certを提供します。
pimatic_ssl_cn
- デフォルト: "{{ ansible_fqdn }}"
- 説明: 証明書の共通名 (CN)。
pimatic_ssl_c
- デフォルト: "DE"
- 説明: 証明書の国 (C)。
pimatic_ssl_st
- デフォルト: "Berlin"
- 説明: 証明書の州 (ST)。
pimatic_ssl_l
- デフォルト: "Berlin"
- 説明: 証明書の場所 (L)。
pimatic_ssl_o
- デフォルト: "pimatic"
- 説明: 証明書の組織 (O)。
pimatic_ssl_ou
- デフォルト: "pimatic"
- 説明: 証明書の組織単位 (OU)。
提供される変数
pimatic_ssl_privkey: pimatic_sslがtrueに設定されている場合に提供されます。この変数をpimatic_config_templateで使用して
httpsServer
をセットアップすることができます。pimatic_ssl_cert: pimatic_sslがtrueの場合に提供されます。この変数をpimatic_config_templateで使用して
httpsServer
をセットアップすることができます。
例プレイブック
一般的なプレイブックの実行:
$ ansible-playbook -i inventory pimatic.yml
inventory
[raspberrypi]
pizero ansible_host=192.168.0.101 ansible_user=pi ansible_ssh_pass=raspberry
pimatic.yml
- hosts: raspberrypi
roles:
- pimatic
vars:
pimatic_nodejs_arch: "armv6l"
pimatic_port: 443
pimatic_config_template: "pimatic_config.json.j2"
pimatic_ssl: true
pimatic_admin_password: "verysecret"
templates/pimatic_config.json.j2
{
"settings": {
"httpServer": {
"enabled": false
},
"httpsServer": {
"enabled": true,
"port": {{ pimatic_port }},
"hostname": "",
"keyFile": "{{ pimatic_ssl_privkey }}",
"certFile": "{{ pimatic_ssl_cert }}"
},
"database": {
}
},
"plugins": [
{
"plugin": "cron"
},
{
"plugin": "mobile-frontend"
}
],
"devices": [
],
"rules": [
],
"pages": [
{
"id": "favourite",
"name": "Favourites",
"devices": []
}
],
"groups": [
],
"users": [
{
"username": "admin",
"password": "{{ pimatic_admin_password }}",
"role": "admin"
}
],
"roles": [
{
"name": "admin",
"permissions": {
"pages": "write",
"rules": "write",
"variables": "write",
"messages": "write",
"events": "write",
"devices": "write",
"groups": "write",
"plugins": "write",
"updates": "write",
"database": "write",
"config": "write",
"controlDevices": true,
"restart": true
}
}
]
}