Skip to content

Commit 28bbbfb

Browse files
lilyLuLiuadrianriobo
authored andcommitted
add proxy/bastion for connection
1 parent 5a38b3a commit 28bbbfb

File tree

3 files changed

+52
-15
lines changed

3 files changed

+52
-15
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
VERSION ?= 0.0.6
1+
VERSION ?= 0.0.7
22
CONTAINER_MANAGER ?= podman
33
IMG ?= quay.io/rhqp/deliverest:v${VERSION}
44

entrypoint.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ if [[ ! remote_required ]] || [[ ! mamp_required ]] || [[ -z "${ASSETS_FOLDER+x}
2020
exit 1
2121
fi
2222

23+
# Create ssh config file is using proxy connection
24+
if [[ -n "${BASTION_HOST}" && -n "${BASTION_HOST_USERNAME}" ]];then
25+
ssh_config_file
26+
fi
27+
2328
if [ "${CHECK_CONNECTION:-}" = "true" ]; then
2429
check_connection ${CHECK_CONNECTION_ATTEMPTS} ${CHECK_CONNECTION_DELAY}
2530
if [[ $? -gt 0 ]]
@@ -28,6 +33,7 @@ if [ "${CHECK_CONNECTION:-}" = "true" ]; then
2833
fi
2934
fi
3035

36+
3137
# Create execution folder
3238
echo "Create assets folder on target"
3339
TARGET_FOLDER="${TARGET_FOLDER:-"deliverest-${RANDOM}"}"

lib/common/remote.sh

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ remote_required () {
1818
[[ -z "${TARGET_HOST_KEY_PATH+x}" && -z "${TARGET_HOST_PASSWORD+x}" ]] \
1919
&& echo "TARGET_HOST_KEY_PATH or TARGET_HOST_PASSWORD required" \
2020
&& validate=0
21-
2221
return $validate
2322
}
2423

@@ -33,6 +32,29 @@ connect_options() {
3332
echo $options
3433
}
3534

35+
ssh_config_file() {
36+
cat <<EOF > ssh_config
37+
Host proxy_host
38+
StrictHostKeyChecking no
39+
HostName ${BASTION_HOST}
40+
User ${BASTION_HOST_USERNAME}
41+
IdentityFile ${BASTION_HOST_KEY_PATH}
42+
43+
Host target_host
44+
HostName ${TARGET_HOST}
45+
User ${TARGET_HOST_USERNAME}
46+
IdentityFile ${TARGET_HOST_KEY_PATH}
47+
ProxyJump proxy_host
48+
EOF
49+
if [[ -z ${TARGET_HOST_KEY_PATH+x} ]]; then
50+
sed -i"" -e '9d' ssh_config
51+
fi
52+
if [[ -z ${BASTION_HOST_KEY_PATH+x} ]]; then
53+
sed -i"" -e '4d' ssh_config
54+
fi
55+
cat ssh_config
56+
}
57+
3658
# If restart is involved, it can take a moment for the target host to become available again
3759
# Check the connection to the host; "delay" in seconds, "repeats" in number of reps
3860
# Run as: check_connection <repeats int> <delay int>
@@ -63,7 +85,7 @@ check_connection() {
6385
# Define remote connection
6486
uri () {
6587
local remote="${TARGET_HOST_USERNAME}@${TARGET_HOST}"
66-
if [[ ! -z "${TARGET_HOST_DOMAIN+x}" ]]; then
88+
if [[ -n "${TARGET_HOST_DOMAIN}" ]]; then
6789
remote="${TARGET_HOST_USERNAME}@${TARGET_HOST_DOMAIN}@${TARGET_HOST}"
6890
fi
6991
echo "${remote}"
@@ -73,37 +95,46 @@ uri () {
7395
# $1 local path
7496
# $2 remote path
7597
scp_to_cmd () {
76-
if [[ ! -z "${TARGET_HOST_KEY_PATH+x}" ]]; then
77-
echo "scp -r $(connect_options) -i ${TARGET_HOST_KEY_PATH} ${1} $(uri):${2}"
98+
cmd="scp -r $(connect_options) "
99+
if [[ -n "${BASTION_HOST}" && -n "${BASTION_HOST_USERNAME}" ]]; then
100+
echo "${cmd} -F ssh_config ${1} target_host:${2}"
101+
elif [[ -n "${TARGET_HOST_KEY_PATH}" ]]; then
102+
echo "${cmd} -i ${TARGET_HOST_KEY_PATH} ${1} $(uri):${2}"
78103
else
79-
echo "sshpass -p ${TARGET_HOST_PASSWORD} scp -r $(connect_options) ${1} $(uri):${2}"
104+
echo "sshpass -p ${TARGET_HOST_PASSWORD} ${cmd} ${1} $(uri):${2}"
80105
fi
81106
}
82107

83108
# Generate SCP command
84109
# $1 remote path
85110
# $2 local path
86111
scp_from_cmd () {
87-
if [[ ! -z "${TARGET_HOST_KEY_PATH+x}" ]]; then
88-
echo "scp -r $(connect_options) -i ${TARGET_HOST_KEY_PATH} $(uri):${1} ${2}"
112+
cmd="scp -r $(connect_options) "
113+
if [[ -n "${BASTION_HOST}" && -n "${BASTION_HOST_USERNAME}" ]]; then
114+
echo "${cmd} -F ssh_config target_host:${1} ${2} "
115+
elif [[ -n "${TARGET_HOST_KEY_PATH}" ]]; then
116+
echo "${cmd} -i ${TARGET_HOST_KEY_PATH} $(uri):${1} ${2}"
89117
else
90-
echo "sshpass -p ${TARGET_HOST_PASSWORD} scp -r $(connect_options) $(uri):${1} ${2}"
118+
echo "sshpass -p ${TARGET_HOST_PASSWORD} ${cmd} $(uri):${1} ${2}"
91119
fi
92120
}
93121

94122
# Generate SSH command
95123
ssh_cmd () {
96-
cmd=""
97-
if [[ ! -z "${TARGET_HOST_KEY_PATH+x}" ]]; then
98-
cmd="ssh $(connect_options) -i ${TARGET_HOST_KEY_PATH} $(uri) "
124+
cmd="ssh $(connect_options) "
125+
if [[ -n "${BASTION_HOST}" && -n "${BASTION_HOST_USERNAME}" ]]; then
126+
cmd+="-F ssh_config target_host "
127+
elif [[ -n "${TARGET_HOST_KEY_PATH}" ]]; then
128+
cmd+="-i ${TARGET_HOST_KEY_PATH} $(uri) "
99129
else
100-
cmd="sshpass -p ${TARGET_HOST_PASSWORD} ssh $(connect_options) $(uri) "
130+
cmd="sshpass -p ${TARGET_HOST_PASSWORD} ${cmd} $(uri) "
101131
fi
132+
102133
# On AWS MacOS ssh session is not recognized as expected
103134
if [[ ${OS} == 'darwin' ]]; then
104135
cmd+="sudo su - ${TARGET_HOST_USERNAME} -c \"PATH=\$PATH:/usr/local/bin && $@\""
105136
else
106-
cmd+="$@"
137+
cmd+=" $@"
107138
fi
108139
echo "${cmd}"
109-
}
140+
}

0 commit comments

Comments
 (0)