使用 snapd 的設定 confdb 在 snap 之間共用 snap 配置的概念證明。
對於簡單的演示,請參閱此存儲庫。
警告
在此之前,Confdb 以前稱為註冊表和方面。 Snapd、Snapcraft 和 Store 尚未跟上此重命名。現在,將所有提到的“confdb”替換為“registry”,將“confdbs”替換為“registries”。
筆記
請注意,註冊表以前的名稱是方面,這就是快照具有方面前綴的原因。
要安裝此 PoC,只需執行安裝腳本:
$ /bin/bash -c " $( curl -fsSL https://raw.githubusercontent.com/canonical/registries-poc/main/install.sh ) "
Acknowledging account/f22PSauKuNkwQTM9Wz67ZCjNACuSjjhN assertion...
Acknowledging account-key/xkd_Y2ay5N2Uo14v_wsCtfVJYLAVbJgxbiKM8Ne4mZBflaROriZgk2nb5i9Oebum assertion...
Acknowledging network-confdb.assert assertion...
Installing aspects-poc-server...
aspects-poc-server (edge) 0.2 from Stephen Mwangi (st3v3nmw) installed
Installing aspects-poc-control...
aspects-poc-control (edge) 0.2 from Stephen Mwangi (st3v3nmw) installed
Installing aspects-poc-vpn...
aspects-poc-vpn (edge) 0.2 from Stephen Mwangi (st3v3nmw) installed
Installing aspects-poc-reporting...
aspects-poc-reporting (edge) 0.2 from Stephen Mwangi (st3v3nmw) installed
確保您已使用上面的安裝腳本安裝了 PoC。該腳本應安裝server
、 control
快照、 vpn
快照和reporting
快照。
一切都應該自動運行,並且control
單元應該聯繫伺服器進行註冊。註冊後, observe-device
confdb 視圖應如下所示:
$ snap get f22PSauKuNkwQTM9Wz67ZCjNACuSjjhN/network/observe-device -d
{
"registered": 1719407517,
"uuid": "ca155b32-2472-4650-afb0-c6f967328afe"
}
control
快照也會在初始安裝期間設定設備的預設配置:
$ snap get f22PSauKuNkwQTM9Wz67ZCjNACuSjjhN/network/control-interfaces config -d
{
"config": {
"eth0": {
"interface-type": "ethernet",
"ip-address": "172.16.0.3"
},
"wlan0": {
"interface-type": "wifi",
"ip-address": "192.168.0.104"
}
}
}
$ snap get f22PSauKuNkwQTM9Wz67ZCjNACuSjjhN/network/control-tunnel -d
{
"interface": "eth0",
"peers": [
"192.168.21.3",
"192.168.151.225",
"192.168.21.7"
]
}
$ snap get f22PSauKuNkwQTM9Wz67ZCjNACuSjjhN/network/control-telemetry -d
{
"monitor-packets-received": false,
"monitor-packets-sent": true,
"monitor-peers": true,
"sample-rate": 2
}
$ snap get f22PSauKuNkwQTM9Wz67ZCjNACuSjjhN/network/control-device -d
{
"server-url": "http://127.0.0.1:8000"
}
從那時起, control
快照將每分鐘運行一次並模擬每個介面上的資料包流 ( config.{interface}.stats
)。您可以透過檢查快照的守護程序來確認這一點:
$ snap logs aspects-poc-control
systemd[1]: Starting snap.aspects-poc-control.daemon.service - Service for snap application aspects-poc-control.daemon...
aspects-poc-control.daemon[409009]: eth0: 9 packets ↑, 1 packets ↓
aspects-poc-control.daemon[409009]: wlan0: 5 packets ↑, 4 packets ↓
systemd[1]: snap.aspects-poc-control.daemon.service: Deactivated successfully.
systemd[1]: Finished snap.aspects-poc-control.daemon.service - Service for snap application aspects-poc-control.daemon.
systemd[1]: Starting snap.aspects-poc-control.daemon.service - Service for snap application aspects-poc-control.daemon...
aspects-poc-control.daemon[410059]: eth0: 7 packets ↑, 4 packets ↓
aspects-poc-control.daemon[410059]: wlan0: 2 packets ↑, 4 packets ↓
systemd[1]: snap.aspects-poc-control.daemon.service: Deactivated successfully.
systemd[1]: Finished snap.aspects-poc-control.daemon.service - Service for snap application aspects-poc-control.daemon.
您可以透過執行以下命令來確認這些更新:
$ snap get f22PSauKuNkwQTM9Wz67ZCjNACuSjjhN/network/observe-interfaces packets-received
Key Value
packets-received.eth0 127
packets-received.wlan0 148
$ snap get f22PSauKuNkwQTM9Wz67ZCjNACuSjjhN/network/observe-interfaces packets-sent
Key Value
packets-sent.eth0 130
packets-sent.wlan0 131
vpn
snap 有一個每分鐘執行一次的服務來模擬 VPN 隧道的變更。目前這僅限於刪除和新增對等節點到隧道的另一端。這些操作中的每一個都有 10% 的幾率發生。
您可以透過檢查快照的守護程序來確認這一點:
$ snap logs aspects-poc-vpn
systemd[1]: snap.aspects-poc-vpn.daemon.service: Deactivated successfully.
systemd[1]: Finished snap.aspects-poc-vpn.daemon.service - Service for snap application aspects-poc-vpn.daemon.
systemd[1]: Starting snap.aspects-poc-vpn.daemon.service - Service for snap application aspects-poc-vpn.daemon...
aspects-poc-vpn.daemon[412358]: No changes to tunnel.
systemd[1]: snap.aspects-poc-vpn.daemon.service: Deactivated successfully.
systemd[1]: Finished snap.aspects-poc-vpn.daemon.service - Service for snap application aspects-poc-vpn.daemon.
systemd[1]: Starting snap.aspects-poc-vpn.daemon.service - Service for snap application aspects-poc-vpn.daemon...
aspects-poc-vpn.daemon[413769]: No changes to tunnel.
systemd[1]: snap.aspects-poc-vpn.daemon.service: Deactivated successfully.
systemd[1]: Finished snap.aspects-poc-vpn.daemon.service - Service for snap application aspects-poc-vpn.daemon.
您也可以檢查observe-tunnel
confdb視圖來查看目前的對等點:
$ snap get f22PSauKuNkwQTM9Wz67ZCjNACuSjjhN/network/observe-tunnel peers
[
"192.168.21.3",
"192.168.151.225",
"192.168.21.7"
]
reporting
快照有一項每分鐘運行一次的服務,用於收集有關網路當前狀態的指標。收集的指標由control-metrics
confdb 視圖控制:
$ snap get f22PSauKuNkwQTM9Wz67ZCjNACuSjjhN/network/control-telemetry -d
{
"monitor-packets-received": false,
"monitor-packets-sent": true,
"monitor-peers": true,
"sample-rate": 2
}
您可以透過執行以下命令來檢查網路狀態:
$ snap logs aspects-poc-reporting -n 25
aspects-poc-reporting.daemon[389998]: INFO:root:The network stats are:
aspects-poc-reporting.daemon[389998]: INFO:root: {'device-id': 'ca155b32-2472-4650-afb0-c6f967328afe',
aspects-poc-reporting.daemon[389998]: 'packets-sent': {'eth0': 137, 'wlan0': 141},
aspects-poc-reporting.daemon[389998]: 'tunnel-peers': ['192.168.21.3', '192.168.151.225', '192.168.21.7']}
aspects-poc-reporting.daemon[389998]: INFO:root:Next run in 30.00 seconds
aspects-poc-reporting.daemon[389998]: INFO:root:The network stats are:
aspects-poc-reporting.daemon[389998]: INFO:root: {'device-id': 'ca155b32-2472-4650-afb0-c6f967328afe',
aspects-poc-reporting.daemon[389998]: 'packets-sent': {'eth0': 137, 'wlan0': 141},
aspects-poc-reporting.daemon[389998]: 'tunnel-peers': ['192.168.21.3', '192.168.151.225', '192.168.21.7']}
aspects-poc-reporting.daemon[389998]: INFO:root:Next run in 30.00 seconds
aspects-poc-reporting.daemon[389998]: INFO:root:The network stats are:
aspects-poc-reporting.daemon[389998]: INFO:root: {'device-id': 'ca155b32-2472-4650-afb0-c6f967328afe',
aspects-poc-reporting.daemon[389998]: 'packets-sent': {'eth0': 138, 'wlan0': 150},
aspects-poc-reporting.daemon[389998]: 'tunnel-peers': ['192.168.21.3', '192.168.151.225', '192.168.21.7']}
aspects-poc-reporting.daemon[389998]: INFO:root:Next run in 30.00 seconds
aspects-poc-reporting.daemon[389998]: INFO:root:The network stats are:
aspects-poc-reporting.daemon[389998]: INFO:root: {'device-id': 'ca155b32-2472-4650-afb0-c6f967328afe',
aspects-poc-reporting.daemon[389998]: 'packets-sent': {'eth0': 138, 'wlan0': 150},
aspects-poc-reporting.daemon[389998]: 'tunnel-peers': ['192.168.21.3', '192.168.151.225', '192.168.21.7']}
aspects-poc-reporting.daemon[389998]: INFO:root:Next run in 30.00 seconds
aspects-poc-reporting.daemon[389998]: INFO:root:The network stats are:
aspects-poc-reporting.daemon[389998]: INFO:root: {'device-id': 'ca155b32-2472-4650-afb0-c6f967328afe',
aspects-poc-reporting.daemon[389998]: 'packets-sent': {'eth0': 145, 'wlan0': 154},
aspects-poc-reporting.daemon[389998]: 'tunnel-peers': ['192.168.21.3', '192.168.151.225', '192.168.21.7']}
aspects-poc-reporting.daemon[389998]: INFO:root:Next run in 30.00 seconds
伺服器執行時(已安裝對應的 snap),可在 http://127.0.0.1:8000/docs 上取得文件。
確保您已使用上面的安裝腳本安裝了 PoC,以確保所有斷言均已確認並開啟了 confdbs 等實驗性功能。
執行make
或make all
一次建置所有快照,或執行以下命令單獨建置它們:
$ make control
Building control snap...
Generated snap metadata
Created snap package aspects-poc-control_0.2_amd64.snap
$ make reporting
Building reporting snap...
Generated snap metadata
Created snap package aspects-poc-reporting_0.2_amd64.snap
$ make server
Building server snap...
Generated snap metadata
Created snap package aspects-poc-server_0.2_amd64.snap
$ make vpn
Building vpn snap...
Generated snap metadata
Created snap package aspects-poc-vpn_0.2_amd64.snap
要使用下面的 make 目標,請確保安裝了 yq。您可以使用 Homebrew 或快速安裝它:
$ brew install yq
$ snap install yq
執行make install-all
一次安裝所有快照,或執行以下命令單獨安裝它們:
$ make install-server
Installing server snap...
aspects-poc-server 0.2 installed
$ make install-control
Installing control snap...
aspects-poc-control 0.2 installed
$ make install-vpn
Installing vpn snap...
aspects-poc-vpn 0.2 installed
$ make install-reporting
Installing reporting snap...
aspects-poc-reporting 0.2 installed