This repository is a playground for exploring and testing various DevOps tools commonly used in infrastructure automation, configuration management, and CI/CD pipelines. It is designed to be a learning resource and a place to document workflows, scripts, and example configurations.
This repository contains code samples, scripts, and configuration files to help with the following:
- Automating infrastructure provisioning using Terraform
- Managing configuration for servers and applications with Ansible
- Implementing DevOps best practices and experimenting with CI/CD workflows
- Testing integrations between Terraform, Ansible, and cloud providers (e.g., AWS, Azure)
The goal is to provide a hands-on environment for learning and experimenting with these tools.
- Terraform: For infrastructure provisioning and management.
- Ansible: For configuration management and application deployment.
- Python: For scripting and automating custom tasks.
- Bash/PowerShell: For shell scripting as needed.
- CI/CD Tools: GitHub Actions, Jenkins (if applicable).
To use this repository, you’ll need:
- Terraform installed
- Ansible installed
- Access to a cloud provider (e.g., AWS, Azure) with credentials set up
- Git, Bash, and optionally Python 3.x for additional scripting
-
Clone the repository:
git clone git@github.com:ejohnguia/devops-train.git cd devops-train
-
Set up environment variables for Terraform and Ansible if needed:
export ACCESS_KEY_ID=your_access_key export SECRET_ACCESS_KEY=your_secret_key
-
Install Python dependencies (if any):
pip install -r requirements.txt
.
├── terraform/ # Terraform configuration files
│ ├── main.tf # Example main configuration
│ ├── variables.tf # Variables used in Terraform
│ └── outputs.tf # Outputs of Terraform resources
├── ansible/ # Ansible playbooks and roles
│ ├── playbook.yml # Main Ansible playbook
│ └── roles/ # Ansible roles
├── scripts/ # Shell/Python scripts for automation
├── .github/workflows/ # GitHub Actions workflows (if using GitHub Actions)
└── README.md # This README file
Based on the DevOps Roadmap, the following tools and concepts will be explored as part of this repository:
- Operating Systems: Focusing on Linux fundamentals and shell scripting
- Programming/Scripting: Python and Bash for automation
- Infrastructure as Code (IaC):
- Terraform: Automating infrastructure setup on cloud providers
- CloudFormation (AWS), ARM Templates (Azure): To be explored for cloud-native IaC
- Configuration Management:
- Ansible: Automating application and environment configurations
- Chef and Puppet: To be considered for advanced use cases
- CI/CD Tools:
- GitHub Actions: For CI/CD pipelines
- Jenkins: To be explored for end-to-end automation
- Containers & Orchestration:
- Docker: Building and running containerized applications
- Kubernetes: Managing container clusters
- Monitoring & Logging:
- Prometheus & Grafana: Setting up metrics and visualization
- ELK Stack (Elasticsearch, Logstash, and Kibana): Centralized logging
- Cloud Providers:
- AWS, Azure, Google Cloud: Testing IaC and configuration management across providers
- Networking Basics: Understanding key concepts for network configuration and security
- Version Control:
- Git: Branching strategies, workflows, and best practices
This list will expand as the project grows, incorporating additional tools and techniques aligned with DevOps best practices.