1
0
mirror of https://github.com/rancher/os.git synced 2025-07-31 06:32:09 +00:00

Add subscriber service

This commit is contained in:
niusmallnan 2019-02-10 16:23:59 +08:00
parent c4a0dc5534
commit a8cea07f90
5 changed files with 82 additions and 1 deletions

View File

@ -99,7 +99,8 @@ var schema = `{
"properties": {
"url": {"type": "string"},
"image": {"type": "string"},
"rollback": {"type": "string"}
"rollback": {"type": "string"},
"policy": {"type": "string"}
}
},

View File

@ -145,6 +145,7 @@ type UpgradeConfig struct {
URL string `yaml:"url,omitempty"`
Image string `yaml:"image,omitempty"`
Rollback string `yaml:"rollback,omitempty"`
Policy string `yaml:"policy,omitempty"`
}
type EngineOpts struct {

View File

@ -34,6 +34,7 @@ RUN rm /sbin/poweroff /sbin/reboot /sbin/halt && \
COPY inputrc /etc/inputrc
COPY growpart /usr/bin/growpart
COPY start_ntp.sh /bin/start_ntp.sh
COPY os-subscriber /usr/bin/os-subscriber
COPY dhcpcd/dhcpcd.enter-hook /etc/dhcpcd.enter-hook
COPY dhcpcd/10-mtu /lib/dhcpcd/dhcpcd-hooks/
COPY dhcpcd/dhcpcd.debug /usr/share/logrotate/logrotate.d/

58
images/01-base/os-subscriber Executable file
View File

@ -0,0 +1,58 @@
#!/bin/bash
set -e -x
gateway_address="http://ros.rancher.io/gateway"
_sigProcess() {
echo "SIGINT/SIGTERM signal..."
kill -9 $$
}
trap _sigProcess SIGINT SIGKILL SIGTERM
__read_policy() {
policy=`ros c get rancher.upgrade.policy`
if [ -z $policy ]; then
echo "can not read upgrade.policy"
exit 1
fi
return $(($policy))
}
__report_activity() {
arch=`uname -m`
uuid=`cat /sys/class/dmi/id/product_uuid`
release=`ros -v | awk '{print $2}'`
response=`wget --server-response ${gateway_address}/report --header 'Accept: application/json' --header 'Content-type: application/json' --header "arch: $arch" --header "uuid: $uuid" --header "release: $release" 2>&1 | awk '/^ HTTP/{print $2}'`
if [ $response -ge 200 -a $response -le 300 ]; then
echo "report activity success"
else
echo "report activity failed"
fi
}
__upgrade_operate() {
recommend_version=`wget ${gateway_address}/version -q -O -`
case $policy in
download)
echo "upgrade.policy is 'download'"
__report_activity
system-docker pull $recommend_version
;;
auto)
echo "upgrade.policy is 'auto'"
__report_activity
ros os upgrade -i $recommend_version -f
;;
none)
echo "upgrade.policy is 'none'"
;;
*)
echo "upgrade.policy is 'illegal'"
;;
esac
}
__read_policy
__upgrade_operate

View File

@ -368,6 +368,25 @@ rancher:
volumes:
- /sys:/host/sys
- /var/lib/system-docker:/var/lib/system-docker:shared
subscriber:
image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}
command: os-subscriber
environment:
- IN_DOCKER=true
labels:
io.rancher.os.scope: system
io.rancher.os.after: console
cron.schedule: "0 0 3 * * ?"
privileged: true
pid: host
ipc: host
net: host
uts: host
volumes_from:
- command-volumes
- system-volumes
volumes:
- /sys:/host/sys
system_docker:
exec: true
storage_driver: overlay2
@ -386,6 +405,7 @@ rancher:
upgrade:
url: {{.OS_RELEASES_YML}}/releases{{.SUFFIX}}.yml
image: {{.OS_REPO}}/os
policy: download
docker:
{{if eq "amd64" .ARCH -}}
engine: docker-18.03.1-ce