remove kubectl manifests bc drone is not happy running them :/
This commit is contained in:
parent
59199606fb
commit
3ba28a4594
6 changed files with 177 additions and 30 deletions
30
modules/kubernetes/dbaas/cluster.yaml
Normal file
30
modules/kubernetes/dbaas/cluster.yaml
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
apiVersion: mysql.presslabs.org/v1alpha1
|
||||||
|
kind: MysqlCluster
|
||||||
|
metadata:
|
||||||
|
name: mysql-cluster
|
||||||
|
namespace: dbaas
|
||||||
|
spec:
|
||||||
|
mysqlVersion: "5.7"
|
||||||
|
replicas: 1
|
||||||
|
secretName: cluster-secret
|
||||||
|
mysqlConf:
|
||||||
|
# read_only: 0 # mysql forms a single transaction for each sql statement, autocommit for each statement
|
||||||
|
# automatic_sp_privileges: "ON" # automatically grants the EXECUTE and ALTER ROUTINE privileges to the creator of a stored routine
|
||||||
|
# auto_generate_certs: "ON" # Auto Generation of Certificate
|
||||||
|
# auto_increment_increment: 1 # Auto Incrementing value from +1
|
||||||
|
# auto_increment_offset: 1 # Auto Increment Offset
|
||||||
|
# binlog-format: "STATEMENT" # contains various options such ROW(SLOW,SAFE) STATEMENT(FAST,UNSAFE), MIXED(combination of both)
|
||||||
|
# wait_timeout: 31536000 # 28800 number of seconds the server waits for activity on a non-interactive connection before closing it, You might encounter MySQL server has gone away error, you then tweak this value acccordingly
|
||||||
|
# interactive_timeout: 28800 # The number of seconds the server waits for activity on an interactive connection before closing it.
|
||||||
|
# max_allowed_packet: "512M" # Maximum size of MYSQL Network protocol packet that the server can create or read 4MB, 8MB, 16MB, 32MB
|
||||||
|
# max-binlog-size: 1073741824 # binary logs contains the events that describe database changes, this parameter describe size for the bin_log file.
|
||||||
|
# log_output: "TABLE" # Format in which the logout will be dumped
|
||||||
|
# master-info-repository: "TABLE" # Format in which the master info will be dumped
|
||||||
|
# relay_log_info_repository: "TABLE" # Format in which the relay info will be dumped
|
||||||
|
volumeSpec:
|
||||||
|
persistentVolumeClaim:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 10Gi
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
terraform {
|
# terraform {
|
||||||
required_providers {
|
# required_providers {
|
||||||
kubectl = {
|
# kubectl = {
|
||||||
source = "gavinbunney/kubectl"
|
# source = "gavinbunney/kubectl"
|
||||||
version = ">= 1.10.0"
|
# version = ">= 1.10.0"
|
||||||
}
|
# }
|
||||||
}
|
# }
|
||||||
required_version = ">= 0.13"
|
# required_version = ">= 0.13"
|
||||||
}
|
# }
|
||||||
|
|
|
||||||
51
modules/kubernetes/monitoring/server-power-cycle/main.py
Normal file
51
modules/kubernetes/monitoring/server-power-cycle/main.py
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
import asyncio
|
||||||
|
import logging
|
||||||
|
import os
|
||||||
|
import signal
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
|
||||||
|
import aiohttp
|
||||||
|
|
||||||
|
iDRAC_HOST = 'idrac'
|
||||||
|
iDRAC_USER_ENV_VAR = 'idrac_user'
|
||||||
|
iDRAC_PASSWORD_ENV_VAR = 'idrac_password'
|
||||||
|
SHOULD_RUN = True
|
||||||
|
|
||||||
|
|
||||||
|
def signal_handler(sig, frame):
|
||||||
|
logging.warning(f'signal {sig} received. shutting down gracefully...')
|
||||||
|
global SHOULD_RUN
|
||||||
|
SHOULD_RUN = False
|
||||||
|
time.sleep(60)
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
async def main() -> None:
|
||||||
|
# define signal handlers
|
||||||
|
signal.signal(signal.SIGINT, signal_handler)
|
||||||
|
|
||||||
|
user = os.environ.get(iDRAC_USER_ENV_VAR)
|
||||||
|
if user is None:
|
||||||
|
logging.critical('missing environment variable for idrac user'
|
||||||
|
f' please set {iDRAC_USER_ENV_VAR}')
|
||||||
|
return
|
||||||
|
|
||||||
|
password = os.environ.get(iDRAC_PASSWORD_ENV_VAR)
|
||||||
|
if password is None:
|
||||||
|
logging.critical('missing environment variable for idrac password'
|
||||||
|
f' please set {iDRAC_PASSWORD_ENV_VAR}')
|
||||||
|
return
|
||||||
|
|
||||||
|
logging.info('service initiated with credentials')
|
||||||
|
return await monitor(user, password)
|
||||||
|
|
||||||
|
|
||||||
|
async def monitor(user: str, password: str) -> None:
|
||||||
|
while SHOULD_RUN:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
# abandoned bc server cannot start itself when it's off :/
|
||||||
|
asyncio.run(main())
|
||||||
66
modules/kubernetes/monitoring/server-power-cycle/main.sh
Normal file
66
modules/kubernetes/monitoring/server-power-cycle/main.sh
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
tag=server-power-cycle-script
|
||||||
|
logger -t $tag start $(date '+%F-%R')
|
||||||
|
|
||||||
|
if [ -f /tmp/server-power-cycle-lock ]; then
|
||||||
|
logger -t $tag 'Script already running. exiting'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
touch /tmp/server-power-cycle-lock
|
||||||
|
|
||||||
|
|
||||||
|
if [ -f /root/server-power-cycle/state.off ]; then
|
||||||
|
logger -t $tag 'Server state set to off'
|
||||||
|
while true; do
|
||||||
|
sleep 60 # sleep 1 minute
|
||||||
|
logger -t $tag 'Trying to connect to idrac system...'
|
||||||
|
curl --connect-timeout 5 -s -k -u root:calvin -H"Content-type: application/json" -X GET https://192.168.1.4/redfish/v1/Chassis/System.Embedded.1/Power/PowerSupplies/PSU.Slot.2
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
logger -t $tag "Connected to idrac, assuming power is back on"
|
||||||
|
logger -t $tag "Power supply restored, sending power on command"
|
||||||
|
curl -s -k -u root:calvin -X POST -d '{"Action": "Reset", "ResetType": "On"}' -H"Content-type: application/json" https://192.168.1.4/redfish/v1/Systems/System.Embedded.1/Actions/ComputerSystem.Reset
|
||||||
|
rm /root/server-power-cycle/state.off
|
||||||
|
|
||||||
|
logger -t $tag end $(date '+%F-%R')
|
||||||
|
rm /tmp/server-power-cycle-lock
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
voltage=$(curl -s -k -u root:calvin -H"Content-type: application/json" -X GET https://192.168.1.4/redfish/v1/Chassis/System.Embedded.1/Power/PowerSupplies/PSU.Slot.2 |jq .LineInputVoltage)
|
||||||
|
# check input voltage on the pwoer supply connected to the outer system
|
||||||
|
if [[ $voltage -gt 0 ]]; then
|
||||||
|
logger -t $tag "power supply is on. exiting"
|
||||||
|
logger -t $tag end $(date '+%F-%R')
|
||||||
|
rm /tmp/server-power-cycle-lock
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
to_wait=30
|
||||||
|
echo "Continuously checking power supply for the next $to_wait minutes"
|
||||||
|
|
||||||
|
for i in $(seq 30); do
|
||||||
|
logger -t $tag "Sleeping a minute..Minute $i"
|
||||||
|
sleep 60
|
||||||
|
|
||||||
|
# check input voltage on the pwoer supply connected to the outer system
|
||||||
|
voltage=$(curl -s -k -u root:calvin -H"Content-type: application/json" -X GET https://192.168.1.4/redfish/v1/Chassis/System.Embedded.1/Power/PowerSupplies/PSU.Slot.2 |jq .LineInputVoltage)
|
||||||
|
if [[ $voltage -gt 0 ]]; then
|
||||||
|
logger -t $tag "power supply is on. exiting"
|
||||||
|
|
||||||
|
logger -t $tag end $(date '+%F-%R')
|
||||||
|
rm /tmp/server-power-cycle-lock
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
logger -t $tag "Power supply did not come back, sending graceful shutdown signal"
|
||||||
|
curl -s -k -u root:calvin -X POST -d '{"Action": "Reset", "ResetType": "GracefulShutdown"}' -H"Content-type: application/json" https://192.168.1.4/redfish/v1/Systems/System.Embedded.1/Actions/ComputerSystem.Reset
|
||||||
|
|
||||||
|
touch /root/server-power-cycle/state.off
|
||||||
|
rm /tmp/server-power-cycle-lock
|
||||||
|
logger -t $tag end $(date '+%F-%R')
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
terraform {
|
# terraform {
|
||||||
required_providers {
|
# required_providers {
|
||||||
kubectl = {
|
# kubectl = {
|
||||||
source = "gavinbunney/kubectl"
|
# source = "gavinbunney/kubectl"
|
||||||
version = ">= 1.10.0"
|
# version = ">= 1.10.0"
|
||||||
}
|
# }
|
||||||
}
|
# }
|
||||||
required_version = ">= 0.13"
|
# required_version = ">= 0.13"
|
||||||
}
|
# }
|
||||||
|
|
|
||||||
24
versions.tf
24
versions.tf
|
|
@ -1,12 +1,12 @@
|
||||||
terraform {
|
# terraform {
|
||||||
required_providers {
|
# required_providers {
|
||||||
kubernetes = {
|
# kubernetes = {
|
||||||
source = "hashicorp/kubernetes"
|
# source = "hashicorp/kubernetes"
|
||||||
}
|
# }
|
||||||
kubectl = {
|
# kubectl = {
|
||||||
source = "gavinbunney/kubectl"
|
# source = "gavinbunney/kubectl"
|
||||||
version = ">= 1.10.0"
|
# version = ">= 1.10.0"
|
||||||
}
|
# }
|
||||||
}
|
# }
|
||||||
required_version = ">= 0.13"
|
# required_version = ">= 0.13"
|
||||||
}
|
# }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue