Experimenting with Information Technology, specifically systems administration and software development, to create interesting projects, push boundaries, and learn new skills. Also to play with new toys.
### Achieving Greatness - systemd - Not a single binary, still kinda sorta not really The Unix Philosophy - Customizable - Startup/Bootstrap scripts - Infecting the lifeblood of our world - What does your server run, bro? - Anyone can contribute - Giving youth an opportunity to learn computer science ### Adaptation - Gaming - Multimedia - BLeading Edge (yes, it's spelled correctly. I am mixing bleeding leading. Back off) - TechTubers (Linus Tech Tips, Hardware Unboxed, Level1Techs) ### LISA SU IS MY BEST FRIEND - Silicon manufacturers - Clear Linux - Nvidia sux (but I still use them) ### Not Really Linux Related - Everything is becoming browser based - It sucks - Remote Desktops - Developers, developers, developers, DEVELOPERS ### Willingness to Collaborate - WSL - Canonical - POP!_OS - RHEL
### Doug McIlroy - Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features. - Expect the output of every program to become the input to another, as yet unknown, program. Don't clutter output with extraneous information. - Design and build software, even operating systems, to be tried early, ideally within weeks. Don't hesitate to throw away the clumsy parts and rebuild them. - Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you've finished using them. ### Peter H. Salus - Write programs that do one thing and do it well. - Write programs to work together. - Write programs to handle text streams, because that is a universal interface. ### Rob Pike - Rule 1. You can't tell where a program is going to spend its time. Bottlenecks occur in surprising places, so don't try to second guess and put in a speed hack until you've proven that's where the bottleneck is. - Rule 2. Measure. Don't tune for speed until you've measured, and even then don't unless one part of the code overwhelms the rest. - Rule 3. Fancy algorithms are slow when n is small, and n is usually small. Fancy algorithms have big constants. Until you know that n is frequently going to be big, don't get fancy. (Even if n does get big, use Rule 2 first.) - Rule 4. Fancy algorithms are buggier than simple ones, and they're much harder to implement. Use simple algorithms as well as simple data structures. - Rule 5. Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming. ### Dennis Ritchie and Ken Thompson - Make it easy to write, test, and run programs. - Interactive use instead of batch processing. - Economy and elegance of design due to size constraints - Self-supporting system: all Unix software is maintained under Unix. ### ESR - Modularity - Write simple parts connected by clean interfaces. - Readable - Programs that are clean and clear. - Composition - Programs connected to programs. - Separation: Separate policy from mechanism; separate interfaces from engines. - Simplicity: Design for simplicity; add complexity only where you must. - Parsimony: Write a big program only when it is clear by demonstration that nothing else will do. - Transparency: Design for visibility to make inspection and debugging easier. - Robust: Robustness is the child of transparency and simplicity. - Representation: Fold knowledge into data so program logic can be stupid and robust. - Least Surprise: In interface design, always do the least surprising thing. - Silence: When a program has nothing surprising to say, it should say nothing. - Repair: When you must fail, fail noisily and as soon as possible. - Economy: Programmer time is expensive; conserve it in preference to machine time. - Generation: Avoid hand-hacking; write programs to write programs when you can. - Optimization: Prototype before polishing. Get it working before you optimize it. - Diversity: Distrust all claims for “one true way”. - Extensibility: Design for the future, because it will be here sooner than you think. ### Does The Unix Philosophy Still Matter? - Yes? - We can still learn - Do what makes sense - Simplify everything - Abstraction isn't the answer
SecBSD Why SecBSD? LINUX SUCKS Jk, don’t gank me bro. First heard about it on an interview with BSD Bandit. https://www.youtube.com/watch?v=Q-zSlKRqQY8 “…nor do we want to have defaults that run tools as UID 0 (root). OpenBSD is our preferred platform, with the relentless focus on security, shipping with sane defaults, proper documentation and a thorough and constant auditing process.” Security researchers comfortable with OpenBSD/*BSD platforms. Bug hunters, bounty hunters, penetration testers wanting to flex on the Linux kernel. Probably need to know a little (see: a lot) about how Information Security/Offensive Security works. Stages and process of an engagement. Don’t treat this as gatekeeping treat it as an opportunity to learn. OffSec Tools aircrack ng arp scan burpsuite ccrypt cvechecker dnsrecon exploitdb f*ckshell nemesis nikto nmap pwndb snort sublist3r zaproxy Installing SecBSD Install OpenBSD Setup ports Clone SecBSD tools make && make install OpenBSD 6.7 Release Updating with a single command: sysupgrade Reboot process JUST WORKS. AWK Blog post Loops, Decisions, Arrays Switch statement Passing arguments
Welcome to the first Head in the Clouds segment! Today we discuss what separates a VPC from a VPS, why the cloud is so "damn" expensive, and what services will serve your organization the best. We also get into monitoring your billing and utilization, why the cost justifies the time, having the latest and greatest at all times.
Primer for Head in the Clouds! What's the best VPS? Spoiler, it's Vultr. Opinions my own. I wasn't paid to say that. Blah blah blah. When to Self Host? - Personal Projects - Experiments - Personal Data - E-mail - Files Self Host Considerations? - DNS - Dynamic DNS - Service Provider - Network Intrusion - Equipment - Electric Bill When to Outsource? - Portfolio Sites - RSS - Client Sites - E-mail? - Collaboration Outsourcing Considerations? - Cost - Availability - Location - OS/Distro Shilling - Services Provided - Suit Your Needs Who to Outsource to? - Linode - Digital Ocean - Vultr Why Vultr? - OpenBSD Baby! - Dark Mode (Yes, really) - 2FA/Sane Defaults - Total Infrastructure - High Performance - Compute - Bare Metal - Dedicated Cloud - Tailored Networking
Last half of the review is in today! Sneak peak into new segment: Head in the Clouds Networking for Systems Administrators Part II - Packet Sniffing - Creating Traffic - Server Packet Filtering - Tracing Problems - Final Word "Even if you fail utterly, at least you'll finally know if that firewall port is open or not."
Hey everyone! First half of the first book review on the show! Networking for Systems Administrators by Michael W Lucas is a dive into defining how networks work, troubleshooting a network, and providing useful information into what the network engineering team needs. I give my initial thoughts, breakdown the first half of the book, and discuss some useful insights and knowledge I gained from reading. Stay tuned for the next half! - Who should read this book? - Chapter 0! - Applied OSI model - Ethernet all the things - IPv4 and IPv6 - TCP/IP - Viewing connections - Testing the network - It's always DNS
## BSD Administration and C-isms ### Deploying to OpenBSD - Played with OpenBSD and HTTPD - Not your Grandpa's HTTPD - Based on relayd - Features - Very similar to Nginx - Macros - Global conf - Sever declaration - ACME Client - Automatic Certificate Management Environment (phew) - Location blocks - Connect with Let's Encrypt - _Sane_ Defaults - Say it with me - Protections in place to protect the system admin and users - You "unlock" what you want to use - Traffic - Couldn't tell (too low) - Rendered/responded very well - Basic stress testing showed no difference than Linux ### Writing in Userland - AKA user space - Kernel exposes itself via API - Use system calls to hitup the kernel - Interrupt happens, processes process, kernel goes on about day - Pointers, I/O, networking - Writing to file - Allocating memory - Sending packets - Caching - Web server in C - Mainstream examples - Smaller projects - Without VM or Garbage Collection ### Fun Filled Excitement - Debian potentially migrating off E-mail - First Book Review (dedicating whole episode) - Networking for Systems Administrators by Michael W Lucas ### Web Server Source https://github.com/LambdaSchool/C-Web-Server
Today I catch up with Mike and Phil from The rollBak! We go into what's changed over the last year, new endeavors, why we think containers might be overkill, and more! Be sure to mutilate the subscribe button and stab that like. USE LINUX.
## Semaphore vs Mutex vs AdminDev ### Semaphore - More of a signal than a lock/unlock - Integer value accessed through wait() and signal() - wait() checks if the int is less than or equal to 0, decrements value - signal() increments the integer value ### Semaphore Over Mutex - Mutex locks can have busy waiting. - Semaphore wait() results in busy waiting, but a process can block itself with a wakeup() implementation - Semaphore can still result in syncing issues - Critical-Section: Two processes can be in the same section if the wait() and signal() sequence is not monitored ### Semaphores in OS Dev - Counting semaphore - Value can range dramatically - Control access to a given resource consisting of finite instances - Semaphore is initialized to the given number of resources - Each process that wants to use a resource performs wait() (lowering the value count) - signal() is called when a process is finished utilizing a resource (increasing the value count) - When count == 0, all resources are used - Processes will block until count becomes greater than 0 - Binary semaphore - Value can range between 1 and 0 - Similar to mutex locking - Used in systems lacking mutual exclusion ### Atomics and Atomicity - An atomic action is a group of related operations that execute without interruption or do not execute at all - Operations isolated from other operations occurring at the same time - Observed state is pending or complete, never partially complete. - The Linux kernel - A note on Golang - Package "sync/atomic" - Low-level primitives for synchronization algorithms - "Share memory by communicating, don't communicate by sharing memory." - Emphasis on low-level applications ### Java and C, Sitting in a Red-Black Tree - My education vs my desires - C teachings - What other langs do - Why this costs - What I've learned - Java still in the mix - Shell and Python ### Why C, Again? - OS and kernel development - OS Dev Wiki - Prereqs - Userland tools - Assembly - All the cool kids do it! - The language of operating systems - The language of networking - The language of web and proxy ### New Format - Technical Buzzword Jargon Hell - Stuff like this :D - CompSci, Unix and Linux, computer programming - Off topic - Book reviews (some tech, some not) - M-m-m-mental and physical health - Ranting and raving - NOT Tech News - Linux kernel stuff - Unix-like conventions and meetups (BSD, Linux) - Interesting sites, tips, and tricks - Long segment, short segment, short segment - One long episode, two short episodes - Intro music pending ### Let Me Know! - chris@admindev.tech - forum.admindev.tech - iTunes: https://podcasts.apple.com/us/podcast/admindev-labs/id1476478667 - Stitcher: https://www.stitcher.com/podcast/the-rollbak/admindev-labs
## Race Conditions ### Definition - Two or more processes are reading or writing some shared data and the final result depends on who runs precisely when. ### Tanenbaum example (Printer daemon) - Process enters name of file in spooler dir - Printer daemon checks to see if file need printing - Prints and removes names from spooler dir - Spooler dir has 0 ... infinity - Two shared variables, output, point at file to be printed - in, points to free slot in spooler dir - Proc A and B queue file for printing - A reads in, stores slot 7 in variable - Clock interrupt occurs - B reads in, stores slot 7 in same variable - B writes to slot 7, updates in to slot 8 - A writes to slot 7, erasing what B put there, updates in to slot 8 - Spooler dir now in sync - B never receives output ### Golang example (Incrementing a counter) - Proc 1 read counter 0 - Yield thread 0 - Increment counter 1 - Proc 2 read counter 0 - Yield thread 0 - Increment counter 1 - Proc 1 write counter 1 - Proc 2 write counter 1 - Proc 1 read counter 1 - Yield thread 1 - Increment counter 2 - Proc 2 read counter 1 - Yield thread 1 - Increment counter 2 ### Go-isms - go run -race main.go - Don't communicate by sharing memory, share memory by communicating - Passing on a channel the data structure or object. ### Avoiding Race Conditions - No two processes may be simultaneously inside their critical regions. - No assumptions may be made about speeds or the number of CPUs. - No process running outside its critical region may block any process. - No process should have to wait forever to enter its critical region. ### Mutal Exclusion - While a process is busy updating shared memory no other process will attempt to enter shared memory space. - Disabling interrupts (Single CPU) - This approach is generally unattractive because it is unwise to give user processes the power to turn off interrupts. - Lock variables - Test the lock - If 0 set to 1 - Before process can set 0 to 1, another process reads as 0 - The race now occurs if the second process modifies the lock just after the first process has finished its second check. - Busy Waiting - It should usually be avoided, since it wastes CPU time - Mutual Exclusion Algorithm: G. L. Peterson - Each process calls enter_region - Wait, if necessary, until safe to enter shared memory region - Process calls leave_region after done with shared memory ``` #define FALSE 0 #define TRUE 1 #define N 2 / * number of processes * / int turn; / * whose turn is it? * / int interested[N]; / * all values initially 0 (FALSE) * / void enter region(int process); / * process is 0 or 1 * / { int other; / * number of the other process * / other = 1 − process; / * the opposite of process * / interested[process] = TRUE; / * show that you are interested * / turn = process; / * set flag * / while (turn == process && interested[other] == TRUE) / * null statement * / ; } void leave region(int process) / * process: who is leaving * / { interested[process] = FALSE; / * indicate departure from critical region * / } ```
Today I have the great pleasure of speaking with Lionel, a systems engineer with an incredible story about changing his career from a dead end job into the hustle and bustle of systems and software. Next episode I am going to dive into what I've been learning about threads and race conditions. ### Introducing Lionel - Systems Engineer - Ops, Dev, DBA - Management side, day to day, how he got to where he is, biggest challenge ### Threads and Race Conditions - Sneak peak into next episode - Golang tool - Functional Programming - Testing vs Design ### Lionel Interview - Who are you - What do you do ### How did you get here? - Your pressing situation - Cranking out certs - Getting the job ### Tech Enthusiast - Favorite technology stack - What interests you - What motivates you - Favorite part of your job ### Current Project ### Future and Biggest Challenge ### Shout out to Josh Duffney and Hayden Barnes
# Processes Continued - Lacking Thread Safety - Threads Share Resources - Processes Share Access - Concurrency and Parallelism on Multicore CPU - The Cost of Processes - Why use processes over threads? - Safety (again) - Isolation (processes under different users) - Better Memory Utilization with Low Memory Machines - Swapping is More Effective - Servicing (stopping, suspending, restarting other processes) - Distributed Computing # Applications - Apache - Google Chrome # Current Projects - Desktop migration - Game engine development - Forum architecture # Links 2D Game Engine Development on Linux https://www.udemy.com/course/cpp-2d-game-engine/
## Linux Centric, Processes, and Kernel Developers ### Changing Directions - Why "Linux"? - Interests change over time - Something I've consistently gone back to - My job and career - Can't stay away - Not a Revamp or a Refactor - Continuing with same format - Not a news show - Video is on hold - Random raw VLOG/videos ### Process - What is a process? - Instance of a program running - CPU instruction - What is a program? - File with information on how to construct a process - Binary format identification (metadata) format of executable - Machine-language instruction - Entry point address, where should the program execution being? - Data - Symbols and relocation tables, locations and names of functions, objects, debug - Shared-library and dynamic-linking information, lists of shared libraries needed at runtime - Types of processes - User initiated, interactive - Background, daemon, automated - Daemon - Online with the system - Haunt you forever, never die - User can interface with daemons ### Linux Process - Parent/Child - Child process: Existing process copies itself in memory - New PID for child, but runs concurrently with the program on execution - fork() - Both processes continue with the next instruction - Child has access to file, CPU registers, and I/O that parent has access to - PID and PPID are used to identify and keep track of processes - man page: The child process and the parent process run in separate memory spaces. At the time of fork() both memory spaces have the same content. Memory writes, file mappings (mmap(2)), and unmappings (munmap(2)) performed by one of the processes do not affect the other. - Source code coming ### Better tools for kernel developers - Reliance on e-mail for Linux kernel maintainers - Process is daunting to newcomers - Tooling to assist - 500 lines of Python - Provide message ID for email in a thread of interest - Entire thread downloaded and stored in local mbox file - Change in the process - Reading email threads - Organizing patches - Applying tags - Hesitance/resistance to change - Do developer workflows need to change? - Why? - Learn a newcomer vs ask for input - Linux kernel is great as is
### C++17 - Building GCC for C++17 - 16 threads ~20 minutes - Managing libraries ### It's a Bug, Not a Feature - Execution - TBB -- C++ template library - Parallel Algorithms ### Multiple Versioning - First time for everything - lib64 vs lib - Makefile - Linking the library directory ### C++ Crash Course by Lospinoso - Excellent modern programming book - Covers computer science topics - Details into REAL programming - Networking - Concurrency and Parallelism - Filesystems - Testing - C++ Algorithms - Parallel Sort - 1 billion random vectors - sort sequentially - sort in parallel - Boom, roasted ### Concurrency vs Parallelism - Concurrency - Two or more tasks in a time frame - Scheduling via the OS to send instructions to each task - Parallelism - Two or more tasks executing at the same time - Scheduling has threads executing at the same time - Race conditions ### BUT WHY?! - Forum Architecture - .NET Core - JavaScript - Ruuuuuuby - Deeper understanding - Systems programming
What's up everyone, today I am "wrapping up" the talk on Linux gaming. I need to correct the record on a few things and share my continued success with Elder Scrolls Online! Plus, some Linux feedback, news, and a PSA on encryption Linux Gaming Epilogue - DXVK - Wine - Lutris Linux Fun - Debian Bullseye - Proxmox - Current Distributions Linux News (???) - Ubuntu 20.04 - Wine 5 Encryption - More of a PSA - STORY TIME - dm-crypt - Encryption on Arch Linux - Encryption on Ubuntu https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#LUKS_on_a_partition https://help.ubuntu.com/community/Full_Disk_Encryption_Howto_2019 https://en.wikipedia.org/wiki/Dm-crypt
Today I talk about my experiences long ago and recent about gaming on Linux, my impressions of the Ubuntu Cinnamon Remix, and the plans for the Computer Science series. ##Gaming on Linux ### The Bad - Tedious - Lot of moving pieces (Wine? Lutris? Proton?) - Misrepresenting what it is - Still needs some work ### The Good - Surprisingly well done (Lutris) - With proper graphics settings and game settings, "it just works!" - Error reporting - Audio ## Ubuntu Cinnamon Remix - Really wanted to love it - Blank and bare - Weird graphics anomalies ## Computer Science Series Update - Learnin' myself - Playing with C - Data types and variables - Arrays - Decision - Loops - Functions - Pointers - IO/Reading/Writing - Abstract Data Types (some C++ AWW YEAH) ### Post Basics - Linux memory - Linux processes - Multithreading - Filesystems - OS design and development
Today I had the privilege of speaking with Hayden Barnes, a developer advocate for Ubuntu at Canonical. Hayden is known as the Microsoft guy at a Linux company, he founded Pengwin - a WSL distribution, and previously worked as an attorney. - From Law to Linux - Getting into systems programming - Working at Canonical - What is WSL? - WSL compared to WSL2 - Upstream from project to WSL - Future of WSL - Canonical's involvement - Skills for the job - Proudest project - Toughest challenge - Life outside of tech More on WSL 2: https://www.youtube.com/watch?v=lwhMThePdIo https://docs.microsoft.com/en-us/archive/blogs/wsl/pico-process-overview WSLConf: https://www.wslconf.dev/ More on Hayden: https://boxofcables.dev @unixterminal on Twitter
COMPLAINS ABOUT NEW YEARS RESOLUTION DOES EPISODE ON NEW YEARS RESOLUTION Things to learn in 2020 - Containers - Programming Language - Editor - Shell - Networking -- DNS -- Routing -- TCP/IP - Linux - Security -- Auditing -- Hardening - - Vulnerability and Risk - Participate in a Meetup - Hackathon
Today I installed Linux Mint because someone challenged my good sensibility. Install process was smooth. I was able to play Dark Souls III on Linux for the first time (git gud, scrub). Installed a few tools, KVM, and played with some themes and settings. Probably gonna stick around for a while!
What is Computer Science? - Computer logic, computational systems, process - Broad range of topics with a narrow base - Efficient step by step instructions Core Curriculum - Basic computing (demonstrated with a high level language) - Algorithm Analysis (Big-O Notation, sorting, searching, etc.) - Data Structures (Array, Linked List, Trees, Graphs, Stack/Queue) - Computer Architecture and Operating Systems Specializations - Programming Languages - Artificial Intelligence - Embedded Systems - Human/Computer Interaction - Bioinformatics Topics Going Forward - Operating Systems - Memory Management - Virtual Memory - Programming Languages -- Interpreters -- Compilers - Whatever tickles my fancy - Whatever tickles YOUR fancy!
## Devember Update ### Site is Live! - https://test.admindev.tech ### Development Efforts - Caching - Logging - Maintenance script ### What's Next - Caching - CI/CD Pipeline - Testing ### Upcoming - Computer Science - .NET, F#, and C# - Moar Guests - Operating Systems, Virtual Memory, Memory Management - Career Highlights: DevOps Engineer, Systems Administrator, Software Developer
Today I got to spend time with a great friend of mine, Mike Levan, and discuss his work in Azure, his experience being an author, and his experience as a leader in DevOps. Azure Solutions - Azure Deployment Center - AzureSQL - Azure Arc - AZCLIREST - Bringing it all together Azure Web Apps - What is it? - How does it help you? - Interesting problems/solutions PowerShell - Scripts, tools, and applications - Azure CLI - Managing Cloud with PowerShell - Managing OS/Azure Functions/Azure Web with PowerShell Cloud Ops & Scripting - Terraform - Kubernetes - Python Tech Outside of Azure - Microsoft Talks - DevOps Recipes with Azure
Josh Duffney joins me today to discuss his list of accomplishments and transforming his learning an education into a tech powerhouse. - Analysis Paralysis and Imposter Syndrome - Becoming more aggressive in learning and career - Current path - Azure - Getting certified - Azure services and problems - Orchestration - Kubernetes and Docker - Pros and benefits of containers - https://hyper.is/ - Security with containers - The software side - Ansible - PowerShell - Infrastructure as code/Configuration management - Accomplishments - Life - Deadlift milestone & Brazilian Jiu-Jitsu - Joining PluralSight - Reading, writing, and science fiction - Extreme Ownership & Jocko Willink
### My Promise - New site - Golang web server - Better aesthetics ### SysOps Too - Make time for yourself - 1 hour is all it takes - 30 days to form a new habit - Don't fail on your "New Years Resolution" ### Next Episodes - Josh Duffney - Mike Levan
### Man Page Sections 1. User Commands - Programs supplied by GNU C library - git - htop 2. System Calls - System calls provided by Linux kernel - write - read 3. Library Functions - Standard C library functions - pthread_create - rand 4. Devices - Devices in /dev and other places - loop - zero - sd 5. Files - File formats and processes - resolv.conf - passwd 7. Miscellaneous - UTF-8 - cgroups - daemon ### How to Read a Man Page - Command, section number, implementation (Linux Programmers Manual vs POSIX Programmers Manual) - Synopsis - Many (all) options - Can be read literally or as an example - Description - Technical details, brief explanation and history, program associations - Commands - How to interface with application - In the case of `less`, you are given navigation instructions - Options - Arguments or flags - Some documentation (sed) will use "Commands" and "Description" for technical usage - Additional Information - Environment Variables - Application specific commands or arguments (not POSIX or Linux, such as git) - Technical documentation such as security concerns, additional interfaces, and use cases - "EXAMPLES" sometimes included in this area - Author or Organization information - See Also ### Things to Lookout For - Look for underlines or italics (underlines are not literal, but implications) - Learn to navigate and search - / - h, j, k, l - n, b - Ctrl f, Ctrl b - gg and G - A and 0 - b/e, W/E - q ### Resources - https://explainshell.com/ - https://stackoverflow.com/questions - https://unix.stackexchange.com/ - https://www.reddit.com/r/bash/ - https://nostarch.com/absfreebsd3 - https://codingblocks.slack.com/ (go to their main page to join)
### Practical Scripts Personal Task Manager - Two scripts - Add a task - Find and display tasks -- Weekly, annual, and single entry -- Test for bad/incompatible formatting -- Save the data to a hidden file -- Second script changes current date into dayname, day and month, or day, month, and year -- String comparison -- Print tasks Largest Disk Occupancy - Loop through /etc/passwd (use cut to grab username and awk to iterate only UID over 99) - Use find and -xdev to specific certian directories (saves time) - Closing awk statement that only prints to accounts that have exceeded specified disk space - Modify/evolve script to e-mail users that have excessive disk space Provisioning Tool - Uses virt-install - Default values for RAM, CPU, and disk size - CLI arguments to include values and override defaults if necessary - Test for empty name and break out of script Additional Resources - The Linux Command Line - Linux Command Line and Shell Scripting Bible - Linux Academy - Wicked Cool Shell Scripts - learnshell.org - linuxcommand.org
### Reading from Files and Databases - Files -- List of commands -- The "read" command - Databases -- MySQL .my.cnf file, Postgres .pgpass -- Save path to variable --
## Shell Scripting ### Why Bother? - Despite the length of automating or scripting, the time you save in the end is worth it. - Understanding your system; baseline computer logic; thinking "programatically" - 31337 f***ing h@x ### Scripting Conventions - She Bang(s?) - /usr/bin/env python3 - /usr/bin/env ruby - chmod u+x ("YOU" can execute) chmod g+x (Your "GROUP" can execute) - Throw it in a crontab ### Scripting Logic - variables - while loops - for - until - if/then/else - case/switch statements ### Automation - Reading from files - Reading from databases - Arguments, environment variables, and user input ### User tools - dialog package - kdialog (KDE is the best, btw ;) )
## The *BSD Sides of Things Using *BSD For More Than Routing - Software Development - Systems Administration - Engineering Beast Mode 1. Netflix 2. Google 3. Cisco 4. Palo Alto Using *BSD For Routing - pfSense - OpenBSD - NetBSD Accessible Desktop - FuryBSD -- Enable Networking -- Configure x.org -- Trackpad utilities -- https://wiki.freebsd.org/SynapticsTouchpad Package Management - Latest and Greatest -- Clean sweep with updating -- Fetching updates and upgrades
SysOps 4 Life What is SysOps? SysOps vs DevOps SysOps Mantra - Document - Repeatable process - Runbook - Smooth operator Systems Operations - Clusters - Operating System patching - Operating System hardening - Ports, firewalls, and permissions - Resillience and redundancies Chaos Engineering - Netflix - Break your systems -- Safe ways to practice -- Remove server from load balancers -- Setup test/performance environment -- Plan for regular business day -- Notify your clients Backup Plan - Have a backup - Restore from backup - Automate backups (and restoring) - Gameplan for failure Know Your Systems - What is behind the stack - Start/Stopping/Managing services - Monitoring more than disk and CPU Certs - AWS Certified SysOps Administrator - Microsoft Certified Solutions Expert - RedHat Certified Engineer
Talking about increasing your worth in the bastion of technology. Projects, certs, demanding responsibility, and trusting yourself! Projects - Try something new - Try something familiar - Get out of your comfort zone Certifications - Practical - Clean base - Best practices - Apply what you've learned Asking For More - Mentoring - Additional tasks -- Start small -- Documentation and clean up Two Feet In - Question Desire - Aim to be true - Speak up
Functional Programming - Math - Puts the "fun" in "functional" - Interesting computerisms (lazy loading, immutable, looping through recursion) - Simplicity and expressiveness Clojure - Runs on JVM - Married to emacs - rest (docs: Returns a possibly empty seq of the items after the first. Calls seq on its argument.) Haskell - High performing - Lazy loading - Yesod -- Type enforcement/security: Links, Cross-site scripting, character encoding Terraform and Ansible - Immutable infrastructure - Written in Golang - Multi-vendor - User-data component for scripts/CfgMgmt - Community and Enterprise -- Enterprise introduces advanced/sophisticated features such as apply queue/locking Provisioning Strenghts and Weaknesses - Terraform great at provisioning - Ansible great at cfg but has provisioning capabilities KVM Provider - Simple as you want it to be - Cloud-Init
Raylib Exploring my career What do I know God hates JavaScript (flashbacks): - The creator of NodeJS leaves Node for Go - Prominent developer leaves NodeJS for Go, Julia, and Rust - When did JavaScript take over Rebranding of Perl! - Perl is getting rebranded as Raku -- Larry Wall has given his blessing to the name change Reviewing Programming Languages and "The Basics" - Python - Golang - C/C++ https://www.perl.com/pub/2000/10/begperl1.html/ http://www.catb.org/~esr/faqs/hacker-howto.html http://www.catb.org/jargon/html/S/Swiss-Army-chainsaw.html https://www.heroku.com/ http://dokku.viewdocs.io/dokku/
Cloud Operations II Systems via Service Providers - Azure DevOps + Build + Release ++ Deployment Groups ++ Agent Pools ++ Integration with other systems + VSTS + Issue log, Project planning, reporting tools - AWS CodeBuild + Build and test source code + Create and upload artifacts + Forward/Notify other services - AWS CodeDeploy + EC2 Instances + AWS CLI friendly + Avoids downtime - AWS CodeCommit + Version Control + Trigger builds * Note on Microservices and Functions Azure Functions and AWS Lambda - Azure Language - AWS Language - Real Time Processing + ETL (variety of services) + Application activity, log parsing, telemetry + Transcoding + Indexing + Integration into other services + API Monitoring - DataDog + Monitoring as a Service ++ Pay per agent ++ Pay per million log events ++ Pay per 10,000 test + Based on ELK stack + Support (Remote and On-Site) + Ease of management (multiple environments) + Tons of integration (AWS, PagerDuty, Azure, Active Directory) + Lack of documentation - ELK + Three services: Elasticsearch, Logstash, Kibana + Separate instances or all in one + Elasticsearch cluster ++ Shared data (shards) ++ Minimum nodes online ++ Forwarding node (very bizarre, in my opinion) + Logstash Grok Parsing ++ Ruby! ++ Separate files for ease of configuration ++ Great logs + Kibana ++ Integration with AD/LDAP ++ Rules/Policy Based ++ Dashboards, dashboards, dashboards! + Dramatic differences per version + Great support (when they answer) - Nagios/Sensu/Zabbix + Master server + Configure agents + Create rules for monitoring + Setup alerting
Welcome Back -- AdminDev Labs 2.0 Hiatus: Vacation in Little Rock - Cregeen's Irish Pub - North Bar - Dos Rocas Beer and Tacos Building a new Battlestation - AMD 3800X The Desire to Quit - Imposter Syndrome - The root of the situation - A governing body - Licensing Continuing Education - Discipline -- Practice like you would pushups or programming -- Review, remind, remedy Cloud Operations - Jack of all trades, master of some - Gunslinger/Knight - Understanding the needs of the business -- Financially responsible -- Time awareness - Right tool for the job -- Software -- Networking -- Systems --- Containers vs servers vs orchestration vs Infrastructure as Code - Knowing the providers
I finally done did it and went on the Kubernetes bandwagon. It wasn't what I expected, in a lot of good ways though. I explore my setup, setbacks, and uses for Kubernetes.
Talking DevOps with Microsoft today. Special guest Michael Levan, a DevOps professional and Cloud Engineer. Twitter: @TheNJDevOpsGuy Blog: https://www.thelifeofanengineer.org ARM What is ARM? ARM is a configuration management tool that has a JSON syntax. It allows you, in a programmatic way with the use of functions to write your software-defined-infrastructure. These functions are anything from concatenating to creating random values. You define your infrastructure by calling certain API's for your resources. These API calls are for anything from VMs to storage accounts to function apps. ARM is a configuration management tool much like Ansible and Chef. AKS What is AKS? AKS is an Azure-hosted Kubernetes service. This service allows you to tie your Kubernetes micro-service infrastructure into Azure. Azure hosts the master node for you (where the Kubernetes API is) and allows you to manage your workers. Azure What is Azure? Azure is a cloud based platform to host your infrastructure vs using standard on-prem. Azure DevOps What is Azure DevOps? Azure DevOps is an entire toolset of DevOps tooling. Azure DevOps can also be used to deploy things in ESXi and AWS. Despite the name, it's not just for Azure. Azure DevOps is comprised of; A ticketing system A wiki CI CD Test plans Azure Repos (Like Github) PowerShell What is PowerShell? PowerShell is a programming/scripting language that is used to automate your deployments. Anything from building Docker settings to deploying VMs to building full-fledged automation solutions for your entire infrastructure .NET Framework What is the .NET Framework? The .NET framework is what is under the hood of PowerShell. Because of this, you're able to use assemblies (DLLs), namespaces, classes, and methods of the .NET framework to incorporate into your automation-based PowerShell tooling Git What is Git? Git is a distributed version control system to track your source code (commits, pushes, pulls, history, etc.) of your Dev, UAT, and Production code base. Github/Azure Repos What is Github/Azure Repos? This tooling is where you store your source code and use Git to interact with your source code (for DVC) VSCode What is VSCode? VSCode is an IDE/script editor to write your code. VSCode also has extensions that allow you to tie into services from Azure to PowerShell to Python to YAML etc. https://github.com/AdminTurnedDevOps/WebAppTesting/blob/master/New-Smoketest.ps1 https://www.thelifeofanengineer.org/2019/08/devops-tooling-in-microsoft-realm.html https://github.com/AdminTurnedDevOps/WebAppTesting/blob/master/New-Smoketest.ps1
# Cloud vs Data Center - Cloud is not synonymous with success - Hidden costs - Balance and scale - Provisioning for the DC 1. VMware 2. KVM # Load Balancing - At the server level - At the data link layer - At the network (routing) layer - LB Technology - Configuring Nginx - Configuring HAProxy - Configuring AWS Elastic LB # Autoscaling - Pools (VMware Load Balancing -- RoundRobin or Least Connections) - Through the cloud (AWS Example) - Through the DC (VMware Example) (vRealize + NSX) - Manually intervening (Monitoring, scripting, service accounts) # Load Testing - Point of load testing - Locust (Python Framework) - BlazeMeter (subscription) - Siege (Linux package) # Infrastructure as Code - Terraform - Ansible - CloudFormation
DevOps What is DevOps Skipping the origin story. What to expect? Ops side: Sitting with development team. Planning with development team. Sysadmin for devs. Dev side: Controlling your own infrastructure. Being expected to know how deployment works. Monitoring and Feedback - HTTP requests - System activity - The wonderful world of logging Contingency plans - Blue/Green - A/B - Roll Back! - Version Control CI/CD Jenkins - Use of environment variables - Groovy - Multibranch pipelines - Plugins and SDKs - Polling - GitHub Pull Request GitLab - GitLab Runners - Issue tracking Provisioning - Make it clean - Commit to VCS - Programming style - YAML vs JSON
Linux Applications Joplin https://joplinapp.org/ Terminator http://www.linuxandubuntu.com/home/terminator-a-linux-terminal-emulator-with-multiple-terminals-in-one-window Pinta https://pinta-project.com/pintaproject/pinta/ Guake http://guake-project.org/ Bibisco https://www.bibisco.com/ VS Code https://code.visualstudio.com/download VimAwesome https://vimawesome.com/ Vundle https://github.com/VundleVim/Vundle.vim Windows Applications Chocolatey https://chocolatey.org/ PowerShell Core https://github.com/PowerShell/PowerShell/releases/tag/v6.2.2 MobaXTerm https://mobaxterm.mobatek.net/ Windows Terminal https://www.microsoft.com/en-us/p/windows-terminal-preview/9n0dx20hk701?ocid=AID681541_aff_7593_1243925&cid=msft_web_chart&activetab=pivot:overviewtab Windows Subsystem for Linux https://aka.ms/wslstore Docker https://docs.docker.com/docker-for-windows/install/ VMware Workstation https://www.vmware.com/products/workstation-pro.html Visual Studio: Community Edition https://visualstudio.microsoft.com/vs/community/
Desktop Environments and Distributions What is a Desktop Environment? Tools, window managers, login managers, display managers, all of the components What is a distribution? When I say Linux, I don't mean the kernel, I mean the operating system running on top of it. Gnome, Gnome 3, Gnome Shell GTK, Wayland, X11 Mac-like + Hot corners + Suite of extensions + Themes + Snappy - Hard set to 60hz - Poor multimonitor support KDE Qt, Basic Wayland, X11 Windows-like + Start Menu + Pinned applications + Theme store + A lot out of the box + Really smooth composite manager - Hidden WiFi quirks - Weird display settings quirks XFCE GTK, X11 Mac-like Windows-like It just depends - Very basic out of the box - Toolbar needs some work + Extremely customizable + Launcher or Start Menu + Versatile Themes - Multimonitor support was not great Cinnamon GTK, X11 Windows-like + Start Menu + Aesthetically pleasing - Trouble with multimonitor and discrete GPU + Customizable MATE GTK, X11 Mac-like + Status in top + Launcher in the bottom +/- Interesting composite manager +/- GPU +/- CPU +/- Other (CPU) + Lightweight environment ++ Very nice community Ubuntu + Tons of support + Most widely used + Fast + Long support window + Optimal for games + Huge repository +/- Based on Debian Testing - Dramatic changes - Non-LTS unstable - Inconsistent drivers and driver support Fedora + Great community + Enterprise development + Leading edge + Have yum and rpm available + Great support and development - Enjoy patching - Questionable release cycle - Lack of options Debian + Incredibly stable + Perfect for prod + Secure + Massive repository selection - Not as sophisticated out of the box (no sudo, for example) - Unknown release cycle - Behind other distributions Linux Mint + Tons of support out of the box + Based on Ubuntu + Stable + GUI options - Sketchy past - Green Theme openSUSE + Great community + Great support and drivers + KDE Champion + Stable or Rolling Release + RPM, packman, zypper - Limited selection - Tough to find information Arch Linux + Simple + Great support and documentation + (B)Leeding Edge (Stable upstream) + Versatile - Manual installation - Frequent updates - Questionable reliability
Building a Linux workstation Hardware compatability list https://www.linuxjournal.com/supportedhardware https://www.linux-laptop.net/ https://wiki.ubuntu.com/HardwareSupport Things to consider: - Browser box ++ Get away with i5 and 8GB of RAM ++ Something with a decent resolution, nice screen =-=-= 14" go high DPI settings for ease of reading on 1080p - Workhorse ++ i7 processor, the more cores the better (AMD is an option too) ++ 32GB of RAM ++ Discrete Graphics =-=-= Ubuntu (mixed results) =-=-= Debian (older version but rock solid) =-=-= Arch Linux (never had issues) =-=-= Fedora (Negativo17 is aweeesome) ++ 1080p - 1440p or multiple ports/easily docked (Thunderbolt 3, docking station, USB C Dock) - Gaming/Media ++ GTX Series or Radeon Graphics, no QUADRO or FIREPRO ++ High quality screen, 1440p to 2160p =-=-= Consider your DE when getting a higher resolution or high refresh rate screen =-=-= Gnome hard locked a lot of times - Admin box ++ Ethernet port ++ 5Ghz and 2.4Ghz WiFi ++ Decent RAM - 16GB
This episode I have guest Luke Brown, and he discusses his insights, experience, and opinions with communicating with virtual teams, supporting hybrid environments, and working with applications and their servers.
As a systems engineer we need to borrow and learn from software engineering: Software methodologies Version Control SDLC Testing Tools and utilities Algorithm Analysis Chef is awesome :D More on Algorithm Analysis later!
Get your VM on! Today I discuss my experience and what I think the benefits are of ESXi, Hyper-V, and KVM. Enjoy the links below! https://www.vmware.com/support/developer/windowstoolkit/wintk40u1/html/index.html https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/try-hyper-v-powershell https://www.altaro.com/hyper-v/10-awesome-hyper-v-cmdlets/ https://linux.die.net/man/1/virt-top https://computingforgeeks.com/virsh-commands-cheatsheet/ Any feedback, comments, or questions are appreciated! Head over to https://forum.admindev.tech or e-mail me at chris@admindev.tech Thanks!
At the winning of the vote, I am submitting this first episode as an introduction. I dive into my work history as well as how I got into the world of I.T. Also cats.