Ich versuche zu automatisieren aws ec2 Memcached-Instanz Bootstrapping durch Ausführen von Memcached Kochrezept. Ich rufe einen Shell-Skript-Namen cache-init.sh aus dem UserData-Abschnitt der Cloud-Formation auf. Ich habe folgende Schritte in meiner Shell-Scripts:CHEF: HOME-Umgebungsvariable (oder HOMEDRIVE und HOMEPATH) muss gesetzt sein und auf ein Verzeichnis zeigen
I AMI RHEL 6.7 Version
!/bin/bash
init() {
BINARIES=/root/.binaries
PROFILE_SCRIPT=/etc/profile.d/instance_profile.sh
APPLICATION_RELEASE_VERSION="app-v3.0.1"
CHEF_ZIP="app-chef-${APPLICATION_RELEASE_VERSION}.zip"
APP_FILES="${CHEF_ZIP}"
HOME=/root
}
# Initializing the script vairables.
init
# Create chef folders
mkdir /root/.chef;
mkdir /root/.metadata;
# Disable rhui-lb plugin, this has an issue in RHEL within VPC
sed -i 's/enabled=1/enabled=0/g' /etc/yum/pluginconf.d/rhui-lb.conf
# Print all environment varialbes in log
set > /root/.metadata/metadata.txt
# Update ${PROFILE_SCRIPT}
echo "export HOME=${HOME}" >> ${PROFILE_SCRIPT};
chmod 644 ${PROFILE_SCRIPT};
log 'Added ${PROFILE_SCRIPT}';
echo ${HOME}
# Install chef
# Set these just for Chef installation
/usr/bin/curl -L https://www.opscode.com/chef/install.sh | bash -s -- -v 11.16.2-1;
chef_version=`chef-solo --version`;
log "Installed Chef Version : $chef_version in /opt/chef " ;
log "Installing ChefDk"
/usr/bin/curl -L https://omnitruck.chef.io/install.sh | sudo bash -s -- -c current -P chefdk
chef-repo=/root/.chef/chef-repo
memcached_cookbook=${chef-repo}/cookbooks/memcached
cd ${memcached_cookbook}
# download and package the dependencies.
chef exec berks install
chef exec berks vendor
log "memcached dependencies downloaded and packaged"
cp -r berks-cookbooks/runit /root/.chef/itduzzit/cookbooks
cp -r berks-cookbooks/yum /root/.chef/itduzzit/cookbooks
cp -r berks-cookbooks/yum-epel /root/.chef/itduzzit/cookbooks
cp -r berks-cookbooks/packagecloud /root/.chef/itduzzit/cookbooks
# Clean up the dependencies.
rm -rf berks-cookbooks
Nach den berks Installationsbefehl ausgeführt wird, bekomme ich folgende Fehler leite:
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/rb-readline-0.5.3/lib/rbreadline.rb:1097:in <module:RbReadline>: HOME environment variable (or HOMEDRIVE and HOMEPATH) must be set and point to a directory (RuntimeError)
from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/rb-readline- 0.5.3/lib/rbreadline.rb:17:in <top (required)>
from ...
from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/berkshelf-4.3.2/bin/berks:3:in `<top (required)>'
from /usr/bin/berks:49:in `load'
from /usr/bin/berks:49:in `<main>'
Ich habe versucht Einstellung die Variable HOME env, indem sie am Anfang des Skripts cache-init.sh exportiert wird, aber immer noch denselben Fehler hat. Wenn ich auf die Box ssh und das Skript manuell ausführen, funktioniert es gut. Ich habe versucht, nach dem Fehler zu suchen, fand aber keine geeignete Lösung. Ich würde wirklich jede Hilfe hier zu schätzen wissen.
Bitte zeigen, wie Sie die Umgebungsvariable gesetzt. – coderanger
@coderanger I habe die Frage mit meinem Skript aktualisiert – sjaiswal