دوره ی آنلاین مهندسی دواپس
DevOps یکی از حوزه های داغ این روزهاست که طرفداران زیادی رو به خود جذب کرده
اما DevOps یک role و عنوان شغلی نیست , یک فرهنگ است که به یک چیز هم تاکید بسیاری دارد :
تعامل بین تیم های Developerو Operation
تا کد Developer به محض ورود به Version Control ای همچون Git قابلیت Build ,Test و Deploy شدن به صورت اتوماتیک را داشته باشد .
گاه میشنویم که DevOps یک سری ابزار است اما این ابزار ها هستند که کمک میکنند تا این فرهنگ و هدف ایجاد شود .
توضیحات
معرفی دوره ی مهندسی دواپس
DevOps از حوزه های داغ و همینطور پر طرفدار و جدید این روز هاست تا انجایی که بسیاری از sysadmin ها در حال مهاجرت به سمت DevOps Engineer شدن هستند و یا با توجه به وجود Micro service ها ملزم به یادگیری ابزار های مربوط به حوزه DevOps همچون Docker ,Ansible ,Terraform و … هستند .
ما در سانانت تلاش کردیم تا دوره مهندسی دواپس را به طور جامع طراحی کنیم تا افراد علاقه مند تنها با داشتن پیش نیاز Lpic1 و یا آشنایی با لینوکس وارد دوره شوند و در انتها با عنوان Junior DevOps وارد بازار کار شوند .
در این دوره ابتدا به سراغ لینوکس خواهیم رفت .
به عنوان DevOps Engineer چه سطحی از Linux را باید داشته باشید؟در این دوره تمامی این تخصص هارا پوشش خواهیم داد و سپس به سراغ ابزار های DevOps همچون داکر , Git , Gitlab ,Kubernetes و … خواهیم رفت که در ادامه میتوانید سرفصل هارا مشاهده کنید .
در دوره ی مهندسی DevOps تمامی سرفصل ها با توجه به بازار کار میباشد و خدا را شاکر هستیم که خروجی دوره های پیشین بسیار مثبت بوده .
مدت این دوره ۱۲۵ ساعت است , اما چطور همواره بتوانیم انگیزه و تمرکز خود را در طول دوره حفظ کنیم؟
با توجه به تجربه های پیشین در این دوره کوچ اختصاصی با خانم یگانه حسین خانی داریم که جلسات ۲ بار در ماه و در روز های ۳ شنبه برگزار می شود که میتواند کمک بسیاری برای ادامه مسیر کند که سرفصل ها را میتوانید در ادامه مشاهده کنید .
ویٰژگی های دوره :
- ۱-جلسات حل تمرین
- ۲-جلسات کوچینگ
- ۳-اسلاید های اختصاصی
- ۴-لابراتوار در دیتاسنتر
پس از اتمام دوره مدرک MPT اتریش به شما اعطا خواهد شد
ورود و دسترسی به دوره
پس از ثبت نام از طریق زیر میتوانید وارد دوره شوید:
از طریق اسکای روم
از طریق اسپات پلیر
ویژه دانشجویان دوره
دانلود فایل جلسات
سرفصل های دوره
لینوکس (Lpic2):
Introduction to Disk Partitioning
- Overview of disk partitioning
- Importance of partitioning in system setup
Master Boot Record (MBR)
- Explanation of MBR structure and layout
- Limitations of MBR partitioning
- MBR partition types (primary, extended, logical)
GUID Partition Table (GPT)
- Introduction to GPT and its advantages over MBR
- Understanding GPT structure and layout
- GPT partition types (primary, secondary, logical)
Differences Between MBR and GPT
- Comparing MBR and GPT partitioning schemes
- Limitations and benefits of each partitioning scheme
- Choosing between MBR and GPT for different use cases
Partitioning Tools and Utilities
- Overview of partitioning tools (fdisk, parted, gdisk)
- Using command-line utilities for disk partitioning
- GUI-based partitioning tools (GParted, KDE Partition Manager)
Disk Partitioning in Linux Installation
- Disk partitioning during Linux installation
- Guided vs. manual partitioning options
- Best practices for partitioning Linux systems
Logical Volume Manager (LVM)
- Introduction to LVM and its advantages
- Logical Volume Management concepts (Physical Volumes, Volume Groups, Logical Volumes)
- Benefits of LVM over traditional partitioning schemes
Creating and Managing LVM Volumes
- Setting up Physical Volumes (PVs)
- Creating Volume Groups (VGs) and adding PVs to VGs
- Creating Logical Volumes (LVs) from VGs
Introduction to systemd
- Overview of systemd and its role in modern Linux distributions
- Advantages of systemd over traditional init systems
Basics of systemd Services
- Understanding systemd service units
- Types of systemd services (simple, forking, oneshot, etc.)
- Anatomy of a systemd service unit file
Creating and Managing systemd Services
- Creating a basic systemd service unit
- Starting, stopping, restarting, and reloading services
- Enabling and disabling services to start at boot
Service Dependencies and Ordering
- Defining service dependencies with Requires, Wants, Before, After, etc.
- Controlling service startup order
- Handling service dependencies dynamically with systemd.target units
Logging and Monitoring systemd Services
- Viewing service logs with journalctl
- Monitoring service status and health
- Setting up service-specific logging options
Environment Variables and Configuration for Services
- Passing environment variables to systemd services
- Using environment files for service configuration
- Managing service-specific configuration options
Resource Control and Limiting
- Configuring resource limits for systemd services (CPU, memory, etc.)
- Setting service execution priorities
- Controlling resource usage with systemd resource control directives
Managing Multi-Instance Services
- Introduction to multi-instance services
- Creating and configuring multiple instances of a service
- Managing and monitoring multiple service instances
Template Units for Multi-Instance Services
- Creating template unit files for multi-instance services
- Dynamic instance naming and instantiation
- Modifying and customizing template units for specific instances
Writing systemd Service Unit for Flask API
- Understanding systemd service units
- Writing systemd service unit file for Flask API
- Configuring service options such as restart policies and environment variables
Setting up Multi-Instance Flask API
- Understanding the concept of multi-instance Flask API
- Writing multiple configuration files for different instances
- Starting multiple instances of Flask API with systemd
- Installation and Basic Configuration
- Installing Nginx on Different Platforms
- Introduction to nginx.conf Configuration File
- Basic Server Block Configuration
- HTTP Server
- Handling HTTP Requests
- Location Blocks and Directives
- Static File Serving
- Reverse Proxy
- Configuring Nginx as a Reverse Proxy
- Proxy_pass Directive
- Load Balancing Methods
- SSL/TLS Configuration
- Generating SSL Certificates
- Configuring HTTPS
- SSL/TLS Best Practices
- Advanced Configuration Directives
- Rewrite Rules
- Access Control
- Rate Limiting
- Caching
- Proxy Cache
- Fastcgi_cache
- Cache Invalidation
- Performance Optimization
- Tuning Worker Processes
- Connection Handling
- Gzip Compression
- Security Features
- Securing Server Blocks
- Preventing Common Attacks
- Using HTTP Headers for Security
- High Availability and Scalability
- Load Balancing Strategies
- Session Persistence
- Clustering
- Monitoring and Logging
- Nginx Access and Error Logs
- Monitoring Tools and Techniques
- Log Analysis
- Integration with Other Technologies
- PHP-FPM Integration
- Node.js Integration
- Caching Solutions Integration
- Introduction to High Availability with Keepalived and Nginx
- Overview of Keepalived and its role in achieving high availability
- Introduction to Nginx as a load balancer
- Use cases and benefits of a highly available Nginx load balancer setup
- Installation and Configuration of Keepalived
- Installing Keepalived on Linux
- Basic Configuration File (keepalived.conf)
- Setting up Virtual IP (VIP) for Nginx load balancer
- Introduction to HAProxy
- Overview of HAProxy
- Use cases and scenarios
- Installation and Basic Configuration
- Installing HAProxy on Different Platforms
- Basic Configuration Files
- Starting and Stopping HAProxy
- Frontend and Backend Configuration
- Configuring Frontend and Backend Sections
- Bind Options and Listening Ports
- Backend Server Configuration
- Load Balancing Algorithms
- Overview of Load Balancing Algorithms (Round Robin, Least Connections, Source IP Hash, etc.)
- Configuring Load Balancing Algorithms
- Health Checks and Monitoring
- Implementing Health Checks for Backend Servers
- Monitoring Backend Server Health
- Failover Strategies
- SSL/TLS Termination
- SSL/TLS Offloading with HAProxy
- SSL/TLS Configuration Options
- Certificates and Key Management
- High Availability Setup
- Implementing High Availability with HAProxy
- Active-Passive and Active-Active Configurations
- Heartbeat and Failover Mechanisms
- Introduction to BIND DNS Server
- Overview of BIND DNS Server
- Role and Importance of DNS in Networking
- Installation and Basic Configuration
- Installing BIND DNS Server on Various Platforms (Linux, Windows)
- Configuration Files (named.conf, named.conf.options, named.conf.local)
- Starting and Stopping BIND Service
- DNS Zone Configuration
- Understanding DNS Zones (Forward and Reverse Zones)
- Configuring Forward and Reverse Zones
- Zone Files Syntax and Records (A, CNAME, MX, NS, PTR, etc.)
- Primary and Secondary DNS Servers
- Configuring Primary and Secondary DNS Servers
- Zone Transfer (AXFR and IXFR)
- DNS Security
- DNSSEC (Domain Name System Security Extensions)
- TSIG (Transaction Signature) for Zone Transfers
- ACLs (Access Control Lists) for DNS Queries
- DNS Resolution and Forwarding
- Configuring Forwarders in BIND
- DNS Resolution Process in BIND
- Recursive and Iterative Queries
Container Runtime & Container Engines :
- Overview of Containerization
- Introduction to containerization and its benefits
- Comparison between containers and virtual machines
- Use cases for containerization in software development and deployment
- Container Components and Architecture
- Understanding the components of a container: image, container runtime, container engine
- Exploring the architecture of container runtimes and engines
- Overview of container orchestration and its role in managing containers at scale
- Overview of Containerization
Understanding Container Runtimes
- Definition and role of container runtimes in container execution
- Types of container runtimes: high-level and low-level runtimes
- Comparison between container runtimes: Docker, containerd, rkt, cri-o, etc.
- High-level Container Runtimes
- Exploring high-level container runtimes like Docker and containerd
- Understanding the features and functionalities provided by high-level runtimes
- Use cases and considerations for choosing a high-level container runtime
Docker and Docker Registry :
Docker
- Overview of containerization
- Introduction to Docker and its components
- Docker use cases and benefits
Docker Architecture
- Understanding Docker architecture (client-server model)
- Docker Engine components (Docker daemon, REST API, CLI)
- Containerd and other components
Docker Images
- Understanding Docker images
- Dockerfile syntax and best practices
- Building custom Docker images
Docker Containers
- Creating and running Docker containers
- Managing container lifecycle (start, stop, restart)
- Inspecting container logs and status
Docker Log Drivers
- Overview of Docker log drivers
- Different log driver options (json-file, syslog, journald, fluentd, etc.)
- Configuring logging options for Docker containers
Docker Networking
- Overview of Docker networking modes (bridge, host, overlay, macvlan)
- Docker networking drivers and plugins
- Configuring container networking (port mapping, network aliases)
Docker Storage
- Understanding Docker storage drivers
- Persistent storage options for Docker containers (volumes, bind mounts)
- Docker volume management and backup strategies
Docker Volumes
- Introduction to Docker volumes
- Creating and managing Docker volumes
- Volume types and usage scenarios (local, named, anonymous)
Docker Compose
- Introduction to Docker Compose
- Writing Docker Compose YAML files
- Managing multi-container applications with Docker Compose
Docker Swarm
- Introduction to Docker Swarm
- Setting up Docker Swarm cluster
- Deploying and managing services with Docker Swarm
Docker Orchestration with Kubernetes
- Comparing Docker Swarm and Kubernetes
Docker API
- Overview of Docker Remote API
- Using Docker Remote API for container management
- Building applications with Docker API
Docker Registry
Introduction to Docker Registry
- Overview of Docker Registry and its role in containerization
- Purpose and benefits of using Docker Registry
Setting up a Docker Registry
- Installing and configuring a private Docker Registry
- Securing Docker Registry with authentication and access control
Pushing and Pulling Images
- Pushing Docker images to a private Docker Registry
- Pulling Docker images from a private Docker Registry
- Managing image versions and tags in Docker Registry
Harbor:
Introduction to Harbor
- Overview of Harbor as an enterprise-class container registry
- Features and benefits of using Harbor for container management
Installing and Configuring Harbor
- Deploying Harbor in Kubernetes or standalone mode
- Configuring Harbor projects, users, and permissions
Image Management with Harbor
- Uploading and downloading images to/from Harbor
- Scanning images for vulnerabilities with Harbor's integrated security features
Replication and High Availability
- Configuring image replication between Harbor instances
- Implementing high availability and disaster recovery strategies with Harbor
Harbor as a Helm Chart Repository
- Using Harbor as a Helm chart repository for Kubernetes applications
- Managing Helm charts and releases with Harbor
API :
Introduction to APIs
- ? What is an API
- Types of APIs (REST, SOAP, GraphQL, etc.)
- Importance of APIs in modern software development
- understanding REST API
- Principles of RESTful architecture
- Key components: Resources, URIs, HTTP methods, Representations (JSON, XML)
- Characteristics of RESTful APIs: Statelessness, Uniform Interface, Layered System, etc.
- HTTP Basics
- Overview of HTTP (Hypertext Transfer Protocol)
- Understanding HTTP methods: GET, POST, PUT, DELETE, PATCH
- HTTP status codes and their meanings (2xx, 3xx, 4xx, 5xx)
- Hands-on exercises: Making HTTP requests using tools like cURL, Postman, or browser Developer Tools
HAProxy
Git and Gitlab :
Introduction to Version Control Systems (VCS)
- Overview of version control
- Importance of version control in software development
- Introduction to distributed version control systems (DVCS) like Git
Git Basics
- Understanding the Git workflow
- Git terminology (repository, commit, branch, merge, etc.)
- Installing Git and setting up Git configurations
Git Repository
- Initializing a Git repository
- Cloning existing repositories
- Adding and removing files from the staging area
Git Commits
- Committing changes to the repository
- Writing good commit messages
- Amending and squashing commits
Branching and Merging
- Creating and managing branches
- Switching between branches
- Merging branches and resolving merge conflicts
Remote Repositories
- Adding remote repositories
- Pushing and pulling changes from remote repositories
- Managing upstream branches
Collaborating with Git
- Forking and cloning repositories from remote platforms (e.g., GitHub, GitLab)
- Pull requests and code reviews
- Managing repository permissions and access control
Introduction to GitLab
- Overview of GitLab and its features
- Key components of GitLab (repositories, issues, merge requests, pipelines, etc.)
- Comparison with other Git hosting platforms (e.g., GitHub, Bitbucket)
Setting up GitLab
- Installing and configuring GitLab (self-hosted or cloud-based)
- Creating user accounts and managing access permissions
- Configuring GitLab projects and groups
GitLab Repositories
- Creating and managing Git repositories in GitLab
- Cloning repositories from GitLab
- Pushing and pulling changes to/from GitLab repositories
GitLab Issues
- Managing project issues and feature requests
- Creating and assigning issues
- Tracking issue progress and status updates
GitLab Merge Requests
- Introduction to merge requests (MRs) in GitLab
- Creating merge requests for code review and collaboration
- Reviewing and approving merge requests
GitLab Pipelines
- Understanding GitLab CI/CD pipelines
- Configuring CI/CD pipelines with
.gitlab-ci.yml
files - Running tests, building artifacts, and deploying applications using pipelines
GitLab Runners and Executors
- Introduction to GitLab Runners
- Configuring and registering GitLab Runners
- Understanding different types of executors (e.g., shell, Docker, Kubernetes)
GitLab Snippets
- Sharing code snippets and examples in GitLab
- Creating, editing, and managing snippets
- Collaborating on snippets with team members
GitLab Security Features
- Overview of GitLab's security capabilities
- Security scanning for vulnerabilities (SAST, DAST, Dependency scanning)
- Implementing security policies and best practices
GitLab Integrations
- Integrating GitLab with other tools and services (e.g., Slack, JIRA, Jenkins)
- Configuring webhooks and service integrations
- Streamlining workflows with third-party integrations
GitLab API
- Introduction to GitLab API
- Authentication and access control with GitLab API
- Using GitLab API for automation, scripting, and integration with external systems
Integration with Kubernetes
- Overview of integrating GitLab with Kubernetes
- Deploying applications to Kubernetes clusters from GitLab CI/CD pipelines
- Managing Kubernetes resources through GitLab's interface
Kubernetes and Rancher :
Overview of Kubernetes (K8s)
- Introduction to Kubernetes
- Key features and benefits of Kubernetes
- Use cases and industry adoption of Kubernetes
Kubernetes Components
- Master components (kube-apiserver, kube-controller-manager, kube-scheduler, etcd)
- Node components (kubelet, kube-proxy, container runtime)
- Add-ons (DNS, Dashboard, Ingress controller, etc.)
Cluster Architecture
- Understanding Kubernetes cluster architecture
- Master node and worker node roles
- High availability and fault tolerance considerations
Namespace
- Introduction to Kubernetes namespaces
- Creating and managing namespaces
- Namespace isolation and resource quotas
Labels
- Understanding labels in Kubernetes
- Label selectors and matching
- Best practices for labeling resources
Pod VS Container
- Difference between a Pod and a Container
- Why Pods are used in Kubernetes
- Pod design patterns and best practices
Init Containers
- Introduction to init containers
- Use cases for init containers
- Writing and configuring init containers in Kubernetes manifests
Controllers
- Overview of Kubernetes controllers (ReplicaSet, Deployment, StatefulSet, DaemonSet)
- Role and responsibilities of controllers
- Use cases and best practices for different types of controllers
Probes
- Understanding Kubernetes probes (liveness, readiness, startup probes)
- Configuring probe parameters
- Handling container lifecycle events with probes
Networking
- Overview of Kubernetes networking model
- Kubernetes Services for service discovery and load balancing
- Ingress and Ingress Controllers for HTTP/HTTPS routing
- Using Ingress resources to define routing rules
Ingress Controller
- Introduction to Ingress Controllers
- How Ingress Controllers work in Kubernetes
- Configuring and deploying Ingress Controllers
Nginx Ingress Controller
- Introduction to Nginx Ingress Controller
- Installing and configuring Nginx Ingress Controller
- Advanced features and customization options
Traffic Ingress Controller
- Overview of Traffic Ingress Controller
- Features and advantages of Traffic Ingress Controller
- Installation and configuration steps
CNI Types (Container Network Interface)
- Introduction to CNI and its importance in Kubernetes networking
- Overview of different CNI types (e.g., Calico, Flannel, Weave Net, Cilium)
- Features, use cases, and considerations for each CNI type
Services
- Introduction to Kubernetes Services
- Types of Services (ClusterIP, NodePort, LoadBalancer, ExternalName)
- Use cases and considerations for each type of Service
RBAC (Role-Based Access Control)
- Introduction to RBAC in Kubernetes
- Role, RoleBinding, ClusterRole, and ClusterRoleBinding resources
- Implementing RBAC policies for users and service accounts
Secret
- Managing sensitive information with Kubernetes secrets
- Creating, accessing, and updating secrets
- Best practices for securing and managing secrets
ConfigMap
- Managing configuration data with Kubernetes ConfigMaps
- Creating, accessing, and updating ConfigMaps
- Using ConfigMaps to configure applications
PVC (Persistent Volume Claim) and PV (Persistent Volume)
- Introduction to Persistent Volumes (PVs) and Persistent Volume Claims (PVCs)
- Configuring storage resources with PVs and PVCs
- Dynamically provisioning storage with StorageClasses
Taints and Tolerations and Node Selector
- Understanding node affinity and anti-affinity with taints and tolerations
- Using node selectors to schedule Pods onto specific nodes
- Implementing node affinity rules for workload placement
Helm
- Introduction to Helm and Helm charts
- Managing Kubernetes applications with Helm
- Templating and deploying complex applications with Helm charts
- Overview of Rancher
- Introduction to Rancher and its role in container orchestration and management
- Key features and benefits of Rancher
- Installation and Setup
- Options for installing Rancher: Docker, Kubernetes, Helm charts
- Step-by-step guide to installing Rancher
- Initial configuration and setup
Managing Clusters and Workloads
- Adding and Managing Clusters
- Adding Kubernetes clusters to Rancher
- Exploring Rancher's multi-cluster management capabilities
- Hands-on exercises: Adding and managing clusters in Rancher
- Deploying Workloads
- Deploying containerized workloads (applications, microservices) onto Kubernetes clusters managed by Rancher
- Demonstration of deploying workloads using Rancher UI and CLI
- Advanced Rancher Features
- Exploring advanced Rancher features such as monitoring, logging, and scaling
- Demonstrating Rancher's integration with other tools and services
- Best Practices and Tips
- Best practices for managing Kubernetes clusters and workloads with Rancher
- Tips for troubleshooting common issues and optimizing Rancher deployments
- Overview of Rancher
- Introduction to AWS and LocalStack
- Overview of AWS cloud computing and LocalStack
- Benefits of using LocalStack for local development and testing
- Core AWS Services with LocalStack
- Simulating compute services (EC2, Lambda), storage services (S3, EBS), networking services (VPC, Route 53), and database services (RDS, DynamoDB) using LocalStack
- Hands-on exercises to provision and manage simulated AWS resources with LocalStack
CI/CD and Infrastructure as Code with LocalStack
- CI/CD Pipelines with LocalStack
- Setting up CI/CD pipelines using LocalStack and tools like CodePipeline, CodeBuild, and CodeDeploy
- Hands-on lab to create and test CI/CD pipelines locally with LocalStack
- Infrastructure as Code with LocalStack
- Writing CloudFormation templates to provision and manage resources in LocalStack
- Deploying and managing infrastructure locally using CloudFormation with LocalStack
Monitoring, Logging, and Security with LocalStack
- Introduction to AWS and LocalStack
Ansible and Terraform :
Basics of Ansible
Introduction to Ansible.
- Overview of Ansible and its features
- Advantages of using Ansible for automation
Ansible Architecture
- Control node and managed nodes.
- Understanding Ansible's agentless architecture
- Components of Ansible (control node, inventory, modules, etc.)
Setting up Ansible and its Prerequisites
- Installing Ansible on different operating systems
- Configuring SSH keys for passwordless authentication
- Installing Python and other dependencies
Ansible Playbooks
Writing and Organizing Playbooks
- Structure of Ansible playbooks
- YAML syntax and formatting
- Defining tasks, plays, and playbooks
Modules and their Usage in Playbooks
- Overview of Ansible modules
- Commonly used modules (e.g., file, copy, template, service)
- Parameters and options for modules
Tasks, Handlers, and Roles
- Defining tasks and task blocks
- Using handlers to trigger actions
- Organizing tasks into reusable roles for better management
Variables and Templates in Playbooks
- Understanding Ansible variables
- Using variables for dynamic configurations
- Creating and using Jinja2 templates in playbooks
Loops and Items in Playbooks
- Using loops for iteration in playbooks
- Iterating over lists, dictionaries, and ranges
- Examples of loop usage in practical scenarios
Inventory and Configuration Management
Creating and Managing Inventory Files
- Inventory file formats (INI, YAML)
- Specifying hosts and groups in the inventory
- Dynamic inventory and plugins
Grouping Hosts and Variables
- Organizing hosts into groups for better management
- Group-specific variables and group_vars directory
- Host-specific variables and host_vars directory
Using Ansible Vault for Secure Variable Management
- Encrypting sensitive data with Ansible Vault
- Managing encrypted files and secrets
- Decrypting and using variables securely in playbooks
Ad-Hoc Commands
Running Ad-Hoc Commands with Ansible
- Overview of ad-hoc commands in Ansible
- Syntax and usage of ad-hoc commands
- Practical examples of ad-hoc tasks (e.g., gathering facts, running commands)
Common Ad-Hoc Modules
- Exploring common ad-hoc modules (ping, shell, command, etc.)
- Use cases and examples for each ad-hoc module
- Advantages and limitations of ad-hoc commands
Introduction to Terraform
What is Terraform
- Overview of Terraform and its features
- Benefits of Infrastructure as Code (IaC) with Terraform
Infrastructure as Code with Terraform
- Understanding the concept of Infrastructure as Code (IaC)
- Advantages of managing infrastructure with Terraform
Terraform Basics
Installing and Configuring Terraform
- Installing Terraform on different operating systems
- Setting up Terraform CLI and environment variables
- Configuring backend for state management
Defining Resources using HashiCorp Configuration Language (HCL)
- Introduction to HCL syntax
- Declaring resources, variables, and outputs in Terraform configurations
- Best practices for organizing and structuring Terraform code
Initializing a Terraform Configuration
- Initializing Terraform projects with
terraform init
- Downloading provider plugins and modules
- Initializing a new Terraform workspace
- Initializing Terraform projects with
Terraform Providers and Resources
Understanding Terraform Providers
- Overview of Terraform providers and their role
- Supported providers and community providers
- Configuring provider blocks in Terraform configurations
Defining Resources and Managing their Lifecycle
- Declaring and managing infrastructure resources in Terraform
- Resource lifecycle: create, read, update, delete (CRUD)
- Handling dependencies between resources
State Management and Terraform's State File
- Understanding Terraform state
- Importance of state management in Terraform
- State file formats and storage backends
Managing Infrastructure:
Creating, Updating, and Deleting Resources
- Creating infrastructure resources with
terraform apply
- Updating resources with configuration changes
- Deleting resources and cleaning up infrastructure with
terraform destroy
- Creating infrastructure resources with
Terraform Variables and Data Sources
- Using variables to parameterize Terraform configurations
- Different types of variables (input variables, output variables, locals)
- Retrieving data from external sources using Terraform data sources
Terraform Modules for Reusable Configurations
- Introduction to Terraform modules
- Creating and using modules for reusable infrastructure components
- Sharing and managing modules with version control systems (VCS)
Advanced Topics
Terraform Workspaces
- Managing multiple environments with Terraform workspaces
- Use cases for workspaces in development, staging, and production environments
Terraform State Locking
- Understanding the need for state locking in Terraform
- Implementing state locking with backend configurations
- Best practices for preventing concurrent state modification
Testing and Continuous Integration
Testing Terraform Configurations
- Writing unit tests for Terraform configurations
- Testing infrastructure changes with Terraform's
terraform plan
command - Integration testing of Terraform configurations with test frameworks
Continuous Integration with Terraform
- Integrating Terraform with CI/CD pipelines
- Automating infrastructure deployments with CI/CD tools
- Implementing Infrastructure as Code best practices in CI/CD workflows
Monitoring :
Introduction to Zabbix
- Overview of Zabbix monitoring solution
- Features and capabilities of Zabbix
Installing and Configuring Zabbix
- Installing Zabbix server and agents
- Configuring Zabbix components (server, agent, database)
- Setting up Zabbix frontend and web interface
Monitoring with Zabbix
- Adding hosts and monitoring targets to Zabbix
- Configuring monitoring items (metrics) and triggers
- Creating dashboards and visualizations in Zabbix
Zabbix Alerts and Notifications
- Configuring alerting rules and triggers
- Setting up notification methods (email, SMS, etc.)
- Customizing alert actions and escalations
Introduction to Prometheus
- Overview of Prometheus monitoring and alerting toolkit
- Prometheus data model (metrics, labels, time series)
Installing and Configuring Prometheus
- Installing Prometheus server and exporters
- Configuring Prometheus scrape targets and service discovery
- Setting up retention policies and storage options
Prometheus Query Language (PromQL)
- Introduction to PromQL for querying Prometheus metrics
- Writing basic PromQL queries for metric retrieval and aggregation
- Advanced PromQL functions and operators
Alerting with Prometheus
- Defining alerting rules in Prometheus
- Configuring alertmanager.yml for alert management
- Sending alerts to various alerting destinations (email, webhook, etc.)
Introduction to Grafana
- Overview of Grafana visualization and monitoring platform
- Features and advantages of Grafana for data visualization
Installing and Configuring Grafana
- Installing Grafana server on different platforms
- Configuring data sources (Prometheus, Zabbix, etc.) in Grafana
- Setting up Grafana dashboards and panels
Creating Dashboards in Grafana
- Building custom dashboards in Grafana
- Adding and configuring panels for displaying metrics
- Using variables and templating in Grafana dashboards
Introduction to Prometheus Alertmanager
- Overview of Prometheus Alertmanager for handling alerts
- Features and capabilities of Alertmanager for alert management
Configuring Alertmanager
- Setting up alerting rules and routes in Alertmanager configuration
- Defining notification integrations (email, webhook, etc.) in Alertmanager
Alerting and Notifications
- Creating and managing alerting rules in Prometheus
- Configuring notifications for alerting channels (email, Telegram, Discord)
- Customizing alert templates and message formats
Integrating with Email, Telegram, and Discord
- Setting up email notification integration with Alertmanager
- Configuring Telegram bot for sending alerts to Telegram channels
- Setting up Discord webhooks for alert notifications in Discord channels
جلسات کوچینگ :
مقدمه به رشد شخصی:
اهمیت رشد شخصی و حرفهای
تفاوت بین رشد ثابت و رشد فراگیر
تحلیل اهداف و آرزوها:
تعیین اهداف کوتاه مدت و بلند مدت
استفاده از SMART Goals برای تعیین اهداف
مدیریت زمان و اولویتبندی:
تقویت مهارتهای مدیریت زمان
تشخیص و ترک عادتهای زمانتلف کننده
ارتباط موثر:
مهارتهای ارتباطی در محیط کار
مدیریت اختلافات و روابط موثر
مهارتهای حل مسئله و تصمیمگیری:
روشهای بهبود مهارتهای حل مسئله
مدیریت ریسک و تصمیمگیری موثر
انگیزه و توانمندسازی:
شناخت عوامل انگیزشی شخصی
ایجاد محیط موثر برای افزایش انگیزه
توسعه مهارتهای فردی و تیمی:
تشویق به یادگیری مداوم
ایجاد فرهنگ یادگیری در تیم
مقابله با استرس و مدیریت هیجانات:
راهکارهای مدیریت استرس در محیط کار
ارتقای هوش هیجانی
خودآگاهی و توسعه شخصی:
توسعه مهارتهای خودآگاهی و خودکنترلی
ایجاد عادتهای سلامتی روانی و جسمی
برنامهریزی برای رشد مستمر:
ایجاد برنامههای عملی برای رشد شخصی و حرفهای
پایش و ارزیابی پیشرفتها و تصمیمگیری در مورد اصلاحات لازم
نظرات دانشجویان دوره ی پیش
محمد جواد سلیمانی
علی قربانی
سلام خانم محمدی وقتتون بخیر دیروز از علی بابا زنگ زدن مصاحبه فنی رو قبول شدم خواستم ازتون تشکر کنم بابت تمام زحماتتون 🐳🫀
علی صالحی
دوره مهندسی رو بعد از مدت ها تونستم شروع کنم به دیدنو شش جلسه اولشو دیدم.واقعا فوق العاده توضیح دادی. مخصوصا داکرشو میخواستم اگه اشکالی نداشته باشه دوره لینوکستو هم شرکت کنم
شایان خجسته
و اما فیدبک دوره دوره ی خیلی جذابی بود اولا کلیات مسیر برام روشن شد که دواپس چیه و چرا و چطور یادش بگیرم. با این که بعد از جلساتی که ansible رو شروع کردیم یکم عقب موندم ولی در جزئیات رو هم خوب در کردم و اینم میدونم که تمرین و تکرار لازمه و الان که دارم تو شرکت عملی کار میکنم دیگه میدونم کجا از چی باید استفاده کنم. و جایی که جزئیات یادم میره دوباره بر میگردم به ویدیو ها در کل خیلی ممنون عالی بود دوره تون
مهران نورانی
خانم محمدی سلام خدا خیرتون بده . حلال تون باشه . امروز بعد ۶ ۷ ماه فرصت کردم بشینم پای دوره تون ، لذت بردم که به زبون ساده و کامل درس دادین . خوب و خوش باشین .
مجید میان ابی
سلام، عرض خدا قوت خدمت استاد عزیز همون طور که پیش تر عرض کردم دوره بسیار خوبی بود و از همه مهم تر برای من دیسیپلین و توجه به جزئیات فنی در دوره بود. امیدوارم در تمامی مراحل زندگی موفق باشین 🌹
مجید میان ابی
سلام بر استاد عزیزم از عمق وجودم عرض میکنم واقعاً لذت میبرم از اینکه در دوره شما حضور دارم .. فارغ از تخصص از شخصیت شما هم یاد میگیرم و یه کوچینگ مناسب هست برام.. میخاستم این موارد رو انتهای دوره عرض کنم خدمتتون، ولی چرا الان نه چرا باید آخرش اینا گفته شه.. آرزوی سلامتی و توفیق در زندگی رو براتون دارم 🌹🧿
مرتضی وراسکی
مهندس جان سلام دوره دواپس شما رو شروع کردم و دم شما گرم که اینقدر کاربردی درس دادین ، بدون هیچ حاشیهای ، فقط مطالب کاربردی برای دنیای واقعی ، نه وقت تلف کردن های بیخودی. خلاصه که حلالت باشه مهندس
جواد سلیمانی
سلام استاد شبتون بخیر من قبل اینکه شما k8s رو شروع کنید گفتم وای چه مبحثی شده بود یکی فوبیا هام ولی وقتی دیدم شما واقعا آنقدر صبور و دلسوزانه درس بردین واقعا لذت بردم و عمیقأ عاشق k8s شدم واقعا ازتون تشکر میکنم استاد 🌹🌹🌹🌹
امیرحسین احمد ابادی
باتوجه به هزینه ای که برای کلاس شده بود و مقدار دانشی که اضافه شد واقعا عالی بود چون همین دوره دواپس الان زیر ۲۴ میلیون نیستش. یه مورد اینکه فهم داکر و کوبر بسیار بسیار خوب بود و اگر کسی در حد جونیور هم یاد گرفته باشه بره تویه محیط پروداکشن میتونه به راحتی خودشو میدلول کنه یه مورد دیگه اینکه باتوجه به اینکه گفتید ۱ سال دوره برامون میمونه واقعا پوان مثبتی بود که دادید من لینوکسو یه آموزشگاهی گذرونده بودم ولی استادشون چون تجربه کاری تویه اسکیل بزرگ رو نداشتن زیاد نتونستن رویه مطالب مانور بدن ولی لینوکس شما واقعا تاثیر داشت و مطمئنم برای کار کافی بود یه جمع ۶۲ نفره بودیم که مطمئنم همه این ۶۲ نفر یه روزی حرفی برای گفتن تویه شرکت های بزرگ دارن و به امید همکاری با تک تک عزیزان یه پیشنهاد و خواهش : الک رو گقته بودید برگزار میکنید که باتوجه به استقبال کم تویه کلاس ها کنسل شد ( حجم کاری و مشکلات بچه ها تعداد اومد پایین ) حالا اگر امکانش هست شما دواپس ۲ هم دورشو دارید با اونا ادغام کنید این کارگاهو یا یه کارگاه ۱ روزه بزارید با هزینه ممنونتون میشیم واقعا چون خیلی داره استقاده میشه در شرکت ها یه چیز دیگه اینکه اگر استاد تونستید بعدا ( ceph) رو هم بزارید عالی میشه ، کلاستر کردن استوریج هم خیلی جذابه با ceph همچنین اگر منبع خوبی برای redis و rabbitmq میشناختید ممنونتون میشم بگید بهمون بازم مرسی از وقتی که گذاشتید واقعا ۲۱ جلسه با این حجم مطالب عالی بود هر جا باشم من به شخصه مدیون شما هستم خسته نباشید 😍
علی صفوی
استاد کلاس لینوکس تون خیلی خوبه. با اینکه تعداد ساعتش زیاده و تدریس توی این حجم ساعت و پشت سر هم خیلی سخته ولی شما خیلی خوب دارید مدیریتش می کنید و من موقع کلاس های انلاین لینوکس با شما انگار سر کلاس واقعی هستم خیلی خوشحالم که تونستم با شما این مسیر را ادامه بدم از همه زحماتتون بسیار ممنونم
علی صفوی
انرژی شما وقتی دارید kubernetes درس میدید به وضوح خیلی بیشتره. مشخصه خودتون کار کردن با kubernetes را خیلی دوست دارید. شوق آمورشی که توی kubernetes دارید کاملا با جلسات قبلی فرق داره و این انرژیتون واقعا روی بچه ها تاثیر مثبت داره. می خواستم ازتون بابت این حس خوبتون تشکر کنم
ما در Sananet، یک دوره مهندسی دواپس ارائه میدهیم که برای افرادی با درک اولیه لینوکس طراحی شده است. این دوره مهارت های ضروری لینوکس را پوشش می دهد و آموزش های کامل و جامعی در مورد ابزارهای کلیدی دواپس مانند Docker، Git و Kubernetes ارائه می کند. این دوره که توسط اساتید مجرب تدریس می شود، بر مهارت های عملی مرتبط با بازار کار تمرکز دارد. مدت دوره 125 ساعت است و جلسات کوچینگ هر دو ماه یکبار برای اطمینان از حفظ انگیزه و تمرکز در تمام طول دوره است. ویژگی های دوره شامل جلسات حل تمرین، جلسات کوچینگ به رهبری خانم یگانه حسین خانی، اسلایدهای اختصاصی برای درک آسان و دسترسی به آزمایشگاه در مرکز داده ما برای تمرین عملی است. از شما دعوت میکنیم در سفری که برای تبدیل شدن به یک مهندس دواپس حرفه ای لازم است طی کنید با ما همراه باشد.
مدرس دوره
آرزو محمدی
سال ۹۳، وارد دانشگاه شدم و در رشته IT تحصیل کردم. سال ۹۷، به عنوان کارشناس شبکه در شرکت سامسونگ استخدام شدم و با لینوکس آشنا شدم. سال ۹۸، به عنوان network administrator در فناپ سافت کار کردم و علاقهمند به دواپس شدم. پس از ۱ سال و نیم در شرکت گلرنگ سیستم، به عنوان DevOps Engineer در اسنپ تریپ مشغول به کار شدم.
سلام استاد وقت بخیر من واقعا از دوره دواپسی که شرکت کردم لذت بردم واقعا تو این فیلد خیلی جامع و کامل بود فقط یه مسئله ای هست چون من تو محیط لابراتواری همه چی رو دیدم و تست کردم فقط یه ذره ترس دارم از محیط واقعی که میخواد چطور باشه ولی دوره دواپس تون واقعا از هر لحاظ بی نظیر بود و واقعا شما تو این فیلد فوق العاده هستید و منم واقعا از آشنایی با شما لذت بردم