layereight.pimatic
ansible-pimatic 
这是一个Ansible角色,用于安装和配置pimatic - 一款针对Raspberry Pi的智能家居自动化软件。
需求
- Raspberry Pi与Raspbian操作系统
- 能够访问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"
角色变量
必填项
- pimatic_nodejs_arch: 必须设置。选择node.js硬件架构,通常选择armv6l(Pi Model A, B, B+或Zero)或armv7l(Pi 2 Model B或Pi 3 Model 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,角色将提供变量pimatic_ssl_privkey和pimatic_ssl_cert,用于生成的ssl私钥和证书的路径。
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
}
}
]
}