I've done some web programming in the past, but gradually I became more interested in the operations side of things.
But unlike apps, I'm not sure how to showcase a particular "devops project" to future employers. I've used docker/vagrant for local development, ansible for configuration management, jenkins, etc. But these aren't necessarily something I can talk about hours on end.
I'm planning to find a devops internship position, but until then, is there something I could work on?
First things that come to mind:
- You can create puppet modules, Chef recipes, SaltStack formulas (not familiar with Ansible but sure as hell has similar features)
- You can get certifications (Chef, Puppet, SaltStack, Ansible, etc.)
- You can get DB certifications and write your experiences about master/slave configurations, etc.
- Orchestration and schedulers tools, k8s, mesos/marathon.
- You can get certified for AWS, GCE and Azure.
- Became proficient in Bash, Fabric/Capistrano. Display some automation scripts on your blog/github-repo. Can you configure a firewall to fetch a list of IPs (say porn websites) from the internet and block or redirect access to these IPs using bash?
- Study distributed systems, replication, possible problems (split brain, etc.). How does consul/etcd/zookeeper reach consensus. When to use one tool over another, why not use Redis instead of consul?!
- Study big data on Coursera (hadoop/cloudera/HDFS/MapReduce)...
It's a never-ending story. Just take a look at look[1] at what companies are requesting. A devops should be able to write code (with varying degrees of expertise) and understand architectural/design challenges. I'm not saying you need to know everything - you can't, there are simply too many tools around - but you have to learn at least some of them and you can explain what you learn via blog posts or github code.
[1] https://weworkremotely.com/categories/6-devops-sysadmin/jobs...
Source: Linux|Sys|Network Admin/IT Manager who moved into DevOps.
* Observatory by Mozilla || https://observatory.mozilla.org/
Tool to help quickly tell what a site is running as a CMS:
* Wappalyzer || https://wappalyzer.com/
If you wanted to make a few bucks... do some simple disaster recovery work... make sure they are at least doing on-server backups -- at minimum. Make sure they have rudimentary security... Fail2Ban is easy to setup. Most SMBs do very little for web security, and haven't really thought ahead to what happens when the shit hits the fan (and it wouldn't raise any red flags for them to hire a bright college kid to do this sort of work). If they see a website come up when they click on a link, they think, "Hooray it works, and it'll work forever!"
If you wanted another up-sell option... offer a cheap monthly retainer to do uptime / content monitoring, application performance monitoring, server health monitoring, and access log monitoring. If you just want experience, set the price low... you can always up the price as you get more experience / more practice with these tools and automating the setup for them. Or offer to help them with general IT (this is a black hole time sink, but cool if you need beer money). Or offer to show them how password managers work. Or setup backup systems for their computers (Backblaze is great). Or... once you get a foot in the door you'll see more opportunities.
If a college kid came to me with hands-on experience completing a valuable task for 10-25 real-world businesses... I'd be really impressed.
EDIT: The above is pretty much how I paid for college. Graduated form an Ivy League school, paid every cent of it myself (no loans or financial aid), ended up with over $100k in the bank more than when I started. Got into business doing email migrations for a hospital chain, got my foot in the door with a lot of doctor's offices, grew that business from there to general IT, basic HIPAA compliance, website development, a bunch of just random "tech services" -- lots of great hands-on-training for me along the way.
And how much is a "few bucks"? I've done some freelancing work, and I made the mistake of setting the price too low when I first started. I'm pretty oblivious to the business side of things, but I get the feeling that they use price as one of the determining factors for quality. I admit I fall into that trap whenever I purchase something without research.
In terms of what to charge... totally depends on the situation (what services you're offering, who you're offering it to, and the market you're in). I don't generally think people are afraid of paying too little... certainly like $25 / hour -- most SMBs would love paying something like that for the work, and it's about what you'd make hauling sofas and moving boxes around... just a lot easier on your back. You can come off as very high quality, and still have a low price... my guess is you aren't instilling confidence in your presentation. Easy to fix... take a public speaking class, dress a little nicer (suits never hurt), and carry a notebook (http://www.staples.com/Staples-Composition-Notebook-College-...) -- this gives people confidence to see you're an active listener and making a to-do list of action items (http://lifehacker.com/5575748/best-to-do-list-manager-paper).
Spend an hour on Yelp generating a prospect list... find all the local businesses that use WordPress, practice your elevator pitch, then clean yourself up and go walk around asking to speak with the manager.
To build a portfolio, I would suggest the following:
- Create a document describing a small tech stack:
> Outline the systems (or list of docker containers)
> Draw a network diagram showing IPs / subnet(s) info
> Describe the OS(s) and base node configuration (ssh, NFS, etc...)
> Outline the software stack (on each system), describing connections between nodes (eg. Apache web server with PHP, connecting to Postgres on port 5432)
- Create a github repo
> add the above document as the README.md file
> add a SETUP.md document (or add to the README) with steps to setup a local ansible workspace, and deploy your stack with your configuration scripts
- Set up a local (or cloud) environment with your Jenkins pipeline, and document a deployment (with screenshots) showing a working stack configured from a set of clean nodes.
- Expand on what you've made (create a new repo for each! think of them as new projects with a different set of requirements, even if they build on what you've previously done). Try to focus on one thing at a time:
> SSL everywhere
> OS hardening
> failover / clustering of the database
> failover / clustering of the web/app server
> load balancer in front of the web tier
If I saw the above from anyone, I'd be impressed. If you have any questions, feel free to message and start a conversation offline. Best of luck!Friend of mine had a spare server lying around so we persuaded departmental sysadmin to host it.
One of the key elements of DevOps is automation. If you can make sure everything you do is in a public git repo, then you just need to show that to future employers. It doesn't have to be a working app, it can also be an Ansible playbook.