2.1 The basics: What you’ll need to build your lab
2.2 Using new equipment for your lab
2.3 Using old PCs and laptops
2.4 Raspberry Pis and IoT devices
2.5 Building your network
2.6 A few words on networking
2.7 Optionally install Webmin
3) Setting up a virtual environment
3.1 Why it matters
3.2 About ProxMox VE
3.3 About plain KVM
3.4 Graphical deployments vs. the command line
3.5 Set up ProxMox VE
3.6 Set up Plain KVM
3.7 Command line deployments
3.8 Conclusion
4) Set up a DNS server
4.1 Why it matters
4.2 Sketching out your network
4.3 Configure your routers and switches
4.4 Deploy a VM to host the DNS server
4.5 Install bind
4.6 Set up your domain master
4.7 Set up an optional slave
4.8 Enable and start the named service
4.9 Graphical deployments and management
4.10 Containerize it
5) Set up an email server
5.1 Why it matters
5.2 Deploy a VM to host your mail server
5.3 Install Postfix and Dovecot
5.4 Configure Postfix
5.5 Configure SMTP with Dovecot
5.6 Mail server security considerations
5.7 Initial email service tests
5.8 Set up Thunderbird, Evolution or other graphical email client
5.9 Optional SquirrelMail deployment
5.10 Containerize it
6) Set up a LAMP web server
6.1 Why it matters
6.2 Deploy an LXC or VM host
6.3 Configure the host network and name
6.4 Install the web server
6.5 Create your first virtual host
6.6 Install PHP
6.7 Install MariaDB
6.8 Install Adminer or PHPMyAdmin to graphically manager MariaDB
6.9 Create a single-file PHP app and connect it to a MariaDB database
6.10 Containerize it
7) Website alternatives
7.1 Why it matters
7.2 Deploy a different kind of web server
7.3 Try python3 http.server
7.4 Deploy Wordpress
7.5 Configure Wordpress and login
7.6 Containerize it
8) Server management and maintenance
8.1 Why it matters
8.2 Install Webmin on a new or existing host
8.3 Configure Webmin to manage multiple hosts
8.4 Backup your servers
9) Automation with Chef and Ansible
9.1 Why it matters
9.2 Install Ansible
9.3 Install Chef
10) Think DevOps
10.1 Why it matters
10.2 Why containers and microservices are taking over the world
10.3 How automation tools like Ansible and Chef make server configuration easier
10.4 Why deploying applications in containers is so popular
10.5 Taking advantage of these services in your lab
11) Extend your lab
11.1 Why it matters
11.2 Create a Docker host
11.3 Create a GitLab host
11.4 Deploy Kubernetes with Git-based scripts
11.5 Experiment with OpenStack
12) Resources
12.1 Github repo
12.2 Software links
12.3 Helpful sites
12.4 References to software used
John S. Tonello writes about technology, software, infrastructure-as-code and DevOps, and has spent more than 20 years working in and around the software industry for companies like Tenable, HashiCorp, SUSE, Chef and Puppet. He’s spent more than 25 years building Linux-based environments, and regularly publishes a wide range of how-to guides and blogs about DevOps, Linux, and software-defined infrastructure.
Learn, develop and hone your Linux and DevOps skills by building a lab for learning, testing and exploring the latest Linux and open-source technologies. This book helps Linux users and others to master modern DevOps practices using a wide range of software and tools.
Having a home or work-based Linux lab is indispensable to anyone looking to experiment with the ever-evolving landscape of new software and DevOps. With open-source tools and readily available hardware, you will end up with a lab you can use to try virtually any modern software, including Chef, Docker, Kubernetes and stalwarts like DNS, Dovecot, and Postfix for email. You'll set up pipelines for software deployment and focus on discrete projects that help you learn through doing. In the end, you'll acquire the skills needed to become better informed, more marketable engineers and developers, and better able to take on a wide array of software projects with confidence.
Practical Linux DevOps is the perfect companion for those who want to learn how to build systems with utility and learn about modern hardware and software practices.
You will:
Set up a Linux-based virtualization environment and workstation
Create a lab network with a fully qualified domain