Skip to content

Instantly share code, notes, and snippets.

@cheeseplus
Created February 24, 2015 16:30
Show Gist options
  • Save cheeseplus/8cceee687d941e9f3e8c to your computer and use it in GitHub Desktop.
Save cheeseplus/8cceee687d941e9f3e8c to your computer and use it in GitHub Desktop.
▶ kitchen test default-freebsd-10
-----> Starting Kitchen (v1.3.1)
-----> Cleaning up any prior instances of <default-freebsd-10-1-x64>
-----> Destroying <default-freebsd-10-1-x64>...
Finished destroying <default-freebsd-10-1-x64> (0m0.00s).
-----> Testing <default-freebsd-10-1-x64>
-----> Creating <default-freebsd-10-1-x64>...
Digital Ocean instance <4251109> created.
(ssh ready)
Finished creating <default-freebsd-10-1-x64> (1m17.05s).
-----> Converging <default-freebsd-10-1-x64>...
Preparing files for transfer
Preparing dna.json
Resolving cookbook dependencies with Berkshelf 3.2.3...
Removing non-cookbook files before transfer
Preparing validation.pem
Preparing client.rb
Unmatched '.
#: Command not found.
Badly placed ()'s.
Ambiguous output redirect.
then: Command not found.
return: Command not found.
else: endif not found.
>>>>>> Converge failed on instance <default-freebsd-10-1-x64>.
>>>>>> Please see .kitchen/logs/default-freebsd-10-1-x64.log for more details
>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: SSH exited (1) for command: [sh -c '
# Check whether a command exists - returns 0 if it does, 1 if it does not
exists() {
if command -v $1 >/dev/null 2>&1
then
return 0
else
return 1
fi
}
# do_wget URL FILENAME
do_wget() {
echo "trying wget..."
wget -O "$2" "$1" 2>/tmp/stderr
# check for bad return status
test $? -ne 0 && return 1
# check for 404 or empty file
grep "ERROR 404" /tmp/stderr 2>&1 >/dev/null
if test $? -eq 0 || test ! -s "$2"; then
return 1
fi
return 0
}
# do_curl URL FILENAME
do_curl() {
echo "trying curl..."
curl -L "$1" > "$2"
# check for bad return status
[ $? -ne 0 ] && return 1
# check for bad output or empty file
grep "The specified key does not exist." "$2" 2>&1 >/dev/null
if test $? -eq 0 || test ! -s "$2"; then
return 1
fi
return 0
}
# do_fetch URL FILENAME
do_fetch() {
echo "trying fetch..."
fetch -o "$2" "$1" 2>/tmp/stderr
# check for bad return status
test $? -ne 0 && return 1
return 0
}
# do_perl URL FILENAME
do_perl() {
echo "trying perl..."
perl -e "use LWP::Simple; getprint($ARGV[0]);" "$1" > "$2"
# check for bad return status
test $? -ne 0 && return 1
# check for bad output or empty file
# grep "The specified key does not exist." "$2" 2>&1 >/dev/null
# if test $? -eq 0 || test ! -s "$2"; then
# unable_to_retrieve_package
# fi
return 0
}
# do_python URL FILENAME
do_python() {
echo "trying python..."
python -c "import sys,urllib2 ; sys.stdout.write(urllib2.urlopen(sys.argv[1]).read())" "$1" > "$2"
# check for bad return status
test $? -ne 0 && return 1
# check for bad output or empty file
#grep "The specified key does not exist." "$2" 2>&1 >/dev/null
#if test $? -eq 0 || test ! -s "$2"; then
# unable_to_retrieve_package
#fi
return 0
}
# do_download URL FILENAME
do_download() {
PATH=/opt/local/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export PATH
echo "downloading $1"
echo " to file $2"
# we try all of these until we get success.
# perl, in particular may be present but LWP::Simple may not be installed
if exists wget; then
do_wget $1 $2 && return 0
fi
if exists curl; then
do_curl $1 $2 && return 0
fi
if exists fetch; then
do_fetch $1 $2 && return 0
fi
if exists perl; then
do_perl $1 $2 && return 0
fi
if exists python; then
do_python $1 $2 && return 0
fi
echo ">>>>>> wget, curl, fetch, perl or python not found on this instance."
return 16
}
# @param $1 the omnibus root directory
# @param $2 the requested version of omnibus package
# @return 0 if omnibus needs to be installed, non-zero otherwise
should_update_chef() {
if test ! -d "$1" ; then return 0
elif test "$2" = "true" ; then return 1
elif test "$2" = "latest" ; then return 0
fi
local version="`$1/bin/chef-solo -v | cut -d " " -f 2`"
if echo "$version" | grep "^$2" 2>&1 >/dev/null; then
return 1
else
return 0
fi
}
if should_update_chef "/opt/chef" "latest" ; then
echo "-----> Installing Chef Omnibus (always install latest version)"
do_download https://www.chef.io/chef/install.sh /tmp/install.sh
sudo -E sh /tmp/install.sh
else
echo "-----> Chef Omnibus installation detected (always install latest version)"
fi
']
>>>>>> ----------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment