Artigos‎ > ‎Cloud‎ > ‎Google Compute Engine‎ > ‎

Example Script to Install Packages


Primeiramente gostaria de salientar que não sou o autor principal do conteúdo deste artigo. A minha intenção é de mostrar o que outros autores tem realizado (referenciando links para o conteúdo original) neste blog até como um guia pessoal para uso próprio e ainda compartilhar minhas anotações e pequenas modificações que realizo no conteúdo, desejando que possa ajudar mais alguém em algum lugar.
First and foremost, I take no credit for any of this post’s content. I am really just taking what others have done (which I have links to bellow) and am putting it on my blog for a personal reference and hopefully the small changes that I made to their guides will help someone somewhere.


link: http://stackoverflow.com/questions/1298066/check-if-a-package-is-installed-and-then-install-it-if-its-not
link: http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

Example to check if apache2 is installed and make some config changes.

#! /bin/bash

METADAURL="http://metadata/computeMetadata/v1beta1/instance/attributes/"
PACKAGENAME="apache2"

# Creating log custom file
LOGFILE="/var/log/custom-script.log"
if [ ! -f "${LOGFILE}" ]; then
touch "${LOGFILE}"
fi
exec > >(tee -a "${LOGFILE}")
exec 2>&1

echo "Running script example.sh ..."

if [ "$(id -u)" != "0" ]
then
echo "Not root user, aborting installation." 1>&2
exit 1
else 
echo "Running as root."
#Check if is on Google Compute Engine
GCE_OK=$(sudo grep Google /sys/firmware/dmi/entries/1-0/raw)
if [ "${GCE_OK}" != "Binary file /sys/firmware/dmi/entries/1-0/raw matches" ]
then
echo "Not running an Google Compute Engine instance, aborting installation." 1>&2
exit 1
else
echo "Running on Google Compute Engine Instance."
# Check Package Installation
PKG_OK=$(dpkg-query -W --showformat='${Status}\n' ${PACKAGENAME} 2>&1 | grep "install ok installed")
echo -n "Checking for package ${PACKAGENAME}: "
if [ -z "${PKG_OK}" ]
then
echo "not installed."
# Install Package
apt-get update
apt-get --force-yes --yes install ${PACKAGENAME}
##### Post Install config
# Retrieve Custom Metadata
VALUE_OF_FOO=$(curl ${METADAURL}foo)
#Post Install - script
mkdir -p /var/www/
cat <<EOF > /var/www/index.html
<html><body><h1>Hello World</h1>
<p>The value of foo: ${VALUE_OF_FOO}</p>
</body></html>
EOF
else
#Package already Installed
echo "${PKG_OK}."
##### Always run config
# Script to be run on every restart of instance
fi
fi
fi
exit $?



Salve seu script por exemplo no google cloud storage 
gsutil cp example.sh gs://vanaware/scripts/example.sh

e depois execute ele com os comandos:
gsutil cp gs://vanaware/scripts/example.sh example.sh
sudo chown root.root example.sh
sudo chmod 6777 example.sh
bash example.sh

Este script pode ser associado a uma instancia do Google Compute Engine:

Ao iniciar uma instancia e com o script salvo no Google Cloud Storage:
gcutil addinstance simple-apache --service_account_scope=storage-ro --metadata=startup-script-url:gs://vanaware/scripts/example.sh --project="1010870741727" --zone=us-central1-a

Ou Incluir em uma instancia em execução:
gcutil --project="1010870741727" setinstancemetadata --zone=us-central1-a --metadata=foo:"bar - testeando " --metadata=startup-script-url:gs://vanaware/scripts/example.sh --fingerprint=5k5Vg1vB9js=  "cloud"

Mas antes veja o fingerprint de metadata com o comando:
gcutil --project="1010870741727" getinstance --zone=us-central1-a cloud

E ser executado com o comando:
sudo /usr/share/google/run-startup-scripts

O log fica no arquivo:
/var/log/startupscript.log






O URL específico do gadget não foi encontrado



Comments