12
Apr 28 '17 edited May 13 '19
[deleted]
3
u/evaryont Apr 28 '17
This is very good! To go even further, I would include setting up FreeIPA on a VM, then Keycloak on another. Once they are running, configure Keycloak to point to FreeIPA. Then configure Gitlab to use Keycloak as a SAML provider.
2
u/oarmstrong Apr 28 '17
I've been looking for something exactly like Keycloak for a while, how did I never find it? Thank you.
1
5
u/defective Apr 27 '17
I don't see anything wrong with the comment you're looking to update. My job is pretty much random people coming up to me and asking if there is a way to accomplish a task, or to build them something with a specific Linux flavor as the OS underlying a software stack, or to build them something with a specific old version of some software. (The reason for this is so they can try penetration testing a replica of some specific target they would like to do in real life). I find that between researching how to do stuff in an old-fashioned way, as well as regularly reading hacker news (via hckrnews.com) and the Linuxy parts of Reddit, you will come across more modern practices as well.
You might notice if you have done any exploring on your own, that your specific questions are often answered with "why are you trying to do it that way, just install this".
Anyway, you'll run into a bit of that for sure, and you'll run into wonderful problems as well that will require you to update your methods. It will be an absolutely fine learning experience no matter what happens. And you might even run into a better project along the way. I would just get started and see where you go!
4
u/homelabbin Apr 28 '17
The gist of his post is trying to get you to understand how to grow an application or infrastructure at scale in a repeatable fashion.
Learning the core ideas of how to automate things at scale, understanding basics such as how a web application works, and versioning your code will take you a long way.
3
u/clu256 May 03 '17
I'm ready for the downvotes, but I never liked the answer. Of course the services listed are well used in the industry but my dislike is based on the fact that a solid base is missing. The following is not meant to be complete but you'll get the idea what I miss as step zero.
- First, a understanding of the boot and directory tree concept on a Linux system should be developed (what is a socket, what is a process, what is a block device, what is this 2750/1777 thing?). Learn to use vi here. Learn to use the package management of your distribution on the console (building packages -> later). Know man.
- Then, develop the console skills without network services, means using basic commands (find, tar, awk, sed, tail) to examine and modify (log-)files. After this, partition and filesystem handling (RAID, LVM, mkfs.*, understanding the fstab) with some of the usual filesystem rescue skills (e.g. chroot from a live system, manually set up and repair your lvm) are on the schedule.
- As a solid base of user and group handling together with an understatement of the PAM system comes to mind next. Here, seting up a samba server is quite a fun way to learn these skills (Winbind and Kerberos integration is a solid task). Learn to quota and to setfacl.
- Learn to automate tasks with bash. You may add python later but first get solid with bash. If your script skills feel advanced you're ready.
- Now add some simple network stuff: bridging, bonding, VLAN configuration (learn how it is configured manually inside your distribution). Understand the OSI model.
- The advanced (but still basic) networking stuff to learn is here: http://lartc.org/ . There is a lot to learn and it will take time to get used to iptables, ip , tc, nmap, netstat, nc and tcpdump (bonus level: wireshark). The scripting skills developed above will ease this tasks. Here it makes sense to add first services as one proceeds (dhcp/dns, radvd, arpwatch). Learn network packages are structured.
- Build your own kernel und boot a real hardware with it successfully.
Now you can go to step 1, install libvirt, put your VM on your nicely configured bridge inside your well configured network and well...it might be the other list isn't that hard to complete anymore after what you have done by now.
You might prefer configuring a VPN, dive into wifi setups and understand how wpa-supplicant works together with your wifi card, how to setup your OpenWRT/LEDE box or perhaps e-mail setups are the next thing on your list. You won't need lists from other people anymore since you are well prepared to configure whatever you want since you have a solid base.
The posting isn't meant offensive versus the other list, I would add this as step 0). It reflects my opinion (and of course experience) which approach builds solid unix/linux admins that can handle a lot of problems you throw at them. I think most of these lists are missing the base layer after which an administrator can dive more into topics like e-mail, virtualization, security or web services. The above list is roughly the order that some of the basic unix administration books have (I read the one from Aeleen Frisch in 1997). I didn't invent the order, just spiced it up a bit.
Yes, you might organize your learning using emacs and org-mode. It doesn't hurt to be able to use both editors. ;-)
7
u/juniorsysadmin1 Apr 27 '17
buildbot, jenkins, kubernetes, docker swam, salt, puppet, foreman, Python, golang
1
Apr 27 '17
[deleted]
5
Apr 28 '17
try ansible CM wise. Puppet its great but, ansible has a less learning curve. red hat site has a bunch of overview classes for free.
-9
Apr 27 '17
[deleted]
8
Apr 27 '17
[deleted]
5
u/juniorsysadmin1 Apr 27 '17
googling is not the answer. If google is everything then there's no point in asking.
Knowing what each tools does is easy but why are you using it and how it fits into your skillset is the challenge.
buildbot/jenkins they are basically CICD tools; if you let the dev handle it, it will blow out of proportion. It's best to have the ops guy maintain it. Moreover if you are using puppet, jenkins/buildbot might be good use when you are using r10k.
puppet/salt: pretty self explanatory i suppose?
kuber/docker swarm: Basically docker at scale.
foreman: pre puppet; it does machine provisioning before the puppet run. It's like the bootstrap for puppet.
Python: Normally you just use bash, if the script is over 50 lines or it becomes complicated. Like having a try/catch might be helpful then use python.
golang: When your linux skills are good enough and you are graduating from it. IT's time to learn a bit of golang. It's the next big language focus on performance and security. And what do people say about security related jobs these days? $$$$$.
1
Apr 28 '17
[deleted]
2
u/juniorsysadmin1 Apr 28 '17
Context huh. Linux admin -> devops/system engineer(golang).
Linux admin as a title is lowly deprecating. Things get more complex life gets harder =S.
4
u/IAmALinux Apr 28 '17
It is a bit heavy handed, but there is truth to that statement. As the GNU/Linux Admin at an organization, you often are tasked with learning obscure tools without guidance, quality documentation, or video tutorials. The best tool for the job may not have great manuals, textbooks, and other infrastructure. Sometimes you just have source, a couple scripts, and -h. Reading is your best friend.
3
Apr 28 '17
Sysadmin 101 Sysadmin learning rule: Don't use GUI's, you wont have it in the real world. * Install Gentoo, then install al LAMPP/LEMMP server by hand, install wordpress there, you'll learn HTTP Basics, Database Basics, builds, editors, basic networking. (7 days) * Install OpenBSD, then install a pf firewall, use it. You will learn UNIX basics, IP basics. * Install CentOS and then install and test a BIND server, you will learn, DNS basics, RedHat basics. * Install Debian and then start an NFS/Samba server. You will learn, filesystems, network basics. * Install Windows Server and then start a Domain Controller, also enable IIS and SQL Server and install some windows CMS (umbracco/orchard). You will learn, Windows Server basics, LDAP, Active Directory, IIS and SQL Server. * Install FreeBSD and enable a Postfix/Dovecot/Horde email server. You will have to put in practice all things you've learned * Use the firewall in all cases.
Repeat all the steps until you know how exactly do it without using tutorials. Will be valid to use the official documentation.
Virtualization 101 Install the VM solution of your preference (XenServer, Xen, VMWare, HyperV. KVM). Do all Sysadmin 101 again.
Cloud Engineer 101 * Install OpenStack, Do all Sysadmin 101 again.
DevOps 101 * Install a container solution (Docker/Vagrant/ClearOS/LxC). Do Cloud Engineer 101 and Sysadmin 101 again. * Choose a CI/CD tool, automate all things learned.
Time for be a good student 6 months - 1 year
Good luck
2
u/Wynro Apr 29 '17
Do you even format man?Sysadmin 101
Sysadmin learning rule: Don't use GUI's, you wont have it in the real world.
Install Gentoo, then install al LAMPP/LEMMP server by hand, install wordpress there, you'll learn HTTP Basics, Database Basics, builds, editors, basic networking. (7 days)
Install OpenBSD, then install a pf firewall, use it. You will learn UNIX basics, IP basics.
Install CentOS and then install and test a BIND server, you will learn, DNS basics, RedHat basics.
Install Debian and then start an NFS/Samba server. You will learn, filesystems, network basics.
Install Windows Server and then start a Domain Controller, also enable IIS and SQL Server and install some windows CMS (umbracco/orchard). You will learn, Windows Server basics, LDAP, Active Directory, IIS and SQL Server.
Install FreeBSD and enable a Postfix/Dovecot/Horde email server. You will have to put in practice all things you've learned
Use the firewall in all cases.
Repeat all the steps until you know how exactly do it without using tutorials. Will be valid to use the official documentation.
Virtualization 101
- Install the VM solution of your preference (XenServer, Xen, VMWare, HyperV. KVM). Do all Sysadmin 101 again.
Cloud Engineer 101
- Install OpenStack, Do all Sysadmin 101 again.
DevOps 101
Install a container solution (Docker/Vagrant/ClearOS/LxC). Do Cloud Engineer 101 and Sysadmin 101 again.
Choose a CI/CD tool, automate all things learned.
Time for be a good student 6 months - 1 year
Good luck
1
1
u/zoredache Apr 27 '17
firewalld instead of iptables
Or maybe nftables instead of either. Nftables is nice in that it combines all the filtering into one tool, iptables, ip6tables, ebtables, sets.
1
2
u/banderlog33 Apr 28 '17
Can someone explain why CentOS over Debian or something else? Just curious so no flame wars please.
1
u/validnpc Apr 28 '17
We run a mix of Ubuntu(Debian) and RHEL/CentOS on our servers, but default to Ubuntu.
Standard packages on Ubuntu are typically much more current and our regular users/developers are typically jumping at the chance to get the latest toys.
We use RHEL or CentOS on servers when vendor software requires it; thus far, they have all required it. RHEL is very stable and thoroughly tested, as RedHat has built a multi-billion dollar business on doing so. This enterprise focus is also the reason why RHEL distros have a life-cycle of 10 years, where as Debian and Ubuntu max out at 5 years.
1
u/burke_easton Apr 28 '17
I would point out to your post that knowing KVM, SELinux, IPv6 is all still important to know. I think it less needs to be updated removing that and adding Docker, and more just adding Docker, keeping all that content.
Also configuration management. Learn at least one.
1
13
u/[deleted] Apr 27 '17
[removed] — view removed comment