aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwu.zhihui <wu.zhihui1@zte.com.cn>2017-03-20 10:52:49 +0800
committerzhihui wu <zhihui.wu2006+zte@gmail.com>2017-03-21 08:16:25 +0000
commit695a881515c40e29fc12eb5003e0f3682bc4d64b (patch)
tree8fa86da6a6ebf25a045f00c14a45c65cf8fd397e
parent51b1b84b191a0ce3dd4e2431c73583ef5e1a8fd9 (diff)
mistaken delete usefuel public key
Previously, cleanup_creds.sh will delete public keys which of comment info is "root@$hostname". It could delete useful keys by accident. In this patch, cleanup_creds.sh will only delete the key which matches the key's content. JIRA: QTIP-228 Change-Id: I1095de656570b816b7e170688acd01c27b98e74c Signed-off-by: wu.zhihui <wu.zhihui1@zte.com.cn> (cherry picked from commit eaa225cf0c9b8b7bc63b35acdeef75dbacb8b905)
-rwxr-xr-xqtip/scripts/cleanup_creds.sh4
-rw-r--r--qtip/util/env.py18
2 files changed, 14 insertions, 8 deletions
diff --git a/qtip/scripts/cleanup_creds.sh b/qtip/scripts/cleanup_creds.sh
index 1a7ddc1a..ad66ba95 100755
--- a/qtip/scripts/cleanup_creds.sh
+++ b/qtip/scripts/cleanup_creds.sh
@@ -10,11 +10,11 @@
DEST_IP=$1
PRIVATE_KEY=$2
-HOSTNAME=$(hostname)
+PUBLIC_KEY=$3
sshoptions="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
case "$INSTALLER_TYPE" in
fuel)
- ssh $sshoptions -i $PRIVATE_KEY root@$DEST_IP "sed -i '/root@$HOSTNAME/d' /root/.ssh/authorized_keys"
+ ssh $sshoptions -i $PRIVATE_KEY root@$DEST_IP "sed -i '/$PUBLIC_KEY/d' /root/.ssh/authorized_keys"
;;
esac
diff --git a/qtip/util/env.py b/qtip/util/env.py
index d00320c4..e666894a 100644
--- a/qtip/util/env.py
+++ b/qtip/util/env.py
@@ -94,7 +94,8 @@ class AnsibleEnvSetup(object):
if not all_files_exist(PRIVATE_KEY, PUBLIC_KEY):
logger.info("Generate default keypair {0} under "
"{1}".format(KEYNAME, os.environ['HOME']))
- cmd = '''ssh-keygen -t rsa -N "" -f {0} -q -b 2048'''.format(PRIVATE_KEY)
+ cmd = '''ssh-keygen -t rsa -N "" -f {0} -q -b 2048
+ -C qtip@insecure'''.format(PRIVATE_KEY)
os.system(cmd)
self.keypair['private'] = PRIVATE_KEY
self.keypair['public'] = PUBLIC_KEY
@@ -195,11 +196,16 @@ class AnsibleEnvSetup(object):
if CI_DEBUG:
logger.info("DEBUG Mode: please do cleanup by manual.")
else:
- for ip in self.host_ip_list:
- logger.info("Cleanup authorized_keys from {0}...".format(ip))
- cmd = 'bash {0}/cleanup_creds.sh {1} {2}'.format(
- SCRIPT_DIR, ip, self.keypair['private'])
- os.system(cmd)
+ with open(self.keypair['public'], 'r') as f:
+ key = f.read().strip('\n').replace('/', '\/')
+ if key:
+ for ip in self.host_ip_list:
+ logger.info("Cleanup authorized_keys from {0}...".format(ip))
+ cmd = '''bash {0}/cleanup_creds.sh {1} {2} "{3}"'''.format(
+ SCRIPT_DIR, ip, self.keypair['private'], key)
+ os.system(cmd)
+ else:
+ logger.error("Nothing in public key file.")
logger.info("Cleanup hostfile and keypair.")
clean_file(self.hostfile,