49 lines
1.6 KiB
Bash
Executable File
49 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# 在 armv7/arm32 等远程主机上:若 docker info 已成功则跳过安装;否则拉取并执行官方 get.docker.com 脚本后再校验。
|
||
# 用法:
|
||
# ARMV7_SSH='ssh -o BatchMode=yes user@arm-host' ./ansible/tools/armv7-docker-verify-install.sh
|
||
# ./ansible/tools/armv7-docker-verify-install.sh 'ssh -o BatchMode=yes user@arm-host'
|
||
# 参考:https://github.com/docker/docker-install (get.docker.com)
|
||
set -euo pipefail
|
||
|
||
SSH_CMD="${1:-${ARMV7_SSH:-}}"
|
||
if [[ -z "${SSH_CMD}" ]]; then
|
||
echo "[ERR] 未指定 SSH:请设置 ARMV7_SSH 或传入参数,例如:ARMV7_SSH='ssh -o BatchMode=yes user@host' $0" >&2
|
||
exit 2
|
||
fi
|
||
|
||
# shellcheck disable=SC2086
|
||
remote() {
|
||
$SSH_CMD "$@"
|
||
}
|
||
|
||
echo "[INFO] 探测远程 docker info …"
|
||
if remote docker info >/dev/null 2>&1; then
|
||
echo "[OK] docker info 可用,跳过安装(与 docs/01-03 验收一致)"
|
||
remote docker info
|
||
echo "[OC] doc_id=01-03 result=verified assertion=docker_info skip_install=1"
|
||
exit 0
|
||
fi
|
||
|
||
echo "[INFO] docker info 不可用,使用官方脚本安装 Docker CE(get.docker.com)…"
|
||
# 远程 stdin 脚本:root 直接 sh;非 root 用 sudo(需免密或已交互配置)
|
||
remote bash -s <<'REMOTE_INSTALL'
|
||
set -euo pipefail
|
||
curl -fsSL https://get.docker.com -o /tmp/get-docker.sh
|
||
if [[ "$(id -u)" -eq 0 ]]; then
|
||
sh /tmp/get-docker.sh
|
||
else
|
||
sudo sh /tmp/get-docker.sh
|
||
fi
|
||
REMOTE_INSTALL
|
||
|
||
echo "[INFO] 安装后再次校验 docker info …"
|
||
if ! remote docker info; then
|
||
echo "[ERR] 安装后 docker info 仍失败" >&2
|
||
exit 1
|
||
fi
|
||
|
||
echo "[OK] Docker 已就绪"
|
||
echo "[OC] doc_id=01-03 result=verified assertion=docker_info skip_install=0"
|
||
exit 0
|