mirror of
https://github.com/rancher/os.git
synced 2025-08-01 06:59:05 +00:00
commit
0f263d570b
@ -1,6 +1,6 @@
|
|||||||
FROM debian:jessie
|
FROM debian:jessie
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
RUN apt-get update && apt-get install -y grub2 parted
|
RUN apt-get update && apt-get install -y grub2 parted kexec-tools
|
||||||
|
|
||||||
COPY ./scripts/installer /scripts
|
COPY ./scripts/installer /scripts
|
||||||
COPY ./build.conf /scripts/
|
COPY ./build.conf /scripts/
|
||||||
|
@ -50,6 +50,10 @@ func osSubcommands() []cli.Command {
|
|||||||
Name: "no-reboot",
|
Name: "no-reboot",
|
||||||
Usage: "do not reboot after upgrade",
|
Usage: "do not reboot after upgrade",
|
||||||
},
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "kexec",
|
||||||
|
Usage: "reboot using kexec",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -149,7 +153,7 @@ func osUpgrade(c *cli.Context) {
|
|||||||
if c.Args().Present() {
|
if c.Args().Present() {
|
||||||
log.Fatalf("invalid arguments %v", c.Args())
|
log.Fatalf("invalid arguments %v", c.Args())
|
||||||
}
|
}
|
||||||
if err := startUpgradeContainer(image, c.Bool("stage"), c.Bool("force"), !c.Bool("no-reboot")); err != nil {
|
if err := startUpgradeContainer(image, c.Bool("stage"), c.Bool("force"), !c.Bool("no-reboot"), c.Bool("kexec")); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -168,21 +172,28 @@ func yes(in *bufio.Reader, question string) bool {
|
|||||||
return strings.ToLower(line[0:1]) == "y"
|
return strings.ToLower(line[0:1]) == "y"
|
||||||
}
|
}
|
||||||
|
|
||||||
func startUpgradeContainer(image string, stage, force, reboot bool) error {
|
func startUpgradeContainer(image string, stage, force, reboot, kexec bool) error {
|
||||||
in := bufio.NewReader(os.Stdin)
|
in := bufio.NewReader(os.Stdin)
|
||||||
|
|
||||||
|
command := []string{
|
||||||
|
"-t", "rancher-upgrade",
|
||||||
|
"-r", config.VERSION,
|
||||||
|
}
|
||||||
|
|
||||||
|
if kexec {
|
||||||
|
command = append(command, "-k")
|
||||||
|
}
|
||||||
|
|
||||||
container, err := compose.CreateService(nil, "os-upgrade", &project.ServiceConfig{
|
container, err := compose.CreateService(nil, "os-upgrade", &project.ServiceConfig{
|
||||||
LogDriver: "json-file",
|
LogDriver: "json-file",
|
||||||
Privileged: true,
|
Privileged: true,
|
||||||
Net: "host",
|
Net: "host",
|
||||||
|
Pid: "host",
|
||||||
Image: image,
|
Image: image,
|
||||||
Labels: project.NewSliceorMap(map[string]string{
|
Labels: project.NewSliceorMap(map[string]string{
|
||||||
config.SCOPE: config.SYSTEM,
|
config.SCOPE: config.SYSTEM,
|
||||||
}),
|
}),
|
||||||
Command: project.NewCommand(
|
Command: project.NewCommand(command...),
|
||||||
"-t", "rancher-upgrade",
|
|
||||||
"-r", config.VERSION,
|
|
||||||
),
|
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -6,7 +6,7 @@ SCRIPTS_DIR=$(dirname ${0})
|
|||||||
. "${SCRIPTS_DIR}/build.conf"
|
. "${SCRIPTS_DIR}/build.conf"
|
||||||
VERSION=${VERSION:?"VERSION not set"}
|
VERSION=${VERSION:?"VERSION not set"}
|
||||||
|
|
||||||
while getopts "i:f:c:d:t:r:o:p:" OPTION
|
while getopts "i:f:c:d:t:r:o:p:k" OPTION
|
||||||
do
|
do
|
||||||
case ${OPTION} in
|
case ${OPTION} in
|
||||||
i) DIST="$OPTARG" ;;
|
i) DIST="$OPTARG" ;;
|
||||||
@ -16,6 +16,7 @@ do
|
|||||||
o) OEM="$OPTARG" ;;
|
o) OEM="$OPTARG" ;;
|
||||||
p) PARTITION="$OPTARG" ;;
|
p) PARTITION="$OPTARG" ;;
|
||||||
r) ROLLBACK_VERSION="$OPTARG" ;;
|
r) ROLLBACK_VERSION="$OPTARG" ;;
|
||||||
|
k) KEXEC=y ;;
|
||||||
t) ENV="$OPTARG" ;;
|
t) ENV="$OPTARG" ;;
|
||||||
*) exit 1 ;;
|
*) exit 1 ;;
|
||||||
esac
|
esac
|
||||||
@ -187,3 +188,7 @@ fi
|
|||||||
grub2_config "${KERNEL_ARGS}"
|
grub2_config "${KERNEL_ARGS}"
|
||||||
pvgrub_config "${KERNEL_ARGS}"
|
pvgrub_config "${KERNEL_ARGS}"
|
||||||
install_rancher
|
install_rancher
|
||||||
|
|
||||||
|
if [ "$KEXEC" = "y" ]; then
|
||||||
|
kexec -l ${DIST}/vmlinuz --initrd=${DIST}/initrd -f
|
||||||
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user