{"id":20072445,"url":"https://github.com/yashindane/web-menu","last_synced_at":"2026-04-11T14:04:25.723Z","repository":{"id":48734350,"uuid":"301044437","full_name":"YashIndane/Web-Menu","owner":"YashIndane","description":":globe_with_meridians: Automate Docker ,  Kubernetes , Hadoop and AWS using voice commands!","archived":false,"fork":false,"pushed_at":"2022-12-12T10:03:33.000Z","size":2024,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-02T12:18:55.744Z","etag":null,"topics":["ansible","automation","aws","docker","hadoop","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YashIndane.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-04T05:11:19.000Z","updated_at":"2022-12-28T10:54:15.000Z","dependencies_parsed_at":"2023-01-27T17:30:26.757Z","dependency_job_id":null,"html_url":"https://github.com/YashIndane/Web-Menu","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/YashIndane/Web-Menu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YashIndane%2FWeb-Menu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YashIndane%2FWeb-Menu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YashIndane%2FWeb-Menu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YashIndane%2FWeb-Menu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YashIndane","download_url":"https://codeload.github.com/YashIndane/Web-Menu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YashIndane%2FWeb-Menu/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269809986,"owners_count":24478660,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ansible","automation","aws","docker","hadoop","kubernetes"],"created_at":"2024-11-13T14:40:08.845Z","updated_at":"2025-12-30T21:47:54.004Z","avatar_url":"https://github.com/YashIndane.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](https://img.shields.io/badge/license-MIT-yellow) ![](https://img.shields.io/badge/python-3.8-brightgreen)\n# Web-Menu\nA Webapp that is hosted on a Apache HTTPD server and gives functionality to automate Hadoop-clustering , Docker configuration and automating AWS services. Commands can be spoken or typed in the specific fields. For some commands Ansible has been used.\nIt provides facility of Logical Volume Management (LVM) for providing elasticity to datanodes.\n\n![web2](https://user-images.githubusercontent.com/53041219/207016552-0e58f477-189b-4e21-85b7-b09d39631688.png)\n\n![finalpage](https://user-images.githubusercontent.com/53041219/207016652-04ad5eef-f8a4-454a-9ef8-3fe08d64892b.png)\n\nAfter configuring the httpd server just run - \n```\nbash start.sh\n```\n# Configuring Apache httpd server\n\nThe Apache HTTP Server, colloquially called Apache, is a free and open-source cross-platform web server software, released under the terms of Apache License 2.0. \n\n## Installation (RHEL7 and above)\n\nThe following commands are for installing httpd , checking status of httpd , to enable httpd ,to start the server and to stop the server respectively. \n```\n$ yum install httpd \n\n$ systemctl status httpd\n$ systemctl enable htpd\n$ systemctl start httpd   \n$ systemctl stop httpd\n```\n\nAs the automation program is a long process , so the server will throw **Gateway Timeout error** . Just add the line `TimeOut 6000` anywhere in the hadoop configuration file ie. ,\n`etc/hadoop/conf/hadoop.conf`\n\n## Hadoop Automation\n\nApache Hadoop is a collection of open-source software utilities that facilitates using a network of many computers to solve problems involving massive amounts of data and computation. It provides a software framework for distributed storage and processing of big data using the MapReduce programming model.\nHadoop requires jdk \nThe webapp installs jdk and hadoop by - \n\n```\n$ sudo /usr/local/bin/ansible all -m command -a\"rpm -i jdk-8u171-linux-x64.rpm\"\n$ sudo /usr/local/bin/ansible all -m command -a\"rpm -i hadoop-1.2.1-1.x86_64.rpm --force\"\n```\n\nBy default apache does not have permission for writing to a file. In that case make apache owner of that file-\n\n```chown apache file_path```\n\n## Logical Volume Management (LVM)\n\nThis concept is very helpful in scenarios where dynamic rezising of volume is required. Volume can be incresed or decresed on the fly. Steps that Web-Menu uses to do this is.\n![vl](https://user-images.githubusercontent.com/53041219/207016806-f51fcadf-93a6-4aa2-be92-ace2c41b71b7.png)\n\n## Automating AWS Services\n\nAmazon Web Services is a subsidiary of Amazon providing on-demand cloud computing platforms and APIs to individuals, companies, and governments, on a metered pay-as-you-go basis.\n\n## Installing aws-cli \n\nfor Linux x86(64-bit)\n\n```\n$ curl \"https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip\" -o \"awscliv2.zip\"\n$ unzip awscliv2.zip\n$ sudo ./aws/install\n```\nFor more details and for getting specific version refer to - [AWS Installation Guide](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html):page_facing_up:\n\nfor using any of the functionality, login inside your account using IAM user id and key \n\n```\n$ aws configure\n```\nThis web-app can start and stop EC2 instance , create security groups , create S3 bucket and create distribution for using CDN.\n\n![1](https://user-images.githubusercontent.com/53041219/207016979-ad87549f-11bc-469a-8ecf-d85fe5a4c771.png)\n\nExample lets's create a S3 bucket for object type storage-\n\n![4](https://user-images.githubusercontent.com/53041219/207017104-f080b612-132b-4edf-9b6b-c22ac6288cb4.png) ![3](https://user-images.githubusercontent.com/53041219/207017145-e2050dff-74c2-40f8-94e1-32da429394e0.png)\n\n![78](https://user-images.githubusercontent.com/53041219/207017187-47fc5e94-12e0-4ea5-8ab3-3ee12900b5cb.png)\n\n## AWS VPC\n\nAmazon Virtual Private Cloud (Amazon VPC) is a service that lets you launch AWS resources in a logically isolated virtual network that you define. You have complete control over your virtual networking environment, including selection of your own IP address range, creation of subnets, and configuration of route tables and network gateways.\n\n## AWS HAProxy load balancing\n\nHAProxy is free, open source software that provides a high availability load balancer and proxy server for TCP and HTTP-based applications that spreads requests across multiple servers.\n\nThis is done with the help of Ansible playbooks. \nInstalling Ansible -\n\n```\n$ pip3 install ansible\n````\nbut for Ansible to work with ssh , we need to install sshpass, and for this we download the already available yum configuration file-\n\n```\n$ yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm\n```\n\nNow install sshpass by\n```\n$ yum install sshpass\n```\n\nmention `privilege escalation` properties inside `/etc/ansible/ansible.cfg`\n\njinja syntax has been used in haproxy.cfg file  so that each time new ip is entered in inventory file, this file updates itself automatically.\n\n```\n\nbackend app\n      balance        roundrobin\n      {% for ip in groups['backends']%}\n      server app{{ loop.index }} {{ ip }}:80 check\n      {% endfor %}\n      \n```\n\nFor getting information on various Ansible modules used inside `Web Menu` , see here -\u003e  [Ansible Documentation](https://docs.ansible.com/ansible/latest/index.html) \n\nWatch the demo here -\u003e [Demo](https://www.linkedin.com/pulse/creating-haproxy-load-balancing-over-aws-ec-2-one-click-yash-indane/)\n\n## Docker automation\n\nDocker is a set of platform as a service products that use OS-level virtualization to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels.\n\n## Installing docker\n\nopen the file **/etc/yum.repos.d** , make a new file with extension **.repo** and configure the file as-\n\n```\n[tag_name]\nbaseurl=https://download.docker.com/linux/centos/7/x86_64/stable/\ngpgcheck=0\n```\nInstall by-\n\n```\n$ yum install docker-ce --nobest\n```\nfor getting information about available containers for docker visit [Docker Hub](https://hub.docker.com/search?q=\u0026type=image):whale:\n\n![66](https://user-images.githubusercontent.com/53041219/207017375-ce41274b-d45e-4e46-a6c0-306b98bf6e59.png)\n\n![1](https://user-images.githubusercontent.com/53041219/207017453-554536b3-4c7f-4714-a5f6-aa6eab81df78.jpg)\n\n## NFS\n\nNetwork File System is a distributed file system protocol originally developed by Sun Microsystems in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed.\n\nThe main configuration file is `/etc/exports`.  By default the user only has `read-access` to the file , For giving `read-write access` -\u003e\n\n```\n\u003cfile-path\u003e \u003cip\u003e (rw,no_root_squash)\n```\n\nTo access the folder it first has to be mounted. Web-Menu uses Ansible ad-hoc command to mount the folder-\u003e\n\n```\n$ sudo /usr/local/bin/ansible \u003cip\u003e -m mount -a\"src=\u003cremote_ip\u003e:/\u003cfolder path=\u003cmount_point fstype=nfs state=mounted\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyashindane%2Fweb-menu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyashindane%2Fweb-menu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyashindane%2Fweb-menu/lists"}