From a9183dacc7d66a6ec0d17ea4c9adba60b65aa53b Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Wed, 22 Sep 2021 14:50:03 +0200 Subject: [PATCH] Add sysadmin roadmap --- components/roadmap/home-roadmap-item.tsx | 29 +++- content/roadmaps.json | 143 ++++++++++++++---- content/roadmaps/5-sysadmin/landscape.md | 26 ++++ content/roadmaps/5-sysadmin/meta.json | 43 ++++++ .../resources.md | 0 .../landscape.md | 0 .../meta.json | 0 .../{7-qa => 7-postgresql-dba}/resources.md | 0 content/roadmaps/{7-qa => 8-aws}/landscape.md | 0 content/roadmaps/8-aws/meta.json | 36 +++++ content/roadmaps/8-aws/resources.md | 7 + content/roadmaps/9-qa/landscape.md | 11 ++ content/roadmaps/{7-qa => 9-qa}/meta.json | 1 + content/roadmaps/9-qa/resources.md | 7 + pages/index.tsx | 1 + public/sitemap.xml | 60 ++++++-- 16 files changed, 314 insertions(+), 50 deletions(-) create mode 100644 content/roadmaps/5-sysadmin/landscape.md create mode 100644 content/roadmaps/5-sysadmin/meta.json rename content/roadmaps/{5-postgresql-dba => 5-sysadmin}/resources.md (100%) rename content/roadmaps/{5-postgresql-dba => 7-postgresql-dba}/landscape.md (100%) rename content/roadmaps/{5-postgresql-dba => 7-postgresql-dba}/meta.json (100%) rename content/roadmaps/{7-qa => 7-postgresql-dba}/resources.md (100%) rename content/roadmaps/{7-qa => 8-aws}/landscape.md (100%) create mode 100644 content/roadmaps/8-aws/meta.json create mode 100644 content/roadmaps/8-aws/resources.md create mode 100644 content/roadmaps/9-qa/landscape.md rename content/roadmaps/{7-qa => 9-qa}/meta.json (98%) create mode 100644 content/roadmaps/9-qa/resources.md diff --git a/components/roadmap/home-roadmap-item.tsx b/components/roadmap/home-roadmap-item.tsx index 8c56e6ed1..6b8b28a6b 100644 --- a/components/roadmap/home-roadmap-item.tsx +++ b/components/roadmap/home-roadmap-item.tsx @@ -1,10 +1,11 @@ -import { Box, Heading, Link, Text, Tooltip } from '@chakra-ui/react'; +import { Box, Flex, Heading, Link, Text, Tooltip } from '@chakra-ui/react'; import { InfoIcon } from '@chakra-ui/icons'; type RoadmapGridItemProps = { title: string; subtitle: string; isCommunity?: boolean; + isUpcoming?: boolean; colorIndex?: number; url: string; }; @@ -14,12 +15,17 @@ const bgColorList = [ 'red.800', 'green.800', 'teal.800', - 'gray.800', + 'blue.800', + 'red.900', + 'gray.900', + 'orange.900', + 'yellow.900', + 'green.900', 'red.900' ]; export function HomeRoadmapItem(props: RoadmapGridItemProps) { - const { title, subtitle, isCommunity, colorIndex = 0, url } = props; + const { title, subtitle, isCommunity, colorIndex = 0, url, isUpcoming } = props; return ( {title} {subtitle} + + {isUpcoming && ( + + Upcoming + + + )} ); } diff --git a/content/roadmaps.json b/content/roadmaps.json index bd13e9089..d5c3ba79a 100644 --- a/content/roadmaps.json +++ b/content/roadmaps.json @@ -4,10 +4,6 @@ "title": "Learn to become a modern frontend developer", "description": "Community driven, articles, resources, guides, interview questions, quizzes for modern frontend development. Learn to become a modern frontend developer by following the steps, skills, resources and guides listed in this roadmap.", "keywords": [ - "frontend roadmap", - "javascript roadmap", - "frontend roadmap 2021", - "javascript roadmap 2021", "guide to becoming a developer", "guide to becoming a frontend developer", "frontend developer", @@ -171,6 +167,90 @@ "id": "react", "isUpcoming": false }, + { + "seo": { + "title": "System Administrator: Learn to become a linux system administrator in 2021", + "description": "Community driven, articles, resources, guides, interview questions, quizzes for system administrators. Learn to become a modern system administrator by following the steps, skills, resources and guides listed in this roadmap.", + "keywords": [ + "guide to becoming a system administrator", + "guide to becoming a sysadmin", + "system administrator roadmap", + "linux system administrator roadmap", + "linux sysadmin roadmap", + "system administrator roadmap", + "linux roadmap", + "system administrator skills", + "sysadmin skills", + "system admin skills", + "become system administrator", + "sysadmin skills", + "modern system administrator skills", + "system administrator skills test", + "how to become a system administrator", + "skills for system administrator", + "learn sysadmin", + "what is system administrator", + "system administrator quiz", + "sysadmin interview questions" + ] + }, + "title": "System Administrator", + "description": "Step by step guide to becoming a modern system administrator in 2021", + "featuredTitle": "SysAdmin", + "featuredDescription": "Step by step guide to become a system administrator in 2021", + "contentPath": "/roadmaps/5-sysadmin/landscape.md", + "resourcesPath": "/roadmaps/5-sysadmin/resources.md", + "author": { + "name": "Kamran Ahmed", + "url": "https://github.com/kamranahmedse" + }, + "isCommunity": true, + "isTextHeavy": true, + "featured": true, + "detailed": false, + "versions": [], + "id": "sysadmin", + "isUpcoming": false + }, + { + "seo": { + "title": "Android Developer Roadmap: Learn to become an Android developer", + "description": "Community driven, articles, resources, guides, interview questions, quizzes for android development. Learn to become a modern Android developer by following the steps, skills, resources and guides listed in this roadmap.", + "keywords": [ + "guide to becoming an android developer", + "android developer roadmap", + "android roadmap", + "become android developer", + "android developer skills", + "android skills test", + "skills for android development", + "learn android development", + "what is android", + "android quiz", + "android interview questions" + ] + }, + "title": "Android Developer", + "description": "Step by step guide to becoming an Android developer in 2021", + "featuredTitle": "Android", + "featuredDescription": "Step by step guide to becoming an Android Developer in 2021", + "isTextHeavy": true, + "isCommunity": true, + "featured": true, + "contentPath": "/roadmaps/6-android/landscape.md", + "resourcesPath": "/roadmaps/6-android/resources.md", + "versions": [ + "latest", + "2018", + "2017" + ], + "author": { + "name": "Kamran Ahmed", + "url": "https://twitter.com/kamranahmedse" + }, + "id": "android", + "isUpcoming": false + }, { "seo": { "title": "DBA Roadmap: Learn to become a database administrator with PostgreSQL", @@ -200,8 +280,8 @@ "description": "Step by step guide to becoming a modern PostgreSQL DB Administrator in 2021", "featuredTitle": "DBA", "featuredDescription": "Step by step guide to become a PostgreSQL DBA in 2021", - "contentPath": "/roadmaps/5-postgresql-dba/landscape.md", - "resourcesPath": "/roadmaps/5-postgresql-dba/resources.md", + "contentPath": "/roadmaps/7-postgresql-dba/landscape.md", + "resourcesPath": "/roadmaps/7-postgresql-dba/resources.md", "author": { "name": "Alexey Lesovsky", "url": "https://github.com/lesovsky" @@ -216,31 +296,30 @@ }, { "seo": { - "title": "Android Developer Roadmap: Learn to become an Android developer", - "description": "Community driven, articles, resources, guides, interview questions, quizzes for android development. Learn to become a modern Android developer by following the steps, skills, resources and guides listed in this roadmap.", + "title": "AWS Roadmap: Learn to use AWS", + "description": "Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.", "keywords": [ - "guide to becoming an android developer", - "android developer roadmap", - "android roadmap", - "become android developer", - "android developer skills", - "android skills test", - "skills for android development", - "learn android development", - "what is android", - "android quiz", - "android interview questions" + "guide to aws", + "aws roadmap", + "aws skills", + "aws skills test", + "skills for aws", + "cloud development", + "what is aws", + "aws quiz", + "aws interview questions" ] }, - "title": "Android Developer", - "description": "Step by step guide to becoming an Android developer in 2021", - "featuredTitle": "Android", - "featuredDescription": "Step by step guide to becoming an Android Developer in 2021", - "isTextHeavy": true, - "isCommunity": true, + "title": "AWS", + "description": "Everything that is there to learn about AWS and the ecosystem in 2021.", + "featuredTitle": "AWS", + "featuredDescription": "Step by step guide to learn AWS in 2021", + "isTextHeavy": false, + "isCommunity": false, + "isUpcoming": true, "featured": true, - "contentPath": "/roadmaps/6-android/landscape.md", - "resourcesPath": "/roadmaps/6-android/resources.md", + "contentPath": "/roadmaps/8-aws/landscape.md", + "resourcesPath": "/roadmaps/8-aws/resources.md", "versions": [ "latest", "2018", @@ -250,8 +329,7 @@ "name": "Kamran Ahmed", "url": "https://twitter.com/kamranahmedse" }, - "id": "android", - "isUpcoming": false + "id": "aws" }, { "seo": { @@ -277,12 +355,13 @@ "featuredTitle": "QA", "featuredDescription": "Step by step guide to becoming a modern QA Engineer in 2021", "isUpcoming": true, - "contentPath": "/roadmaps/7-qa/landscape.md", - "resourcesPath": "/roadmaps/7-qa/resources.md", + "featured": true, + "contentPath": "/roadmaps/9-qa/landscape.md", + "resourcesPath": "/roadmaps/9-qa/resources.md", "author": { "name": "Anas Fitiani", "url": "https://github.com/anas-qa" }, "id": "qa" } -] +] \ No newline at end of file diff --git a/content/roadmaps/5-sysadmin/landscape.md b/content/roadmaps/5-sysadmin/landscape.md new file mode 100644 index 000000000..74146cc7b --- /dev/null +++ b/content/roadmaps/5-sysadmin/landscape.md @@ -0,0 +1,26 @@ +The roadmap below is the list of steps that one might take in order to become a linux system administrator. It is an exhaustive list meant to expose you at least once to important elements of the trade. If you did every last item on this list then you would be eminently qualified to work any Linux admin posting you might ever encounter. The roadmap and all the steps listed below were derived [from a really interesting thread on reddit](https://www.reddit.com/r/linuxadmin/comments/2s924h/how_did_you_get_your_start/cnnw1ma/) which I would recommend you to check out. + +* Set up a KVM hypervisor. +* Inside of that KVM hypervisor, install a Spacewalk server. Use CentOS 6 as the distro for all work below. (For bonus points, set up errata importation on the CentOS channels, so you can properly see security update advisory information.) +* Create a VM to provide named and dhcpd service to your entire environment. Set up the dhcp daemon to use the Spacewalk server as the pxeboot machine (thus allowing you to use Cobbler to do unattended OS installs). Make sure that every forward zone you create has a reverse zone associated with it. Use something like "internal.virtnet" (but not ".local") as your internal DNS zone. +* Use that Spacewalk server to automatically (without touching it) install a new pair of OS instances, with which you will then create a Master/Master pair of LDAP servers. Make sure they register with the Spacewalk server. Do not allow anonymous bind, do not use unencrypted LDAP. +* Reconfigure all 3 servers to use LDAP authentication. +* Create two new VMs, again unattendedly, which will then be Postgresql VMs. Use pgpool-II to set up master/master replication between them. Export the database from your Spacewalk server and import it into the new pgsql cluster. Reconfigure your Spacewalk instance to run off of that server. +* Set up a Puppet Master. Plug it into the Spacewalk server for identifying the inventory it will need to work with. (Cheat and use ansible for deployment purposes, again plugging into the Spacewalk server.) +* Deploy another VM. Install iscsitgt and nfs-kernel-server on it. Export a LUN and an NFS share. +* Deploy another VM. Install bakula on it, using the postgresql cluster to store its database. Register each machine on it, storing to flatfile. Store the bakula VM's image on the iscsi LUN, and every other machine on the NFS share. +* Deploy two more VMs. These will have httpd (Apache2) on them. Leave essentially default for now. +* Deploy two more VMs. These will have tomcat on them. Use JBoss Cache to replicate the session caches between them. Use the httpd servers as the frontends for this. The application you will run is [JBoss Wiki](http://jbosswiki.jboss.org/). +* You guessed right, deploy another VM. This will do iptables-based NAT/round-robin loadbalancing between the two httpd servers. +* Deploy another VM. On this VM, install postfix. Set it up to use a gmail account to allow you to have it send emails, and receive messages only from your internal network. +* Deploy another VM. On this VM, set up a Nagios server. Have it use snmp to monitor the communication state of every relevant service involved above. This means doing a "is the right port open" check, and a "I got the right kind of response" check and "We still have filesystem space free" check. +* Deploy another VM. On this VM, set up a syslog daemon to listen to every other server's input. Reconfigure each other server to send their logging output to various files on the syslog server. (For extra credit, set up logstash or kibana or greylog to parse those logs.) +* Document every last step you did in getting to this point in your brand new Wiki. +* Now go back and create Puppet Manifests to ensure that every last one of these machines is authenticating to the LDAP servers, registered to the Spacewalk server, and backed up by the bakula server. +* Now go back, reference your documents, and set up a Puppet Razor profile that hooks into each of these things to allow you to recreate, from scratch, each individual server. +* Destroy every secondary machine you've created and use the above profile to recreate them, joining them to the clusters as needed. +* Bonus exercise: create three more VMs. A CentOS 5, 6, and 7 machine. On each of these machines, set them up to allow you to create custom RPMs and import them into the Spacewalk server instance. Ensure your Puppet configurations work for all three and produce like-for-like behaviors. + +Do these things, and you will be fully exposed to every aspect of Linux Enterprise systems administration. Do them well and you will have the technical expertise required to seek "Senior" roles. If you go whole-hog crash-course full-time it with no other means of income, I would expect it would take between 3 and 6 months to go from "I think I'm good with computers" to achieving all of these -- assuming you're not afraid of IRC and google. + + diff --git a/content/roadmaps/5-sysadmin/meta.json b/content/roadmaps/5-sysadmin/meta.json new file mode 100644 index 000000000..154742544 --- /dev/null +++ b/content/roadmaps/5-sysadmin/meta.json @@ -0,0 +1,43 @@ +{ + "seo": { + "title": "System Administrator: Learn to become a linux system administrator in 2021", + "description": "Community driven, articles, resources, guides, interview questions, quizzes for system administrators. Learn to become a modern system administrator by following the steps, skills, resources and guides listed in this roadmap.", + "keywords": [ + "guide to becoming a system administrator", + "guide to becoming a sysadmin", + "system administrator roadmap", + "linux system administrator roadmap", + "linux sysadmin roadmap", + "system administrator roadmap", + "linux roadmap", + "system administrator skills", + "sysadmin skills", + "system admin skills", + "become system administrator", + "sysadmin skills", + "modern system administrator skills", + "system administrator skills test", + "how to become a system administrator", + "skills for system administrator", + "learn sysadmin", + "what is system administrator", + "system administrator quiz", + "sysadmin interview questions" + ] + }, + "title": "System Administrator", + "description": "Step by step guide to becoming a modern system administrator in 2021", + "featuredTitle": "SysAdmin", + "featuredDescription": "Step by step guide to become a system administrator in 2021", + "contentPath": "./landscape.md", + "resourcesPath": "./resources.md", + "author": { + "name": "Kamran Ahmed", + "url": "https://github.com/kamranahmedse" + }, + "isCommunity": true, + "isTextHeavy": true, + "featured": true, + "detailed": false, + "versions": [] +} diff --git a/content/roadmaps/5-postgresql-dba/resources.md b/content/roadmaps/5-sysadmin/resources.md similarity index 100% rename from content/roadmaps/5-postgresql-dba/resources.md rename to content/roadmaps/5-sysadmin/resources.md diff --git a/content/roadmaps/5-postgresql-dba/landscape.md b/content/roadmaps/7-postgresql-dba/landscape.md similarity index 100% rename from content/roadmaps/5-postgresql-dba/landscape.md rename to content/roadmaps/7-postgresql-dba/landscape.md diff --git a/content/roadmaps/5-postgresql-dba/meta.json b/content/roadmaps/7-postgresql-dba/meta.json similarity index 100% rename from content/roadmaps/5-postgresql-dba/meta.json rename to content/roadmaps/7-postgresql-dba/meta.json diff --git a/content/roadmaps/7-qa/resources.md b/content/roadmaps/7-postgresql-dba/resources.md similarity index 100% rename from content/roadmaps/7-qa/resources.md rename to content/roadmaps/7-postgresql-dba/resources.md diff --git a/content/roadmaps/7-qa/landscape.md b/content/roadmaps/8-aws/landscape.md similarity index 100% rename from content/roadmaps/7-qa/landscape.md rename to content/roadmaps/8-aws/landscape.md diff --git a/content/roadmaps/8-aws/meta.json b/content/roadmaps/8-aws/meta.json new file mode 100644 index 000000000..adb10317e --- /dev/null +++ b/content/roadmaps/8-aws/meta.json @@ -0,0 +1,36 @@ +{ + "seo": { + "title": "AWS Roadmap: Learn to use AWS", + "description": "Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.", + "keywords": [ + "guide to aws", + "aws roadmap", + "aws skills", + "aws skills test", + "skills for aws", + "cloud development", + "what is aws", + "aws quiz", + "aws interview questions" + ] + }, + "title": "AWS", + "description": "Everything that is there to learn about AWS and the ecosystem in 2021.", + "featuredTitle": "AWS", + "featuredDescription": "Step by step guide to learn AWS in 2021", + "isTextHeavy": false, + "isCommunity": false, + "isUpcoming": true, + "featured": true, + "contentPath": "./landscape.md", + "resourcesPath": "./resources.md", + "versions": [ + "latest", + "2018", + "2017" + ], + "author": { + "name": "Kamran Ahmed", + "url": "https://twitter.com/kamranahmedse" + } +} diff --git a/content/roadmaps/8-aws/resources.md b/content/roadmaps/8-aws/resources.md new file mode 100644 index 000000000..9ea876887 --- /dev/null +++ b/content/roadmaps/8-aws/resources.md @@ -0,0 +1,7 @@ +> **We are still preparing the resources**. Please check back later or [subscribe to get notified](/signup). + +While we prepare the list, follow this simple advice to learn anything + +> Just **pick a project and start working on it**, you will learn all that you need along the way. + +**→**   [All Roadmaps](/roadmaps)  •  [Programming guides](/guides)  •  [Subscribe](/signup) diff --git a/content/roadmaps/9-qa/landscape.md b/content/roadmaps/9-qa/landscape.md new file mode 100644 index 000000000..75ceb7a41 --- /dev/null +++ b/content/roadmaps/9-qa/landscape.md @@ -0,0 +1,11 @@ +> **Roadmap is not ready yet**. Please check back later or [subscribe to get notified](/signup). + +While we prepare the roadmap, follow this simple advice to learn anything + +> Just **pick a project and start working on it**, you will learn all that you need along the way. + +**→**   [All Roadmaps](/roadmaps)  •  [Programming guides](/guides)  •  [Subscribe](/signup) + + + + diff --git a/content/roadmaps/7-qa/meta.json b/content/roadmaps/9-qa/meta.json similarity index 98% rename from content/roadmaps/7-qa/meta.json rename to content/roadmaps/9-qa/meta.json index 0ad4591fc..6874c6f28 100644 --- a/content/roadmaps/7-qa/meta.json +++ b/content/roadmaps/9-qa/meta.json @@ -22,6 +22,7 @@ "featuredTitle": "QA", "featuredDescription": "Step by step guide to becoming a modern QA Engineer in 2021", "isUpcoming": true, + "featured": true, "contentPath": "./landscape.md", "resourcesPath": "./resources.md", "author": { diff --git a/content/roadmaps/9-qa/resources.md b/content/roadmaps/9-qa/resources.md new file mode 100644 index 000000000..9ea876887 --- /dev/null +++ b/content/roadmaps/9-qa/resources.md @@ -0,0 +1,7 @@ +> **We are still preparing the resources**. Please check back later or [subscribe to get notified](/signup). + +While we prepare the list, follow this simple advice to learn anything + +> Just **pick a project and start working on it**, you will learn all that you need along the way. + +**→**   [All Roadmaps](/roadmaps)  •  [Programming guides](/guides)  •  [Subscribe](/signup) diff --git a/pages/index.tsx b/pages/index.tsx index 2eef42172..69ca9c461 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -52,6 +52,7 @@ export default function Home(props: HomeProps) { {roadmaps.map((roadmap: RoadmapType, counter: number) => ( https://roadmap.sh/frontend monthly - 2021-09-04T17:09:59.269Z + 2021-09-05T18:22:27.708Z 1.0 https://roadmap.sh/backend monthly - 2021-09-04T17:10:19.270Z + 2021-09-05T18:22:27.708Z 1.0 https://roadmap.sh/devops monthly - 2021-09-04T17:10:44.437Z + 2021-09-05T18:22:27.709Z 1.0 https://roadmap.sh/react monthly - 2021-09-04T17:11:05.241Z + 2021-09-05T18:22:27.709Z 1.0 - https://roadmap.sh/postgresql-dba + https://roadmap.sh/sysadmin monthly - 2021-09-04T17:04:01.161Z + 2021-09-22T12:47:28.819Z 1.0 https://roadmap.sh/android monthly - 2021-09-04T17:04:18.383Z + 2021-09-05T18:22:27.710Z + 1.0 + + + https://roadmap.sh/postgresql-dba + monthly + 2021-09-05T18:22:27.710Z + 1.0 + + + https://roadmap.sh/aws + monthly + 2021-09-22T12:34:39.639Z 1.0 https://roadmap.sh/qa monthly - 2021-09-04T17:01:41.946Z + 2021-09-22T12:27:37.565Z + 1.0 + + + https://roadmap.sh/guides/avoid-render-blocking-javascript-with-async-defer + monthly + 2021-09-10T19:59:14.191Z + 1.0 + + + https://roadmap.sh/guides/what-are-web-vitals + monthly + 2021-09-05T19:59:14.191Z + 1.0 + + + https://roadmap.sh/guides/what-is-sli-slo-sla + monthly + 2021-08-31T19:59:14.191Z 1.0 @@ -195,43 +225,43 @@ https://roadmap.sh/about monthly - 2021-09-04T18:03:52.068Z + 2021-09-05T18:22:27.723Z 0.8 https://roadmap.sh/guides monthly - 2021-09-04T20:56:05.377Z + 2021-09-05T18:22:27.724Z 1.0 https://roadmap.sh/ monthly - 2021-09-04T20:58:19.326Z + 2021-09-22T12:31:40.612Z 1.0 https://roadmap.sh/roadmaps monthly - 2021-09-04T18:05:27.986Z + 2021-09-05T18:22:27.725Z 1.0 https://roadmap.sh/signup monthly - 2021-09-04T18:05:54.681Z + 2021-09-05T18:22:27.725Z 0.9 https://roadmap.sh/thanks monthly - 2021-09-04T17:38:08.556Z + 2021-09-18T09:42:25.872Z 0.5 https://roadmap.sh/watch monthly - 2021-09-04T18:06:47.417Z + 2021-09-05T18:22:27.726Z 1.0 \ No newline at end of file