Adding self installation command for fabrica
This commit is contained in:
parent
740a8de4a2
commit
3851c247a3
|
@ -0,0 +1,5 @@
|
||||||
|
location /fabrica/ {
|
||||||
|
alias %%ROOT%%/images/;
|
||||||
|
autoindex on;
|
||||||
|
allow all;
|
||||||
|
}
|
|
@ -1,17 +0,0 @@
|
||||||
location /factory/ {
|
|
||||||
alias /srv/factory/images/;
|
|
||||||
autoindex on;
|
|
||||||
allow 192.168.10.0/24;
|
|
||||||
allow 192.168.5.0/24;
|
|
||||||
deny all;
|
|
||||||
}
|
|
||||||
location /factory/images/cadoles/ {
|
|
||||||
alias /srv/factory/images/cadoles/;
|
|
||||||
autoindex on;
|
|
||||||
allow 192.168.5.10;
|
|
||||||
allow 192.168.5.11;
|
|
||||||
allow 192.168.5.12;
|
|
||||||
allow 192.168.5.13;
|
|
||||||
allow 192.168.10.177/24;
|
|
||||||
deny all;
|
|
||||||
}
|
|
109
fabrica
109
fabrica
|
@ -4,6 +4,8 @@ WORKDIR="./terraform"
|
||||||
TERRA="terraform"
|
TERRA="terraform"
|
||||||
PACKER_ROOT="./packer"
|
PACKER_ROOT="./packer"
|
||||||
|
|
||||||
|
[ -f /etc/lsb-release ] && source /etc/lsb-release
|
||||||
|
|
||||||
# FIXME
|
# FIXME
|
||||||
function needGitPull()
|
function needGitPull()
|
||||||
{
|
{
|
||||||
|
@ -12,6 +14,85 @@ function needGitPull()
|
||||||
return ${diff}
|
return ${diff}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
## Install & Uninstall ##
|
||||||
|
function install_hashicorp_tools()
|
||||||
|
{
|
||||||
|
if [[ ${DISTRIB_ID} == "ManjaroLinux" ]]
|
||||||
|
then
|
||||||
|
pacman -Syq terraform packer --noconfirm
|
||||||
|
return ${?}
|
||||||
|
elif [[ ${DISTRIB_ID} == "Ubuntu" ]]
|
||||||
|
then
|
||||||
|
gpg_key_url="https://apt.releases.hashicorp.com/gpg"
|
||||||
|
|
||||||
|
curl -fsSL ${gpg_key_url} | apt-key add -
|
||||||
|
apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
|
||||||
|
apt-get update
|
||||||
|
apt-get -y install terraform packer
|
||||||
|
return ${?}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function setup_nginx()
|
||||||
|
{
|
||||||
|
root=${1}
|
||||||
|
|
||||||
|
if [ -d /etc/nginx/web.d ]
|
||||||
|
then
|
||||||
|
sed -i -e "s!%%ROOT%%!${root}!g" ${root}/configs/nginx/fabrica.conf
|
||||||
|
ln -s ${root}/configs/nginx/fabrica.conf /etc/nginx/web.d/
|
||||||
|
echo "Don't forget to restart nginx"
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_fabrica()
|
||||||
|
{
|
||||||
|
root=${1}
|
||||||
|
[ ! -d ${root} ] && mkdir -p $root
|
||||||
|
cp -rp * ${root}
|
||||||
|
return ${?}
|
||||||
|
}
|
||||||
|
|
||||||
|
function install()
|
||||||
|
{
|
||||||
|
ROOT=${2}
|
||||||
|
ret=0
|
||||||
|
|
||||||
|
if [[ -z ${ROOT} ]]
|
||||||
|
then
|
||||||
|
echo "You need to provide an installation directory as paramter"
|
||||||
|
echo "./fabrica install /srv/fabrica"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -e ${ROOT}/.ist ]]
|
||||||
|
then
|
||||||
|
echo "Flag file ${ROOT}/.ist exists !"
|
||||||
|
echo " ==> Fabrica is allready installed !"
|
||||||
|
echo "Nothing to do !"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
install_hashicorp_tools
|
||||||
|
ret=$((ret+${?}))
|
||||||
|
|
||||||
|
install_fabrica ${ROOT}
|
||||||
|
ret=$((ret+${?}))
|
||||||
|
|
||||||
|
setup_nginx ${ROOT}
|
||||||
|
ret=$((ret+${?}))
|
||||||
|
|
||||||
|
if [ ${ret} -eq 0 ]
|
||||||
|
then
|
||||||
|
touch ${ROOT}/.ist
|
||||||
|
fi
|
||||||
|
return ${ret}
|
||||||
|
}
|
||||||
|
|
||||||
|
## TERRAFORM ##
|
||||||
|
# Run Terraform command with the correct options
|
||||||
function trun()
|
function trun()
|
||||||
{
|
{
|
||||||
#needGitPull
|
#needGitPull
|
||||||
|
@ -37,24 +118,28 @@ function trun()
|
||||||
return ${res}
|
return ${res}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Run terraform plan
|
||||||
function plan()
|
function plan()
|
||||||
{
|
{
|
||||||
trun plan
|
trun plan
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Run terraform apply
|
||||||
function apply()
|
function apply()
|
||||||
{
|
{
|
||||||
trun apply
|
trun apply
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Run terraform destroy
|
||||||
function destroy()
|
function destroy()
|
||||||
{
|
{
|
||||||
trun destroy
|
trun destroy
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Run terraform taint
|
||||||
function taint()
|
function taint()
|
||||||
{
|
{
|
||||||
target=$1
|
target=$1
|
||||||
|
@ -62,33 +147,38 @@ function taint()
|
||||||
|
|
||||||
cd ${WORKDIR}
|
cd ${WORKDIR}
|
||||||
|
|
||||||
$TERRA taint module.${resource}.opennebula_template.vm_template
|
$TERRA taint module.vms[${resource}].opennebula_template.vm_template
|
||||||
$TERRA taint module.${resource}.opennebula_virtual_machine.vm
|
$TERRA taint module.vms[${resource}].opennebula_virtual_machine.vm
|
||||||
$TERRA taint module.${resource}.opennebula_image.system
|
$TERRA taint module.vms[${resource}].opennebula_image.system
|
||||||
cd -
|
cd -
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Run terraform taint for all resources
|
||||||
function taint_all()
|
function taint_all()
|
||||||
{
|
{
|
||||||
target=$1
|
target=$1
|
||||||
resource=$2
|
resource=$2
|
||||||
cd ${WORKDIR}
|
cd ${WORKDIR}
|
||||||
|
|
||||||
$TERRA taint module.${resource}.opennebula_template.vm_template
|
$TERRA taint module.vms[${resource}].opennebula_template.vm_template
|
||||||
$TERRA taint module.${resource}.opennebula_virtual_machine.vm
|
$TERRA taint module.vms[${resource}].opennebula_virtual_machine.vm
|
||||||
$TERRA taint module.${resource}.opennebula_image.system
|
$TERRA taint module.vms[${resource}].opennebula_image.system
|
||||||
$TERRA taint module.${resource}.opennebula_image.data
|
$TERRA taint module.vms[${resource}].opennebula_image.data
|
||||||
|
|
||||||
cd -
|
cd -
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Run terraform init
|
||||||
function init()
|
function init()
|
||||||
{
|
{
|
||||||
trun init
|
trun init
|
||||||
return ${?}
|
return ${?}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
## PACKER ##
|
||||||
|
|
||||||
|
# Run packer build
|
||||||
function build()
|
function build()
|
||||||
{
|
{
|
||||||
target=$2
|
target=$2
|
||||||
|
@ -98,11 +188,6 @@ function build()
|
||||||
return ${?}
|
return ${?}
|
||||||
}
|
}
|
||||||
|
|
||||||
function publish()
|
|
||||||
{
|
|
||||||
target=$2
|
|
||||||
echo "FIXME for publish"
|
|
||||||
}
|
|
||||||
|
|
||||||
$1 $@
|
$1 $@
|
||||||
exit ${?}
|
exit ${?}
|
||||||
|
|
|
@ -16,7 +16,7 @@ virtual_machines = {
|
||||||
disks = {
|
disks = {
|
||||||
system = {
|
system = {
|
||||||
name = "prod-amon-static",
|
name = "prod-amon-static",
|
||||||
source = "http://localhost/fabrica/infra/production/amon.fabrica.local/system/amon.fabrica.local"
|
source = "http://localhost/fabrica/infra/production/amon.fabrica.local/system/amon.fabrica.local.img"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
depends = [ "internet" ]
|
depends = [ "internet" ]
|
||||||
|
@ -37,7 +37,7 @@ virtual_machines = {
|
||||||
disks = {
|
disks = {
|
||||||
system = {
|
system = {
|
||||||
name = "prod-scribe-static",
|
name = "prod-scribe-static",
|
||||||
source = "http://localhost/fabrica/infra/production/scribe.fabrica.local/system/scribe.fabrica.local"
|
source = "http://localhost/fabrica/infra/production/scribe.fabrica.local/system/scribe.fabrica.local.img"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
depends = [ "internet" ]
|
depends = [ "internet" ]
|
||||||
|
|
Loading…
Reference in New Issue