1 Resume
2 ======
3 :author: Aaron Ball
4 :email: aaronb@oper.io
5 :website: https://oper.io
6 :sourcecode: https://oper.io/src
7 :mobile: +1 720-319-7799
8 :no title:
9
10 [role="resume-author-sect"]
11 --
12 [role="resume-author-name"]
13 Aaron +
14 Ball
15
16 [role="resume-author-contact"]
17 * {email}
18 * {mobile}
19 * {website}
20 * {sourcecode}
21 --
22
23
24
25 PROFILE
26 -------
27
28 * **Languages**: Bash (11 years), Python (3 years), C (3 years), Perl (4 years),
29 CSS and XHTML (8 years), PHP (versions 4 and 5 - 7 years), JavaScript (2
30 years)
31
32 * **Tools**: Git (9 years), Jenkins (7 years), Ansible (7 years), Terraform (3
33 years)
34
35 * **Linux**: 11 years - Crux, Ubuntu, CentOS, RedHat, Arch, Gentoo, and Debian
36
37 * Proficient in Linux infrastructure automation, security, troubleshooting,
38 design, and management; networking design, security, analysis, and
39 troubleshooting; and service design and abstraction.
40
41 * Knowledgeable in object oriented theory and its application in
42 infrastructure, security, and code design
43
44
45 EMPLOYMENT
46 ----------
47
48 [role="job"]
49 --
50
51 |====
52 | DataRobot, Denver, Colorado | December 2018 - present
53 | Software Engineer |
54 |====
55
56 * Worked on Development Infrastructure team automating processes and
57 infrastructure to support development, testing, monitoring, and analytics
58
59 * Automated cost metrics gathering and analysis of GitHub traffic to determine
60 causes of increased costs and worked with developers to reduce those costs
61 through on-system caching, sparse clones, and on-premise LFS hosting.
62
63 * Scripting in Python, Bash, and Makefile to automate processes
64
65 * Worked with Ansible, Packer, and Terraform to automate system build processes
66 (AWS AMIs, KVM backing disks, laptops)
67
68 * Fully migrated a three node Artifactory cluster from EC2 to Kubernetes using
69 Kustomize to manage multiple environments for testing. Upgrades and
70 maintenance now occur at any time during the day with no downtime for end
71 users.
72
73 * Migrated all Terraform Kubernetes code away from Terraform and into
74 Kubernetes native to improve reliability and state management.
75
76 * Version controlled thousands of Jenkins job configurations and enforced peer
77 review by storing all job configs in git repos as JJB (Jenkins Job Builder)
78 templates and deploying with automation on merge request review and approval.
79
80 * Built on-premises virtualization platform of over 230 KVM guest nodes to
81 lower costs in AWS. Clusters were completely autonomous and self-maintaining.
82 Automation registered nodes with their configured Jenkins masters on boot,
83 and deregistered, refreshed to a clean disk state, and reregistered after a
84 Jenkins job finished running, automatically maintaining a clean system state
85 for all jobs with no plugins required and 4 simple scripts.
86
87 * Defined upgrade process and worked with all concerned teams to upgrade
88 automation infrastructure from Ubuntu 16.04 to 18.04. Updated all automation
89 and testing code to be compatible with both versions.
90
91 * Automated Jenkins credential store management and synchronization across nine
92 Jenkins masters.
93
94 * Used Terraform combined with Jenkins, GitHub webhooks, and proprietary code
95 to intelligently programatically deploy and configure various AWS resources
96 (EC2, ELB/ALB, EKS, Route 53, S3) and underlying software to solve day-to-day
97 problems and handle varying loads
98
99 * Developed automated Docker image building and testing process for several
100 internal application services and migrated existing infrastructure to
101 containerized infrastructure where useful to increase scalability and speed
102 and decrease cost.
103 --
104
105
106
107 [role="job"]
108 --
109
110 |====
111 | Jeppesen, A Boeing Company, Denver, Colorado | August 2017 - October 2018
112 | Software Integration Engineer | * Contract
113 |====
114
115 * Worked on the environments team supporting about 80 developers
116
117 * Developed portable self-extracting installer to integrate and automate the
118 deployment process. The installer reduced a 40 page install document to a
119 single command using a bash header with a multi-stage binary payload footer.
120
121 * Automated Linux environment setup and management with Ansible 2.6. Wrote
122 roles for deploying and configuring Apache tomcat, Apache httpd, Apache
123 Artemis, Oracle JRE, program-developed software, etc.
124
125 * Automated software version inventory process to ensure the versions of all
126 pertinent external endpoints in every environment matched as the product
127 advanced through the phases of testing.
128
129 * Automated deployments to sixteen environments using Jenkins. Deployment
130 criteria were based on schedules, git repo tag creation, and commit pushes
131 (each environment with different criteria).
132
133 * Automated server configurations with Ansible. Wrote scripts to generate
134 dynamic playbooks and dynamic inventories. Roles were separated into two
135 tiers: the vendor tier and proprietary tier for separation of concerns.
136
137 * Built and administered Okta authentication backend (users, groups, signon
138 policies, service accounts, etc.), for twenty different application
139 instances.
140
141 * Assisted in planning and automation of migration from on-site datacenter to
142 Microsoft Azure.
143
144 * Primary operating systems: Centos 6.9 - 7.7, RHEL 6 - 7
145 --
146
147
148 [role="job"]
149 --
150
151 |====
152 | Truven Health Analytics, Denver, Colorado | January 2016 - August 2017
153 | Senior Development Operations Engineer |
154 |====
155
156 * Worked as a liason between devops, configuration management, development,
157 production operations, and application operations teams
158
159 * Created documented bash scripting framework to consistently automate builds,
160 deployments, and cluster switches. This reduced feature development time and
161 bug fix time. It also increased process scalability, visibility, and
162 stability.
163
164 * Implemented a configurable self-extracting package container [in bash] which
165 enabled complex scripts, frameworks, and resources to be reduced to a single
166 file and subsequently easily deployed.
167
168 * Wrote a configurable server validation scripting framework for ensuring any
169 given server met the team's deployment requirements for the specified server
170 role (eg: frontend, database, storage, tomcat, etc).
171
172 * Automated developer machine build process so developers would have consistent
173 environments in which to write, build, test, and deploy their code. This
174 reduced a 2 week per-employee setup time to about 15 minutes.
175
176 * Created a command line Artifactory api wrapper for managing artifacts using
177 Perl. Wrapper could download, upload, and copy artifacts to alternate repos
178 (eg: for a promotion process).
179
180 * Wrote Ansible roles to deploy and configure software such as MongoDB, Zabbix,
181 Graylog, Elasticsearch, Rsyslog, Tomcat, JDK, and others.
182
183 * Automated migration of more than 3200 SVN repos to Git.
184
185 * Established Git development processes for the team. This included release,
186 branching, tagging, and peer-review processes.
187
188 * Managed deployments using a combination of Ansible, Bash, Perl, and Jenkins.
189
190 * Reduced Jenkins-triggered infrastructure deployment process from
191 over 300 jobs down to five jobs.
192
193 * Primary operating systems: Centos 5.9 - 6.7, RHEL 5 - 6
194 --
195
196
197
198 [role="job"]
199 --
200
201 |====
202 | Time Warner Cable, Denver, Colorado | March 2015 - January 2016
203 | Senior DevOps Engineer |
204 |====
205
206 * Wrote a bash script to automatically upgrade the GitHub Enterprise cluster
207 with minimal human interraction. This also handled several workarounds to
208 unfixed bugs in the appliance software.
209
210 * Wrote parallel processing C program to benchmark legacy VMWare network
211 against new OpenStack network
212
213 * Wrote C program to parse 8 million firewall rules and nginx access logs to
214 determine how many were actually needed
215
216 * Managed configurations with Puppet Enterprise 3.2, r10k for dynamic
217 environment deployments, and Hieradata to support separation of data and
218 modules
219
220 * Assisted automating legacy VMWare infrastructure (54 hypervisors) to keep it
221 running smoothly until migration to OpenStack had been completed
222
223 * Primary operating systems: Centos 6.5 and 6.6
224 --
225
226
227 [role="job"]
228 --
229
230 |====
231 | CenturyLink, Inc., Denver, Colorado | August 2014 - February 2015
232 | Linux Engineer | * Contract
233 |====
234
235 * Deployed and managed Mapr (Hadoop distribution) for development and test
236 clusters
237
238 * Wrote bash script to manage and synchronize users and their home directories,
239 detect and allocate unique uid/gid pairs, and perform various user-related
240 checks across a cluster of any size
241
242 * Set up HAProxy for TCP forwarding of LDAPS traffic from corporate into the
243 lab (dev/test) network for authentication
244
245 * Performed various MediaWiki administrative tasks (backups, page management,
246 writing templates, etc).
247
248 * Built a team Gitlab server and organized and established team version control
249 processes
250
251 * Wrote Ansible playbooks to deploy and configure various types of servers
252
253 * Worked primarily with CentOS 6.5, 6.6, 7 (a few hundred), as well a few
254 one-off Ubuntu servers
255 --
256
257
258 [role="job"]
259 --
260
261 |====
262 | Intelligent Software Solutions, Inc., Denver, Co | March 2014 - August 2014
263 | DevOps Engineer | * Contract
264 |====
265
266 * Wrote chef (version 10) cookbooks (recipes, documentation, templates,
267 providers, resources, etc.) to deploy base tomcat instances and overlay any
268 combination of wars across any number of systems
269
270 * Wrote chef cookbook compatibility layer for Windows-specific deployments
271 using cookbooks designed for Linux
272
273 * Built a local virtual chef development environment running on kvm, managed
274 with libvirt apis. VMs could be created from a template in about two to five
275 seconds each.
276 --
277
278
279 [role="job"]
280 --
281
282 |====
283 | DaVita, Denver, Co | October 2012 - March 2014
284 | Linux/Unix Systems Engineer |
285 |====
286
287 * Administered AIX (5.3 and 6.1) and Linux (RedHat 4 - 6)
288
289 * Standardized, consolidated, and converted team documentation from
290 Sharepoint Shared Documents to MediaWiki
291
292 * Audited and remediated security holes to harden Linux and AIX servers
293
294 * Wrote and documented a Perl script to gather data and generate a report
295 detailing all of the local and Active Directory users with access to the
296 company-wide FTP site.
297
298 * Wrote and documented a Perl script to generate sudoers SOX compliance
299 reports. The script parsed the global sudoers file and queried Active
300 Directory to determine who had permissions to sudo run what commands on which
301 systems.
302
303 * Wrote a bash script to perform automated SSH key rotation every three months
304 and when an employee left
305 --
306
307
308 [role="job"]
309 --
310
311 |====
312 | Dish Network, Englewood, Co | January 2011 - October 2012
313 | Tier II Analyst / Developer II |
314 |====
315
316 * Managed about 1,100 middleware application instances (WebMethods, Weblogic,
317 and Apache Tomcat) running on Solaris and Linux
318
319 * Wrote Perl scripts to process log files, gather statistics, perform software
320 upgrades, manage rolling restarts, etc.
321 --
322
323
324 [role="job"]
325 --
326
327 |====
328 | USDA, Fort Collins, CO | August 2010 - December 2010
329 | Windows Systems Administrator | * Contract
330 |====
331
332 * Built and configured Red Hat Enterprise Linux (version 5) web servers
333 tailored for each project
334
335 * Analyzed test environment needs to designed scaled down test environments
336 based upon network architecture diagrams of the proposed production
337 environment
338
339 * Constructed test clusters (one controller and two test agents each) for load
340 testing with Visual Studio
341 --
342
343
344 [role="job"]
345 --
346
347 |====
348 | AMG Creative, Inc., Fort Collins, CO | August 2009 - August 2010
349 | Web Developer / Systems Administrator |
350 |====
351
352 * Programmed websites on Joomla and Wordpress using PHP, JavaScript, HTML, and
353 CSS.
354
355 * Built and managed five servers (one virtual [Domain controller, file server,
356 terminal server, backup server], another virtual [OpenVPN], one host [VMWare
357 Server], one print server [Ubuntu 10.04], one backup server [Ubuntu 10.04])
358 --
359
360
361 [role="job"]
362 --
363
364 |====
365 | CSU College of Business, Fort Collins, Co | August 2007 - October 2009
366 | Web Developer / Systems Administrator |
367 |====
368 --
369
370
371
372 EDUCATION
373 ---------
374
375 [role="job"]
376 --
377
378 |====
379 | Colorado State University, Fort Collins, CO | 2007-2010
380 | Bachelors in Business Administration |
381 |====
382
383 _Concentration_: Computer information Systems
384
385 Courses included Windows and Linux administration, Networking, SQL database
386 design and implementation, web application development (creating ASP.Net/C# and
387 Cold Fusion applications that accessed a database and used sessions), client
388 side application development (Visual Basic.Net), business math, marketing,
389 finance, accounting, and business communication.
390 --
391
392 [role="witty-remark"]
393 /* This resume was proudly generated with Asciidoctor, some clever css, and a
394 Makefile */
|