templates/CentOS-6.4-x86_64-netboot/cfengine.sh
#!/bin/bash

# Lets not install untrusted packages to manage our infrastructure
Trusted_GPG_Fingerprint="EF49F970C3D4AEF5E557FB6D8D5A7684F97E94BE"
GPGURL="http://cfengine.com/pub/gpg.key"
GPGKEY="/tmp/cfengine_gpg.key"
YUMREPO="http://cfengine.com/pub/yum"



function main
{
    configure_repo
    retrieve_GPGKEY
    validate_GPGKEY
    install_GPGKEY
    install_cfengine
}

function configure_repo
{
    # Install Yum Client Repository Definition
    cat > /etc/yum.repos.d/cfengine.repo << EOM && return 0 || return 1
[cfengine]
name=cfengine
baseurl=$YUMREPO
enabled=1
gpgcheck=1
EOM
}

function retrieve_GPGKEY
{
    # Retrieve, validate, and install GPGKEY
    curl --silent --output $GPGKEY $GPGURL
    Found_GPG_Fingerprint=$(gpg --quiet --with-fingerprint $GPGKEY | grep fingerprint | cut -d "=" -f2 | sed 's/ //g')
}

function validate_GPGKEY
{
    if [ "$Found_GPG_Fingerprint" = "$Trusted_GPG_Fingerprint" ]; then
        echo "Trusting Retrieved Key: $GPGURL"
        return 0
    else
        return 1
    fi
}

function install_GPGKEY
{
    # We want to avoid possibly importing keys unnecissarily if they are already installed
    keyid=$(echo $(gpg --throw-keyids < $GPGKEY) | cut --characters=11-18 | tr [A-Z] [a-z])
    if ! rpm -q gpg-pubkey-$keyid > /dev/null 2>&1 ; then
        echo "Installing GPG public key with ID $keyid from $GPGKEY..."
        rpm --import $GPGKEY && return 0 || return 1
    else 
        # Found key already installed
        return 0
    fi
}

function install_cfengine
{
    yum -y install cfengine-community && return 0 || return 1
}

main


