mistaken delete usefuel public key 43/31143/1
authorwu.zhihui <wu.zhihui1@zte.com.cn>
Mon, 20 Mar 2017 02:52:49 +0000 (10:52 +0800)
committerzhihui wu <zhihui.wu2006+zte@gmail.com>
Tue, 21 Mar 2017 08:16:25 +0000 (08:16 +0000)
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)

qtip/scripts/cleanup_creds.sh
qtip/util/env.py

index 1a7ddc1..ad66ba9 100755 (executable)
 
 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
index d00320c..e666894 100644 (file)
@@ -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,