Introduzione
In questo documento viene descritto come sincronizzare un'appliance Repo locale con il sito repo.cliqrtech.com per scaricare Ubuntu 16.04 Repo sull'appliance Repo con la crittografia SHA256 cloudrepo.key.
Prerequisiti
Requisiti
Cisco raccomanda la conoscenza dei seguenti argomenti:
- Interfaccia Linux
- Ambiente macchina virtuale
- Appliance Repo
Componenti usati
Le informazioni di questo documento si basano sulle seguenti versioni software:
- CloudCenter versione 4.8.1.1
- Appliance Repo
Premesse
CloudCenter ha iniziato a supportare Ubuntu 16.04 con la release 4.8.1.1. Tuttavia, il repository Ubuntu 16.04 non è disponibile nell'appliance CloudCenter Repo.
Pertanto, se si desidera scaricare il repository Ubuntu 16.04, sincronizzare l'accessorio Repo locale con repo.ciqrtech.com.
Problema
Sincronizzazione di Ubuntu 16.04 Repo Download to Local Repo Appliance
Se l'accessorio Repo locale si sincronizza con il file repo.cliqrtech.com, non sarà in grado di ottenere correttamente il repo Ubuntu 16.04 perché la crittografia cloudrepo.key è SHA1 e Ubuntu 16.04 richiede almeno un SHA256.
Soluzione
Per poter utilizzare cloudrepo.key, è necessario creare una nuova chiave GnuPrivacyGuard (GPG) utilizzando SHA256, che scarica il repository Ubuntu 16.04 sull'appliance Repo locale.
Passaggio 1. Verificare che repo.cliqrtech.com sia il repository principale.
/usr/bin/repo_config_wizard.sh
Passaggio 2. Nella directory /tmp dell'accessorio Repo locale, copiare e incollare questo script e denominarlo recreate_gpg_key.sh (lo script è allegato a questo articolo di Techzone).
#!/bin/bash
REPO_DIR='/repo'
# Move gnupg folder to recreate keys
if [[ -d '/home/repo/.gnupg' ]]; then
su repo -c "mv -f /home/repo/.gnupg /home/repo/gnupg_bkp"
fi
# Create gpg.conf file and add sha256 algorith to it
gpg_conf_file='/home/repo/.gnupg/gpg.conf'
su repo -c "gpg --list-keys"
if [[ ! -f ${gpg_conf_file} ]]; then
echo "Gpg.conf file not created. Failing in gpg install/configure"
exit 1
fi
echo cert-digest-algo SHA256 >> ${gpg_conf_file}
echo digest-algo SHA256 >> ${gpg_conf_file}
gpg_txt='/tmp/gpg.txt'
cat << EOF > ${gpg_txt}
%echo Generating a basic OpenPGP key
Key-Type: RSA
Key-Length: 4096
Name-Real: CloudRepo
Name-Comment: GPG key for Cloud Repo
Name-Email: foo@foo.bar
Expire-Date: 0
Passphrase: cloudrepo
# Do a commit here, so that we can later print "done" :-)
%commit
%echo done
EOF
su repo -c "gpg --batch --gen-key ${gpg_txt}"
rm -f ${gpg_txt}
# Remove cloudrepo key before recreating it
cloud_repo_key=${REPO_DIR}'/cloudrepo.key'
if [[ -f ${cloud_repo_key} ]]; then
rm -f ${cloud_repo_key}
fi
gpg_key_val=$(su repo -c "gpg --list-keys" | grep "^pub" | tail -n 1 | awk '{print $2}' | cut -d '/' -f 2 )
gpg_tmp_file='/tmp/gpg.tmp'
echo cloudrepo > ${gpg_tmp_file}
su repo -c "cat ${gpg_tmp_file} | gpg --no-tty --batch --passphrase-fd 0 --output ${cloud_repo_key} --armor --export ${gpg_key_val}"
rm -f ${gpg_tmp_file}
# Run rebuild metadata script to recreate ubuntu1604 metadata with the new key
touch /repo/debRepo/ubuntu1604/amd64/binary/tmp_file
touch /repo/debRepo/ubuntu1404/amd64/binary/tmp_file
touch /repo/debRepo/ubuntu1204/amd64/binary/tmp_file
su repo -c "/repo/scripts/rebuild_repo_metadata.sh"
rm -f /repo/debRepo/ubuntu1604/amd64/binary/tmp_file
rm -f /repo/debRepo/ubuntu1404/amd64/binary/tmp_file
rm -f /repo/debRepo/ubuntu1204/amd64/binary/tmp_file
exit 0
Passaggio 3. Modificare l'autorizzazione recreate_gpg_key.sh.
chmod 755 recreate_gpg_key.sh
Passaggio 4. Eseguire recreate_gpg_key.sh come root.
./recreate_gpg_key.sh
Passaggio 5. Confermare che il repository di Ubuntu 16.04 sia stato aggiunto all'accessorio locale.
ls /repo/debRepo/