{"id":14954391,"url":"https://github.com/alejandro945/meru-infrastructure","last_synced_at":"2026-02-05T23:01:50.484Z","repository":{"id":253311182,"uuid":"843013228","full_name":"alejandro945/meru-infrastructure","owner":"alejandro945","description":"Evaluate skills in systems administration, automation, and infrastructure management using core DevOps infrastructure using core DevOps technologies such as AWS, Docker, Kubernetes, Linux, Networking and Terraform.","archived":false,"fork":false,"pushed_at":"2024-08-16T03:01:21.000Z","size":4891,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-13T07:41:45.458Z","etag":null,"topics":["docker","ip-table","kubernetes","nestjs","terraform","terraform-modules"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alejandro945.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-15T15:37:28.000Z","updated_at":"2024-08-16T03:01:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"1aa75e37-4003-4b91-a2cf-b6a8645d5950","html_url":"https://github.com/alejandro945/meru-infrastructure","commit_stats":{"total_commits":14,"total_committers":1,"mean_commits":14.0,"dds":0.0,"last_synced_commit":"d3a851f7dec8212aac4de8e0e962f6ff039ec772"},"previous_names":["alejandro945/meru-infrastructure"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alejandro945/meru-infrastructure","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alejandro945%2Fmeru-infrastructure","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alejandro945%2Fmeru-infrastructure/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alejandro945%2Fmeru-infrastructure/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alejandro945%2Fmeru-infrastructure/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alejandro945","download_url":"https://codeload.github.com/alejandro945/meru-infrastructure/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alejandro945%2Fmeru-infrastructure/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29137751,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T22:49:08.052Z","status":"ssl_error","status_checked_at":"2026-02-05T22:45:32.059Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","ip-table","kubernetes","nestjs","terraform","terraform-modules"],"created_at":"2024-09-24T13:02:16.632Z","updated_at":"2026-02-05T23:01:50.464Z","avatar_url":"https://github.com/alejandro945.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Meru Infrastructure 🚀\n\nEvaluate skills in systems administration, automation, and infrastructure management using core DevOps\ninfrastructure using core DevOps technologies such as AWS, Docker, Kubernetes, Linux,\nNetworking and Terraform.\n\n![Infra](./assets/infrastructure.png)\n\n### Prerequisites\n\n- AWS Account ans AWS CLI\n- Terraform\n- Docker\n- Kubernetes\n\n### Installation\n\n1. Clone the repository\n   ```sh\n   git clone https://github.com/alejandro945/meru-infrastructure.git\n    ```\n2. Change directory\n   ```sh\n   cd meru-infrastructure\n    ```\n3. Create a user for Terraform in AWS and attach admin policies (training purposes only)\n    ```sh\n    aws iam create-user --user-name cli_terraform\n    aws iam attach-user-policy --policy-arn arn:aws:iam::aws:policy/AdministratorAccess --user-name cli_terraform\n    aws iam create-access-key --user-name cli_terraform\n    ```\n    ![User](./assets/users.png)\n4. Run the following commands to create the infrastructure\n    ```sh\n    aws configure\n    cd iac\n    terraform init\n    terraform apply -auto-approve\n     ```\n    ![TF](./assets/tf.png)\n5. To deploy the application in eks cluster\n    ```sh\n    aws eks --region us-east-1 update-kubeconfig --name meru-cluster\n    # Ensure your user is attach in the access entries of the cluster with admin cluster policy\n    kubectl get nodes -- Test the connection\n    cd orchestation\n    kubectl create namespace meru \u0026\u0026 helm upgrade --install meru-app ./compute -n meru \u0026\u0026 kubectl apply -f nginx.yaml -n meru\n     ```\n    ![K8S](./assets/k8s.png)\n6. To access the application\n    ```sh\n    kubectl get svc -n meru\n    # Copy the external ip and paste in the browser\n    ```\n    ![app](./assets/app.png)\n7. To destroy the infrastructure\n    ```sh\n    terraform destroy -auto-approve\n    ```\n    ![destroy](./assets/destroy.png)\n\n### Tasks\n\n1. Infrastructure Approvisioning using Terraform in AWS ✅\n\n- Using Terraform, create an environment on AWS that includes:\n    - An EC2 instance running Linux ubuntu. ✅\n    ![ec2](./assets/ec2.png)\n    - A Security Group that allows SSH (port 22) and HTTP (port 80) access. ✅\n    ![sg](./assets/security-group.png)\n    - A public IP address assigned to the EC2 instance. ✅\n    ![ip](./assets/ni-ip-ec2.png)\n\n- Make sure that the Terraform configuration file is modular and can be reused to deploy multiple instances.\nto deploy multiple instances. ✅\n\n2.  Containerization and Deployment ✅\n\n- Create an optimized production Dockerfile that builds a Docker image for a simple web application (Node.js web application using nest framework, for example). ✅\n\n- The Docker image should expose the application on port 80. ✅\n\n- Create a docker-compose.yml file that allows the application to run in a container ✅\n\n3. Kubernetes Container Deployment ✅\n\n- Create a Kubernetes manifest (deployment.yml) that deploys the Dockerized application to a Kubernetes cluster. ✅\n\n- Configure a LoadBalancer Service that exposes the application on a port accessible from outside the cluster. ✅\n\n4. Linux Network and Security Configuration ✅\n\n- On the EC2 instance created in Task 1, perform the following configurations:\n\n    - Configure firewall rules (using iptables or ufw) to ensure that only traffic on ports 22 and 80 is allowed.\n    traffic is only allowed on ports 22 and 80. ✅\n    ![tables](./assets/ip-table-rules.png)\n\n    - Configure SSH to allow access with SSH keys only and disable password authentication. ✅\n    ![init](./assets/cloud-init.png)\n\n    - Install and configure Nginx as a reverse proxy that redirects HTTP traffic to port 80 of the web application inside the Docker container. ✅\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falejandro945%2Fmeru-infrastructure","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falejandro945%2Fmeru-infrastructure","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falejandro945%2Fmeru-infrastructure/lists"}