simplified the code. re-learned the lessons from my previous custom markdown pre processing. much better...

This commit is contained in:
Charles N Wyble 2024-11-18 10:02:13 -06:00
parent c08375b657
commit 3350a05b3e
34 changed files with 107 additions and 287 deletions

View File

@ -1,3 +1,6 @@
## Contact Info
Charles N Wyble Charles N Wyble
Senior Systems Engineer Senior Systems Engineer
reachableceo@reachableceo.com reachableceo@reachableceo.com

View File

@ -1,3 +1,4 @@
Education
## Education
High School Graduate , 2002 High School Graduate , 2002

View File

@ -1,3 +0,0 @@
README
This is my short and sweet resume for recruiters/hiring managers. It's meant primarily for human consumption. It links to more detailed profile (Linkedin).

View File

@ -1,3 +1,6 @@
## Projects
- Fedora to Debian field switch - Fedora to Debian field switch
- Datacenter buildout in 86 days for 8 billion dollars - Datacenter buildout in 86 days for 8 billion dollars
- Global AD build out/PCI compliance - Global AD build out/PCI compliance

View File

@ -1,13 +1,21 @@
- Linux: RHEL/Debian/Ubuntu, kickstart, PXE, LDAP, SSSD, RPM/Deb package creation, quotas, extended permissions, AppArmor, SeLinux, Centrify, Tripwire, Integrit, OSSEC. 22 years
## Skills
- Linux: RHEL/Debian/Ubuntu, kickstart, PXE, LDAP, SSSD, RPM/Deb package creation, quotas, extended permissions, clustering , AppArmor, SeLinux, Centrify, Tripwire, Integrit, OSSEC. 22 years
- Unix: HPUX/Solaris 5 years
- Windows: Server (2008 - 2016), Windows client automated deployment (7,8,10,11), Active Directory, Group Policy, WSUS, Certificate Services, AD DNS, AD DHCP, complex multiple forest and domain setups, LDAP. 22 years - Windows: Server (2008 - 2016), Windows client automated deployment (7,8,10,11), Active Directory, Group Policy, WSUS, Certificate Services, AD DNS, AD DHCP, complex multiple forest and domain setups, LDAP. 22 years
- Server software: Apache, Postfix, Qmail, Dovecot, Courier, Nginx, Matamo, Discourse, Wordpress, Mautic,Dolibarr, Revive, Firefly, Cloudron, Coolify, Gitea, Gitlab, GitHub, Git, Jenkins, Rundeck, N8N, Mysql,Postgresql, LetsEncrypt, ACME, cfssl. 22 years. - Server software: Apache, Postfix, Qmail, Dovecot, Courier, Nginx, Matamo, Discourse, Wordpress, Mautic,Dolibarr, Revive, Firefly, Cloudron, Coolify, Gitea, Gitlab, GitHub, Git, Jenkins, Rundeck, N8N, Mysql,Postgresql, LetsEncrypt, ACME, cfssl. 22 years.
- Security: PCI Compliance, security hardening,audits, breach response and mitigation, patch and vulnerability management. 22 years - Security: PCI Compliance, security hardening,audits, breach response and mitigation, patch and vulnerability management. 22 years
- Networking: HAProxy, Ubiquiti Unifi, Opnsense, Pfsense, HP, Cisco, Arista, Dell, DNS, DHCP, IPAM, PXE, IPS, IDS, GRE, IPSEC. Wireguard, OpenVPN, Nebula, Tailscale, RADIUS. Mostly layer2 data center/campus/access some WAN,firewall,layer3. 22 years - Networking: Linux Virtual Server, HAProxy, Ubiquiti Unifi, Opnsense, Pfsense, HP, Cisco, Arista, Dell, DNS, DHCP, IPAM, PXE, IPS, IDS, GRE, IPSEC. Wireguard, OpenVPN, Nebula, Tailscale, RADIUS. Mostly layer2 data center/campus/access some WAN,firewall,layer3. 22 years
- Monitoring: librenms, zabbix, zenoss, nagios 22 years - Monitoring: librenms, zabbix, zenoss, nagios 22 years
- Storage: NFS, Samba, CIFS, Netapp, ZFS, True/Free NAS, 3par, MSA, Equallogic, EMC, generic iscsi. 22 years - Storage: NFS, Samba, CIFS, Netapp, ZFS, True/Free NAS, 3par, MSA, Equallogic, EMC, generic iscsi. 22 years
- Virtualization: VmWare, HyperV, KVM, Xen. 22 years. - Virtualization: VmWare, Parallels,HyperV, KVM, Xen. 22 years.
- Git: branching, merging, multiple teams, external vendors, submodules etc. 15 years - Git: branching, merging, multiple teams, external vendors, submodules etc. 15 years
- Containerization: LXC, Docker, Compose. 12 years - Containerization: LXC, Docker, Compose. 12 years
- Packer/Ansible 2 years - Packer/lVault 2 years
- Configuration management: Slack, Cfengine, Puppet, FetchApply, Ansible (20 years) - Configuration management: Slack, Cfengine, Puppet, FetchApply, Ansible (20 years)
- Embedded: Raspberry pi, arduino, seeduino, Lego Mindstorms , 5 years.
- Programming/Automation: Bash , J2ME, PHP, Ruby, PowerShell, TCL/TK, Java. 10!years.
- Ticket / incident / project management: Jira, ServiceNow,Redmine,RT. 20 years.
- Currently learning: GCP, AWS, Azure, Kubernetes, Helm (1 year in dev labs) - Currently learning: GCP, AWS, Azure, Kubernetes, Helm (1 year in dev labs)

View File

@ -1,3 +1,6 @@
## Work History
- Insight Global - CDK Global , Senior Systems Engineer, July 2024 - October 2024 - Insight Global - CDK Global , Senior Systems Engineer, July 2024 - October 2024
- TCS - Apple Computer - Senior Systems Engineer, March 2024 - July 2024 - TCS - Apple Computer - Senior Systems Engineer, March 2024 - July 2024
- Shein.com - Senior SIte Reliability Engineer, December 2022 - August 2023 - Shein.com - Senior SIte Reliability Engineer, December 2022 - August 2023
@ -7,4 +10,7 @@
- HostGator - Automation and Escalation Engineer, March 2011 - May 2012 - HostGator - Automation and Escalation Engineer, March 2011 - May 2012
- RippleTV - Senior Systems Administrator, October 2008 - Jaunary 2010 - RippleTV - Senior Systems Administrator, October 2008 - Jaunary 2010
- Walt Disney Internet Group - Site Reliability Engineer, August 2006 - September 2007 - Walt Disney Internet Group - Site Reliability Engineer, August 2006 - September 2007
- Electronic Clearing House - Senior System Administrator - April 2005 - July 2006
- GSI Commerce - Systems Administrator - March 2002 - February 2005 - GSI Commerce - Systems Administrator - March 2002 - February 2005
- Contracting/consulting - Resident Expert System/Network Admin and Programmer 2002 - 2022

View File

@ -0,0 +1,21 @@
#!/bin/bash
# Combine markdown files into single input file for pandoc
NonCvResumeInputFiles=(
"../../common/@ReachableCEO/Resume/Common/Contact-Info.md"
"../@ReachableCEO/Resume/Non-CV/Skills.md"
"../@ReachableCEO/Resume/Non-CV/Projects.md"
"../@ReachableCEO/Resume/Non-CV/Work-History.md"
"../../common/@ReachableCEO/Resume/Common/Education.md"
)
rm ../output/intermediate/CharlesNWybleShortResume.md
IFS=$'\n\t'
for file in "${NonCvResumeInputFiles[@]}"; do
cat $file >> ../output/intermediate/CharlesNWybleShortResume.md
done
unset IFS
# Run pandoc to generate PDF/DOC into output dir

View File

@ -0,0 +1,57 @@
## Contact Info
Charles N Wyble
Senior Systems Engineer
reachableceo@reachableceo.com
818 280 7059
Austin TX / Raleigh NC / Remote
## Skills
- Linux: RHEL/Debian/Ubuntu, kickstart, PXE, LDAP, SSSD, RPM/Deb package creation, quotas, extended permissions, clustering , AppArmor, SeLinux, Centrify, Tripwire, Integrit, OSSEC. 22 years
- Unix: HPUX/Solaris 5 years
- Windows: Server (2008 - 2016), Windows client automated deployment (7,8,10,11), Active Directory, Group Policy, WSUS, Certificate Services, AD DNS, AD DHCP, complex multiple forest and domain setups, LDAP. 22 years
- Server software: Apache, Postfix, Qmail, Dovecot, Courier, Nginx, Matamo, Discourse, Wordpress, Mautic,Dolibarr, Revive, Firefly, Cloudron, Coolify, Gitea, Gitlab, GitHub, Git, Jenkins, Rundeck, N8N, Mysql,Postgresql, LetsEncrypt, ACME, cfssl. 22 years.
- Security: PCI Compliance, security hardening,audits, breach response and mitigation, patch and vulnerability management. 22 years
- Networking: Linux Virtual Server, HAProxy, Ubiquiti Unifi, Opnsense, Pfsense, HP, Cisco, Arista, Dell, DNS, DHCP, IPAM, PXE, IPS, IDS, GRE, IPSEC. Wireguard, OpenVPN, Nebula, Tailscale, RADIUS. Mostly layer2 data center/campus/access some WAN,firewall,layer3. 22 years
- Monitoring: librenms, zabbix, zenoss, nagios 22 years
- Storage: NFS, Samba, CIFS, Netapp, ZFS, True/Free NAS, 3par, MSA, Equallogic, EMC, generic iscsi. 22 years
- Virtualization: VmWare, Parallels,HyperV, KVM, Xen. 22 years.
- Git: branching, merging, multiple teams, external vendors, submodules etc. 15 years
- Containerization: LXC, Docker, Compose. 12 years
- Packer/lVault 2 years
- Configuration management: Slack, Cfengine, Puppet, FetchApply, Ansible (20 years)
- Embedded: Raspberry pi, arduino, seeduino, Lego Mindstorms , 5 years.
- Programming/Automation: Bash , J2ME, PHP, Ruby, PowerShell, TCL/TK, Java. 10!years.
- Ticket / incident / project management: Jira, ServiceNow,Redmine,RT. 20 years.
- Currently learning: GCP, AWS, Azure, Kubernetes, Helm (1 year in dev labs)
## Projects
- Fedora to Debian field switch
- Datacenter buildout in 86 days for 8 billion dollars
- Global AD build out/PCI compliance
- other cool project (go through CV to find) #todo
- other cool project (go through CV to find) #todo
## Work History
- Insight Global - CDK Global , Senior Systems Engineer, July 2024 - October 2024
- TCS - Apple Computer - Senior Systems Engineer, March 2024 - July 2024
- Shein.com - Senior SIte Reliability Engineer, December 2022 - August 2023
- 3M - Site Reliability Engineer, March 2020 - November 2022
- Dell Residency - Senior Systems Engineer, October 2019 - March 2020
- TippingPoint - Senior Systems Engineer, March 2012 - June 2019
- HostGator - Automation and Escalation Engineer, March 2011 - May 2012
- RippleTV - Senior Systems Administrator, October 2008 - Jaunary 2010
- Walt Disney Internet Group - Site Reliability Engineer, August 2006 - September 2007
- Electronic Clearing House - Senior System Administrator - April 2005 - July 2006
- GSI Commerce - Systems Administrator - March 2002 - February 2005
- Contracting/consulting - Resident Expert System/Network Admin and Programmer 2002 - 2022
## Education
High School Graduate , 2002

View File

@ -1,12 +0,0 @@
# ReachableCEOShellFramework
## Introduction
My shell scripting framework developed over 20 years of coding bash professionally.
This is a collection of code/functions/templates/methodologies I've put together over 20 years of coding.
* Error handling/tracing
* Help
* Robust CLI argument handling

View File

@ -1,12 +0,0 @@
#<project name>
## Introduction
This is a project.It does stuff..
## Assumptions
## Requirements
## Dependencies

View File

@ -1,33 +0,0 @@
function DebugMe() {
[[ $script_debug = 1 ]] && "$@" || :
#to turn debugging on, set script_debug=1
#to turn debugging off, set script_debug=0
# be sure to append || : or || true here or use return 0, since the return code
# of this function should always be 0 to not influence anything else with an unwanted
# "false" return code (for example the script's exit code if this function is used
# as the very last command in the script)
#This function does nothing when script_debug is unset or empty, but it executes the
#given parameters as commands when script_debug is set. Use it like this:
#debugme logger "Sorting the database"
#database_sort
#debugme logger "Finished sorting the database, exit code $?"
# * print commands to be executed to stderr as if they were read from input
# (script file or keyboard)
# * print everything before any ( substitution and expansion, …) is applied
set -v
# * print everything as if it were executed, after substitution and expansion is applied
# * indicate the depth-level of the subshell (by default by prefixing a + (plus) sign to
# the displayed command)
# * indicate the recognized words after word splitting by marking them like 'x y'
# * in shell version 4.1, this debug output can be printed to a configurable file
#descriptor, rather than sdtout by setting the BASH_XTRACEFD variable.
set -x
}

View File

@ -1,13 +0,0 @@
#!/bin/bash
function LocalHelp()
{
echo "$0 is <description here>"
echo "$0 takes <num> arguments: "
echo "1) <stuff>"
echo "2) <other stuff>"
echo "<additional info on arguments...>:"
echo "<put>"
echo "<stuff>"
echo "<here>"
}

View File

@ -1,13 +0,0 @@
#!/bin/bash
function LookupKV()
{
#Arguments:
#$1 <path to key/value table>
#$2 unique record identifier
#Returns:
#Variable/array containing all the values in the record
}

View File

@ -1,31 +0,0 @@
#!/bin/bash
function PreflightCheck()
{
#Common things I check for in the scripts I write.
#export curr_host="$(hostname)"
#export curr_user="$USER"
#export host_check="$(echo $curr_host | grep -c <desired hostname>)"
#export user_check="$(echo $curr_user | grep -c <desired username>)"
#if [ $host_check -ne 1 ]; then
# echo "Must run on <desired host>."
# error_out
#fi
#if [ $user_check -ne 1 ]; then
# echo "Must run as <desired user>."
# error_out
#fi
#if [ "$ARG_COUNT" -ne <the right num> ]; then
# help
# error_out
#fi
#Your additional stuff here...
echo "All checks passed...."
}

View File

@ -1,8 +0,0 @@
#!/bin/bash
bail_out()
#Exit code
{
echo "Exiting...."
exit 0
}

View File

@ -1,23 +0,0 @@
#!/bin/bash
function error_out()
{
echo "Bailing out. See above for reason...."
exit 1
}
function handle_failure() {
local lineno=$1
local fn=$2
local exitstatus=$3
local msg=$4
local lineno_fns=${0% 0}
if [[ "$lineno_fns" != "-1" ]] ; then
lineno="${lineno} ${lineno_fns}"
fi
echo "${BASH_SOURCE[0]}: Function: ${fn} Line Number : [${lineno}] Failed with status ${exitstatus}: $msg"
}
trap 'handle_failure "${BASH_LINENO[*]}" "$LINENO" "${FUNCNAME[*]:-script}" "$?" "$BASH_COMMAND"' ERR

View File

@ -1,41 +0,0 @@
#!/bin/bash
function StrictMode()
{
# Standard strict mode and error handling boilderplate..
# This is a function I include and execute in every shell script that I write.
# It sets up a bunch of error handling odds and ends
# Bits and pieces Sourced from (as best I recall):
# * https://news.ycombinator.com/item?id=24727495
# * many other hacker news / slashdot etc posts over the years
# * https://www.tothenew.com/blog/foolproof-your-bash-script-some-best-practices/
# * https://translucentcomputing.com/2020/05/unofficial-bash-strict-mode-errexit/
# * http://redsymbol.net/articles/unofficial-bash-strict-mode/
# * the school of hard knocks... (aka my code failures...)
#Here's the beef (as the commercial says..)
#use errexit (a.k.a. set -e) to make your script exit when a command fails.
#add || true to commands that you allow to fail.
set -o errexit
# Use set -o nounset (a.k.a. set -u) to exit when your script tries to use undeclared
# variables.
set -o nounset
#Use set -o pipefail in scripts to catch (for example) mysqldump fails
#in e.g. mysqldump |gzip.
#The exit status of the last command that threw a non-zero exit code is returned
set -o pipefail
#Function tracing...
set -o functrace
export PS4='(${BASH_SOURCE}:${LINENO}): - [${SHLVL},${BASH_SUBSHELL},$?] $ '
}

View File

@ -1,66 +0,0 @@
#!/bin/bash
#Framework variables are read from hee
source vars/FrameworkVars
#Boilerplate and support functions
FrameworkIncludeFiles="$(ls -1 --color=none includes/*)"
IFS=$'\n\t'
for file in ${FrameworkIncludeFiles[@]}; do
. "$file"
done
unset IFS
if [[ ProjectIncludes = 1 ]]; then
ProjectIncludeFiles="$(ls -1 --color=none project-includes/*)"
IFS=$'\n\t'
for file in ${ProjectIncludeFiles[@]}; do
. "$file"
done
unset IFS
fi
#####
#Core framework functions...
#####
while [ ! -z "$1" ];do
case "$1" in
-h|--help)
LocalHelp
;;
-k1|--key1)
shift
KEY1="$1"
echo "key 1 is $KEY1"
;;
-k2|--key2)
shift
KEY2="$1"
echo "key 2 is $KEY2"
;;
*)
echo "Displaying $0 help..."
LocalHelp
esac
shift
done
function main()
{
StrictMode
if [ PreflightCheck = 1 ]; then
PreflightCheck
fi
#Your custom logic here....
echo "Custom logic here..."
}
main

View File

@ -1,5 +0,0 @@
#Global Variables used by the framework
export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
export ProjectIncludes="0"
export PreflightCheck="0"

View File

@ -1,19 +0,0 @@
#Place (primary/unique) key as very first argument on each record below
#Value Fields are (in order), (reference KEY_(VARIABLE) names in the code):
#1)valuex (description)
#2)valuey (description)
#3)valuez (description)
#An example:
#unique key of serverfqdn
#key of: subnet , value of: 10.10.10.0/24
#key of: gateway, value of: 10.10.10.1
#serverfqdn,10.10.10.0/24,10.10.10.1
#Place your records below:
#primary/uniquekey,#value
primarykey1,valuex,valuey,valuez
primarykey2,valuex,valuey,valuez