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.
|