DGPLUG Summer Training Logs for 2018/08/09

16:02 : kushal #startclass
16:02 : Roll Call
16:02 : cypher01 Naman Sharma
16:02 : prabhuss Prabhu Sharan Singh
16:02 : storymode7 Mayank Singhal
16:02 : jasonbraganza Jason Braganza
16:02 : jeet__ Amitrajit Bose
16:02 : ann Anu Kumari Gupta
16:02 : ash_mishra Ashish Kumar Mishra
16:02 : pradhvan Pradhvan Bisht
16:02 : man-jain Manank Patni
16:02 : inquiridortechie Neeraj Kumar Arya
16:02 : akshayg96 Akshay Gaikwad
16:02 : ananyo Ananyo Maiti
16:02 : prokbird tabrez khan
16:02 : mzeeqazi Muhammad Zeeshan Qazi
16:02 : __rex__ Rakshit Airani
16:02 : sandeepK[m] Sandeep kumar Choudhary
16:03 : sd30 Shruti Dash
16:03 : t3chn0tr0n Avik Mukherjee
16:03 : bhavin192 Bhavin Gandhi
16:04 : kushal Perfect
16:04 : nightwarriorxxx[ Aman Verma
16:04 : kushal bkero, welcome :)
16:04 : bkero, stage is yours.
16:04 : bkero Hi kushal, thanks for inviting me.
16:05 : Hi all, my name is Ben Kero, and currently I'm a senior devops engineer over at Brave Software, doing CI work and automation. My career has always been free software focused.
16:06 : Just a quick background -- I basically self-taught myself about doing operations tasks. I started with a dialup connection and wanted to try running a web site since that seemed like the cool thing to do at the time. I would set this up on my desktop and basically serve pages to myself.
16:07 : I used this kind of technique to learn more and more, like sharing files between 2 computers using Windows filesharing (SAMBA). This was in a time before USB sticks.
16:09 : After I graduated from high school I had relocated with my mom to the bay area and started working at some side gigs doing phone support. By this time I was reading Slashdot, and noticed that Linuxworld was going on in town the same time I was there.
16:09 : Rayan_ Sorry got disconnected. Roll: Rayan Das
16:09 : bkero Hiya o/
16:10 : I had seen the OSU Open Source Lab in the news, and cold-emailed the speaker to see if I would be able to get a ticket to attend his talk. His talk was about 'open source in education'. It wasn't a very interesting topic back then, so when I got there I had noticed that I was the only person to show up.
16:11 : souvikhaldar souvikhaldar
16:11 : bkero We got to talking about what the Oregon State University Open Source Lab does. They provide server hosting for open source projects. This was in 2004 or so when cloud services or GitHub didn't exist. This excited me because it was a way that I would be able to grow my skill set, do what I'm passionate about (improving the free software community), and go to school at the same time.
16:13 : I eventually transferred up there and started in that position for the next school year. From then on I've basically been a career sysadmin, although now I'm doing a lot of SRE and DevOps work. I became a Student System Administrator there and got to work with a bunch of large free software projects. That turned into internships at Google, Intel, and Mozilla. After school I worked in Mozilla IT for 5 years,
16:13 : then decided I wanted to help solve the missing free software cloud problem, so I moved to Red Hat for 2 years.
16:14 : After that I followed a friend to a startup trying to sell private open source clouds to people. That business basically failed last May, so I started talking with some of my old Mozilla colleagues and was offered a position at Brave Software doing DevOps.
16:15 : From an operations perspective I contribute to a lot of open source projects, mostly configuration management like ansible and puppet, but also to a large variety of open source projects. Whenever I find a bug in something I try to send them a pull request or issue or mailing list post. Or I go in their IRC channel and ask if the behavior is a bug. :)
16:15 : So my average contribution to each project is 1.
16:17 : The main way I keep my knowledge up to date is by following a lot of feeds in my RSS reader. This allows me to read through news sources that I care about quickly. For keeping technical skills up to date I like to learn new programming languages by writing an example program in it.
16:18 : One example of this is Rust and IRCat. IRCCat is a special kind of IRC bot that is conceptually very simple. It is a process that connects to IRC and listens on network port for any incoming plaintext connections. Then it echoes that text out of the IRC bot. I use it for example to connect my incoming mail to IRC, echoing the subjects to a secret channel.
16:19 : Rust is still a young language, and has good networking libraries, but at the time did not have good IRC libraries. That would be a good angle to not only learn about the IRC protocol and the rust programming language, but to be able to contribute to the Rust ecosystem too!
16:20 : I'm not quite sure how this is supposed to work, but does anyone have a question?
16:20 : kushal Please raise your hands.
16:20 : j605 !
16:20 : souvikhaldar !
16:20 : jeet__ !
16:20 : kushal bkero, you can type next to take a question.
16:21 : bkero next
16:21 : ananyo !
16:21 : j605 What does a devops person do in general? Can you please explain your role in Brave
16:23 : bkero So a couple of years ago 'devops' was a term that was filled with mystery. Not many people (especially in business) knew what it meant. They just knew that they had to have it. These days it has some more clear definition. It's typically an engineer who is on a team that develops software. Their role is to provide resources for the other team members to use to make the software better.
16:24 : One example of this is Continuous Integration, or CI. As a concept this basically means that whenever someone commits code or attempts to contribute code (like a pull request), the code will be tested to make sure it doesn't break anything and that it meets certain requirements.
16:24 : Like making sure that it uses 4 spaces instead of tabs
16:25 : That way the developers can get quick feedback about if their contribution is good or if they need to improve it and re-submit it.
16:26 : They also provide all the operations tasks for a software project like monitoring and metrics. If the software is a web site, that means that the devops person will set up monitoring software that will notify them or automatically fix it if it goes down. The metrics part is for graphs to measure how many page loads are coming in, which pages people are seeing, etc.
16:26 : prabhuss !
16:26 : bkero And quickly...
16:27 : __rex__ !
16:27 : bkero My role at Brave is a devops engineer on the 'devops team'. I have been writing a lot of Terraform recently in an effort to do a practice called 'infrastructure as code'. This allows us to quickly redeploy infrastructure pieces in new regions or make exact copies in a sandbox to test out a new feature.
16:28 : I hope this answers your question :)
16:28 : next
16:28 : souvikhaldar Which is a better for devops, Docker with Kubernetes or Ansible? And why?
16:28 : j605 bkero: thanks a lot :)
16:30 : bkero Hmm. It really depends. If you have a kubernetes offering that you use and you're happy with it, and all the software that you use already has good Docker images, then it has advantages. It means there are no servers to manage (except the Kubernetes nodes). Where that starts to break down is software that doesn't have ready-made Docker images, or any non-web software.
16:30 : Making your own Docker images for software pieces that don't support it can be more work than just writing a shell script to deploy it, or writing an ansible task/role to deploy it to a plain old Ubuntu server.
16:31 : Kubernetes also is very geared towards web workflows. The ingress points (where traffic comes in) are most featureful around incoming HTTP connections. If you're not using HTTP then ... maybe your use case isn't the best. :)
16:32 : the best fit*
16:32 : I hope that answers your question :)
16:32 : next
16:32 : jeet__ bkero, Could you please elaborate a bit on this point: "...I like to learn new programming languages by writing an example program in it" ; What is your approach in this? And what kind of examples?
16:33 : souvikhaldar Thanks!
16:33 : bkero Well, in the case before IRCCat was the example. The original IRCCat project is a super old Java app that Last.fm wrote and hasn't been touched in 8 years. (https://github.com/RJ/irccat). I liked the concept of the program, so I wanted to make a new one and make it better.
16:35 : jasonbraganza !
16:35 : bkero But another example was learning Puppet. Puppet is a configuration management language. It's used to set up servers and make sure they maintain a certain state. It's run every 30 minutes and will undo any changes that happen to the system. This was before making 'golden images' was cool. :) I would code up Puppet modules for deploying certain programs, and tried to have my desktop and laptop and any other
16:35 : computer I had at the time be managed by this system.
16:36 : souvikhaldar !
16:36 : bkero In that case the 'example program' was a puppet module for deploying a service. One example of that was Roundcube, a webmail interface. I wanted to use it to view my personal email through a web browser. So I ended up figuring out how the software could be configured, and exposing that.
16:36 : I hope that helps clarify
16:36 : next
16:36 : ananyo bkero, What are the necessary skills to be a DevOps Engineer? What software and languages one must learn and how to get started with it?
16:36 : jeet__ Awesome. Thank You bkero :)
16:39 : bkero Hi anonyo. Thanks for the fast question. I would say the necessary skills are the ability to concentrate on a problem, flexibility, and a willingness to learn. Sometimes you'll be very deep in concentration trying to find out why something does not work as you expect it to, then be able to conceptualize why that might not be the case. Debugging is definitely a required skill. You need flexibility because the
16:39 : devops role is kind of like a stage grip from theatre. You end up doing a lot of tasks that isn't really anybody's job. So you can't predict what you're going to be working on. That ties in to the 'always be willing to learn'.
16:40 : For example I had to learn JMSEPath syntax last week because I had to do some complicated queries against a big JSON dataset. I didn't know I needed to have that skill when I set out to try to fix the original problem. But through a combination of the docs and stackoverflow I was able to learn enough of it. :)
16:40 : pradhvan !
16:41 : bkero As far as languages, if you expect to be dealing with Linux or Unix systems I'd say that shell scripting is great for helping you understand how the system works and how pieces tie together. Python is also a very mature language that I've liked around it. As a person on a software team you'll definitely need to learn whatever language your software is written in too. :)
16:41 : I'm learning nodejs and re-learning C++ for that right now.
16:41 : I hope this answers your question
16:41 : next
16:41 : prabhuss pass, anwered in ananyo's query.
16:42 : bkero ananyo* sorry
16:42 : next
16:42 : __rex__ What do you think was the reasons the private open source clouds startup failed? I guess competing with the prices of the big players was tough.
16:43 : ananyo bkero, No problem :) And thanks for your answer
16:44 : bkero Honestly it was mismanagement at the top. They were getting money from new clients but they weren't paying their bills. They were using the money to buy new hardware for new clients instead. Eventually they had problems paying their employees as well. That was not fun.
16:44 : A lot of companies still want an "on premises" cloud that they can control and manage. There are various reasons for this. For example Intel can't use AWS because Amazon won't give them an assurance that their virtual machines won't be run on computers with AMD processors.
16:45 : But the market is much smaller than public clouds. Most of those customers are already served by something like VMware ESX
16:45 : I hope this answers your question
16:45 : next
16:45 : jasonbraganza Hello bkero, I am a semi retired sysadmin trying to pivot into a devops role, and I’m struggling to learn Python. And here I see you before me a polyglot programmer :) how much fluency do you acquire with languages that you learn? Do you know a couple of them really, really well and have a passing familiarity with the rest? Or do you plumb the depths with each new language you learn? Also curious, if you work on site or remotely?
16:46 : __rex__ ahh I see , been using brave on my phone for over a year now and I must say its really good, keep up the great work
16:47 : bkero Hi jasonbraganza. Thanks for the question. Honestly I only plumb the depths of each language as much as I need to. I know shell *really* well because I spend all of my day in terminals. The language I know second-best is Python. That's mostly because I've had to read and debug a lot of python trying to get software to work. Most of my python programs end up being so simple I don't need to use classes or
16:47 : objects. Maybe they'll include a few methods or be a plain app using a small framework like Flask to offer a web interface.
16:48 : That's where the example programs come in. I use them as an excuse to force me to learn a new language or new features of the language.
16:49 : As for on-site or remote work, I've worked remotely my whole career. I was lucky enough to start doing it straight out of school, and now I've gotten used to it.
16:49 : It definitely limits the amount of places I can work though. :(
16:49 : Thanks for the question
16:49 : next
16:49 : souvikhaldar Given the proven benefits of Microservices architecture over monolithic architecture don't you think container technology takes a lead over ansible and likes in that case? Nevertheless, containers are lightweight and fast to boot vs the slow and bulky VM, plus containers really gives the consistency of environment, what is your take on that?
16:50 : jasonbraganza !
16:51 : prabhuss !
16:51 : bkero Yeah, absolutely. Containers are faster, lighter weight, and are usually immutable (with container systems like Docker and not LXC/LXD/OpenVZ). There are a lot of advantages. One of the problems is that not all components are aware of that, and getting them to fit in a microservices architecture can be tough.
16:52 : If you plan on scaling up your infrastructure it provides a very good way of doing that
16:52 : If you simply need to set up something quickly as a proof of concept and "it'll never grow" it might be too much work :)
16:52 : Although from experience I can say that temporary things are never temporary. :)
16:52 : jasonbraganza Amen!
16:53 : bkero I hope this helps. I don't mean to be too hard on containers. I like them too.
16:53 : next
16:53 : pradhvan Hi! bkero o/ I have seen a lot of people use CI tools like Travis and Circle CI in their small hobby projects in Github. What are your views on that? Is it like beating a needle with a hammer or a good practice that most of the people should follow even in small hobby projects?
16:53 : souvikhaldar Sorry for the being little biased :) Thanks a lot!
16:54 : bkero I think in most software we have too little testing, so I like seeing CI tools be used. A lot of projects are too small, and the investment for setting up its own CI somewhere isn't worth it. For cases like that Travis and Circle CI can be good. I feel much more confident when finding a new project on GitHub if it says tests are passing.
16:55 : The opposite would be a github project that only barely has a README.md file, no testing, and the last commit was 8 years ago.
16:56 : There's a whole section of those that I like to call "micro open source projects" which are basically a script that is pretty useful, but it's so small that it can fit in a couple line script.
16:56 : I don't know what's the right solution for those. Maybe a 'test.sh' script inside it.
16:56 : I hope that answers your question.
16:56 : next
16:56 : jasonbraganza What’s a normal day in the life of bkero, devops wiz, like? Also what’s it like when everything catches fire?
16:57 : pradhvan yes, thanks a lot bkero
16:58 : prokbird !
16:58 : souvikhaldar !
16:58 : bkero Hm, lemme see. A normal day is that I wake up, check my phone for notifications (slack, IRC, or email). If nobody is demanding my attention I'll go downstairs and pour myself a cup of iced/hot tea or coffee. Then I'll go through backscroll in our team Slack channel and see if I missed anything important. Finally I'll go through email to see if there's something there that needs my attention. I have a
16:59 : condition called ADHD, which basically means I have problems concentrating on a single task. So I have an open vim buffer with a line for each thing that I'm currently working on.
16:59 : I greet everybody good morning on Slack, then go find the task that is the most urgent. When I have some work to show I'll open a pull request with it, and ping the people who care. I'll get someone from my team to do code review on it. Usually I end up fixing 1 or 2 things, then we commit it.
17:00 : When things catch fire it means "all hands on deck" for my devops team. Everybody drops what they're working on and concentrate on getting the fire out. We had one right when I joined because we wanted our new browser (chromium based instead of electron) to be in CI. So we had to stand up an entirely new Jenkins instance with new jobs for Mac, Windows, and Linux.
17:00 : That fire lasted several days. ._.'
17:01 : jasonbraganza :)
17:01 : bkero I honestly find it a little stressful, but I've been a firefighter so much I've started getting used to ti.
17:01 : I hope this answers your question
17:01 : next
17:01 : prabhuss bkero, I didn't get the term "example programs". Are you referring to Hello World like programs or some useful scripts which can be used in a project?
17:01 : jasonbraganza This was really helpful! Thank you :)
17:02 : bkero Oh, sorry. By "example programs" I just meant a small program that hasn't been done before that "scratches an itch". It's not a 'hello-world' like program, but something that does something useful and doesn't exist in the language yet.
17:04 : An example of that might be writing a library to be able to talk to IRC servers directly from Rust.
17:04 : So more on the useful script side :)
17:04 : next
17:04 : prokbird already answered :)
17:04 : bkero Great!
17:04 : next
17:04 : souvikhaldar For writing server, which language would you choose between rust and go? And why?
17:04 : prabhuss thanks bkero :)
17:05 : bkero For big programs I'd choose Rust. The memory safety features mean there are a lot less bugs like double-frees where you have pointers to places in memory shared all through the program and one part of the program might try to use it when another part already deleted it.
17:06 : But at least for me, Rust takes longer to write programs, giving Go the advantage on getting the initial version up quickly. Which can be really valuable.
17:06 : So for a smaller project I would choose Go if I needed it to be done quickly.
17:07 : I hope that helps
17:07 : next
17:07 : souvikhaldar !
17:07 : bkero next
17:07 : ananyo !
17:08 : souvikhaldar Any recommendations for learning Kubernetes? Currently reading a book by O'Reilly and the official docs.
17:09 : bkero Kubernetes The Hard Way is an interesting way to learn how to set up Kubernetes, but was not so good in showing how to use it.
17:09 : By 'learning Kubernetes' I assume you mean how to use it and maybe extend it a little bit to do what you want
17:10 : prokbird !
17:10 : bkero I don't know of any tutorials better for learning it than those listed on kubernetes.io. If there is a K8s meetup in your town I would suggest going to that. :)
17:10 : Or maybe you could start one and invite a guest speaker to come :)
17:10 : next
17:10 : jasonbraganza !
17:10 : ananyo !
17:11 : souvikhaldar Awesome, thanks:)
17:11 : man-jain !
17:12 : j605 ananyo: ask your question
17:12 : ananyo bkero, What is view on Working Remotely Vs Working at Office Physically ?
17:13 : bkero Thanks ananyo. I really like working remotely. It means I am in the most comfortable space for me, it means I can work at a better schedule for myself. The problem is that that face-to-face time with coworkers is important.
17:13 : There is no alternative to meeting them and talking with them. That way you can understand how they communicate in person, and have a better idea of what their personality is like.
17:13 : Working remotely does take a lot of discipline. The temptation of ignoring work and reading my RSS feeds or playing video games is strong. :)
17:14 : mbuf !
17:14 : bkero It's not for everyone, but it's something that you can get used to
17:14 : I hope that helps
17:14 : next
17:14 : prokbird Ah.. already asked by ananyo ,move on to next
17:14 : bkero next
17:14 : jasonbraganza Is there a process you have for learning something new? Or do you learn by tinkering? Favourite books, if you are a reader?
17:15 : ananyo bkero, Yeah got that. So discipline is the key for Remote work. Thanks for your answer :)
17:15 : prabhuss !
17:15 : bkero For learning a new concept or task I basically open a new browser window, then start opening all the tabs I can find about it. I understand some people do something called "Falling down the wikipedia rabbit hole." I do the same thing with programming languages.
17:16 : A lot of API references and SDK references, and usually a python interpreter so I can type things in interactively and explore.
17:16 : My favorite book I read recently was The Diamond Age, an early Neal Stephenson book. :)
17:16 : next
17:16 : jasonbraganza Thank you!
17:18 : ananyo pass, already asked
17:18 : bkero next
17:18 : man-jain How should one go with learning about about DevOps tools by self. Especially a college student.
17:20 : bkero I would suggest creating your own project on GitHub or GitLab. It can be relatively simple. Maybe it's a script that converts and JPEG to a PNG file. Then add testing and documentation. You can use something like Travis CI for free, and add a 'build badge' to your README.md file. Also explore another free service like Read The Docs to generate pretty looking documentation.
17:21 : You could also go find a project on github that you already use, fork it, add testing, then talk to the author and try to submit it to their project. Usually project owners are very excited to see people interested in helping and will accept your contribution.
17:21 : man-jain What about other tools like ansible, chef etc. ?
17:22 : bkero You can also do that. Use ansible to manage your laptop. :)
17:22 : Here's an example: https://github.com/bkero/config/tree/master/ansible
17:22 : I have all my config files in this repo and run ansible to put them into place and install all the packages that I need.
17:23 : That way if I ever have to replace my laptop or desktop, I can get my familiar environment back quickly
17:23 : Then if you want to host a web site or something else you can try running ansible against another host
17:23 : You can even create little 'installers' for programs that you want to share with people
17:24 : I hope this helps
17:24 : next
17:24 : mbuf bkero, What system (laptop/desktop and configuration specs) do you use for your work? If you can share a picture of your setup, that will be a bonus!
17:24 : man-jain Yeah, It did help Thanks bkero :)
17:25 : bkero Sure. I use a desktop that I built a few years ago (i7 6700k, 16gb ram, 512gb samsung evo 960 nvme drive, gtx970) when I'm at home, and I have a X1 Carbon Gen 6 that I use when I travel.
17:25 : Here's a fresh picture: https://i.bke.ro/selif/w47xjabv.jpg
17:26 : mbuf bkero, distro?
17:26 : bkero Fedora on the laptop (old habit from Redhat, and I kind of like it now) and Ubuntu on the desktop.
17:26 : mbuf bkero, thanks!
17:26 : bkero and of course my trusty old IBM Model M :)
17:26 : next
17:26 : prabhuss bkero, Any recommendations for learning Shell Scripting?
17:28 : bkero prabhuss: A good start is just by spending time doing tasks in your terminal emulator. So using vim if you're used to gedit or notepad. Anything you do in there will ultimately end up helping your shell scripting skills. If you want to specifically learn shell I would suggest a few topics. Start by making a script file, learn environment variables (and defaults for them) and the important ones like PATH,
17:28 : control flow (if, while, for, case statements). I would avoid learning bash until you know regular shell.
17:29 : Learn about she-bang statements at the beginning of files
17:30 : There are online resources for it too. Take a look at https://www.shellscript.sh/
17:30 : I hope this helps
17:30 : next
17:30 : prabhuss bkero, Thanks a lot. That really helped :)
17:30 : bkero I'm glad to help!
17:31 : Okay, I should probably end this. It looks like there is construction equipment outside and my car might get towed. Also I should probably do work.
17:31 : kushal bkero, This was super helpful, thank you :)
17:31 : Ending the session now.