All Projects → mageops → ansible-infrastructure

mageops / ansible-infrastructure

Licence: other
Ansible-based infrastructure-as-code for hosting and deploying Magento-based shops

Programming Languages

python
139335 projects - #7 most used programming language
Jinja
831 projects
shell
77523 projects
javascript
184084 projects - #8 most used programming language
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to ansible-infrastructure

Salt
Software to automate the management and configuration of any infrastructure or application at scale. Get access to the Salt software package repository here:
Stars: ✭ 12,086 (+63510.53%)
Mutual labels:  infrastructure-management, infrastructure-as-code, infrastructure-automation
module-blog-comments-recaptcha
module-blog-comments-recaptcha
Stars: ✭ 17 (-10.53%)
Mutual labels:  magento, magento-2
taxjar-magento2-extension
Magento 2 Sales Tax Extension by TaxJar
Stars: ✭ 23 (+21.05%)
Mutual labels:  magento, magento-2
module-geoip
Detect Country by IP in Magento 2
Stars: ✭ 51 (+168.42%)
Mutual labels:  magento, magento-2
magento-2-banner-slider
Magento 2 Banner slider for Magento is jQuery banner Slider you can create Unlimited beautiful responsive banner Slider
Stars: ✭ 74 (+289.47%)
Mutual labels:  magento, magento-2
module-wysiwyg-advanced
Extend TinyMCE 4 & 5 tools in Magento 2
Stars: ✭ 60 (+215.79%)
Mutual labels:  magento, magento-2
module-catalog
Fixes for some known Magento 2 issues in Catalog
Stars: ✭ 23 (+21.05%)
Mutual labels:  magento, magento-2
module-login-as-customer
Allows admin to login as a customer (enter to customer account).
Stars: ✭ 104 (+447.37%)
Mutual labels:  magento, magento-2
module-translation
magefan.com/magento-2-translation-extension
Stars: ✭ 35 (+84.21%)
Mutual labels:  magento, magento-2
bolt-magento2
Bolt plugin for magento2
Stars: ✭ 17 (-10.53%)
Mutual labels:  magento, magento-2
blog
MageVision Blog
Stars: ✭ 23 (+21.05%)
Mutual labels:  magento, magento-2
module-blog-sample-data
Sample data for Magento 2 blog extension
Stars: ✭ 15 (-21.05%)
Mutual labels:  magento, magento-2
magento-grid-colors
Magento 2 Grid Colors module for colorizing admin grids. Supports saving of states with the help of grid's bookmarks.
Stars: ✭ 54 (+184.21%)
Mutual labels:  magento, magento-2
cart-magento2
Mercado Pago's Official Magento 2 Plugin
Stars: ✭ 50 (+163.16%)
Mutual labels:  magento, magento-2
module-conflict-detector
magefan.com/magento2-conflict-detector
Stars: ✭ 40 (+110.53%)
Mutual labels:  magento, magento-2
magento2-checkout-success-misc-script
Add Miscellaneous HTML and JavaScript codes to Magento2 checkout conformation page
Stars: ✭ 26 (+36.84%)
Mutual labels:  magento, magento-2
pico
A Git-driven task runner built to facilitate GitOps and Infrastructure-as-Code while securely passing secrets to tasks.
Stars: ✭ 51 (+168.42%)
Mutual labels:  infrastructure-management, infrastructure-as-code
module-notifications
Notify the Magento 2 admin user about disabled caches or new customer reviews.
Stars: ✭ 20 (+5.26%)
Mutual labels:  magento, magento-2
centminmod-magento2
Magento 2.2.2 Install Guide For Centmin Mod Nginx LEMP Stacks
Stars: ✭ 16 (-15.79%)
Mutual labels:  magento, magento-2
magento-ngrok
Magento 2 module for ngrok.io service support
Stars: ✭ 45 (+136.84%)
Mutual labels:  magento, magento-2

MageSuite

Ansible-based infrastructure-as-code for hosting and deploying Magento-based shops.

Infrastructure Provisioning

CI/CD Automation

This code handles infrastucture provisioning, maintenance and deployment only. This repository does not contain any CI/CD automation for building, testing or running the provisioning itself. We do that internally with reusable Jenkins pipelines (as libraries) - as this setup is very specific to our workflow we are not planning to open-source it in the near future.

MageSuite ecosystem

Altough it's possible to use this code to host any Magento-based shop, some features are only avaialble (and tailored for) MageSuite ecosystem.

Cloud infrastructre

Currently the full feature set is only available when using AWS as the cloud platform, however, it's possible (and tested) to use this code to provision any CentOS 7 VM including local development environment.

PS There's also an experimental docker container which can be fully provisioned by this code and run a full CentOS installation like a VM. This is intended to be used only for local development though and not yet supported.

Feature highlights

  • Out-of-the-box autoscaling
  • Zero-downtime deployments1
    • Nodes are warmed up when new code is being deployed before being attached to the varnish load-balancer to avoid cache generation penalty after traffic hit
  • Varnish caching tailored for Magento with multiple configurable custom features
  • Built-in support for elasticsearch / ElasticSuite
  • Redis Magento cache backend with
    • Separate redis instance for session storage
  • Customizable multi-website / multi-shop deployments
  • Letsencrypt certificates support
  • Cloudfront CDN
    • Media stored and shared across nodes using AWS EFS or AWS S3 (and possible plain NFS soonish)
    • Seamless image optimization via Lambda@Edge (with webp support)
  • Support for arbitrary file sharing across nodes via AWS EFS
  • Per path pattern customizable PHP limits
  • Customizable request throttling (rate-limiting)
  • On-demand import instance
    • EC2 instance started for scheduled imports automatically and terminated once the import is finished
    • Allows to use a different instance type for heavy scheduled imports and perform them without disrupting the site performance for end-users
  • Customizable rules for routing traffic to separate set of special purpose extra-instances
    • Routing rules based on user-agent and request path patterns
    • Useful for processing heavy workloads without disrupting shop performance (e.g. ERP Magento API integrations)
  • Magento queue consumers support with RabbitMQ and supervisord
  • Logs pushed to CloudWatch with slack notifications for critical errors
  • VPC and SG-based network communication rules allowing internal service communication strictly on a need-to basis
  • Language and country-based redirects
  • On-demand PHP debugging on production without affecting the shop's performance or configuration
  • Advanced JavaScript Bundling support (via Dockerized AMD module bundler / preloader - Baler)
  • ... any many more!

1 Needs at least 2 app nodes and requires certain MageSuite extensions. Also it might not be possible depending on changes in relation to previous release in the code being deployed (DB migrations, ...).

Initial open-source release

The code has been cleaned up and all commits squashed for the first public release.

The previous internal repository had 2000+ commits, 300+ merge requests created by 10+ contributors across 3+ years of development.

The current state is a result of hundreds of hours of meetings, debugging, brainstorms investigations and combined expertise of all our developers, PMs and clients.

A lot of the solutions are tailored for solving real-world problems and use-cases that came up when hosting and maintaining highly-customized Magento-based shops. The value of such experience-based solutions cannot be overestimated. It wouldn't be possible to come up and design all of these tiny details form scratch without having went through the all of problems first-hand.

Documentation

At the time of open source release most of the documentation was scattered across internal creativestyle services thus any leftovers have been removed to avoid confusion. New documentation will start appearing shortly as part of this repository succesively.

Utilities

Available CLI commands on EC2 nodes

mageops-env # prints mageops env vars

mageops-sys-status # prints general info about cpu, io, memory, running processes

mageops-consumers # prints ongoing magento queue consumer processes

magcd # `cd` into magento directory
mag # `cd` into magento directory and runs `bin/magento`
magcf # runs `bin/magento cache:flush`

Brought to life by

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].