{"id":23739447,"url":"https://github.com/HexmosTech/Ansika","last_synced_at":"2025-09-04T15:30:47.150Z","repository":{"id":186759721,"uuid":"675690804","full_name":"HexmosTech/Ansika","owner":"HexmosTech","description":"Hassle-Free Engineer Onboarding","archived":false,"fork":false,"pushed_at":"2024-09-13T08:23:10.000Z","size":447,"stargazers_count":22,"open_issues_count":1,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-09-14T03:46:45.369Z","etag":null,"topics":["ansible","employee","installer","nuitka","onboarding"],"latest_commit_sha":null,"homepage":"https://hexmos.com/ansika","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HexmosTech.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-07T13:54:59.000Z","updated_at":"2024-09-12T15:22:27.000Z","dependencies_parsed_at":"2024-09-12T23:51:23.046Z","dependency_job_id":null,"html_url":"https://github.com/HexmosTech/Ansika","commit_stats":null,"previous_names":["hexmostech/ansika"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HexmosTech%2FAnsika","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HexmosTech%2FAnsika/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HexmosTech%2FAnsika/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HexmosTech%2FAnsika/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HexmosTech","download_url":"https://codeload.github.com/HexmosTech/Ansika/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231970925,"owners_count":18453924,"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","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","employee","installer","nuitka","onboarding"],"created_at":"2024-12-31T09:36:54.396Z","updated_at":"2024-12-31T09:38:04.033Z","avatar_url":"https://github.com/HexmosTech.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# `Ansika`: Hassle-Free Engineer Onboarding\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"assets/ANSIKA _new.png\" width=\"100%\" /\u003e\n\n[![Binary Build And Release](https://github.com/HexmosTech/Ansika/actions/workflows/build-and-release.yml/badge.svg)](https://github.com/HexmosTech/Ansika/actions/workflows/build-and-release.yml)\n\u003c/div\u003e\n\n## The Problem\nBringing in new engineers to your team means tediously setting up lots of software.Ansika helps build \u003cstrong\u003ehassle-free custom one-line installers,\u003c/strong\u003e saving your team time, effort, and money. \n## Overview\n\nAnsika simplifies bulk software installation and configuration tasks into a single command. It reduces the employee onboarding workload for technical leads and engineers. In a few steps, Ansika installs and configures software, libraries, and extensions for new employees or interns.\n\nAnsika produces a binary file that does not requires external dependencies. Simply define software, libraries, and configurations in the Ansible playbook file ([one_installer.yml](https://github.com/HexmosTech/Ansika/blob/main/one_installer.yml)). Ansika will release a new binary in GitHub releases. The one-line command downloads, authorizes and executes the binary file on local machines.\n\n## Benefits\n\n- Install any combination of software packages, libraries and extensions\n- Run commands and configure setting files\n- Produce zero-dependency binaries\n- Provide one-liner to perform every on-boarding task\n- 100% Free and Open Source Software\n- Built upon solid tech: Ansible and Nuitka (Python)\n\n\n## Usage\n\n### Fork the Repository\n\nTo create the one-line installer for your team or company, begin by forking this repository.After forking, you can make changes locally to tailor the code or content according to your specific requirements.\n\n### Requirements\n\n- python: Version 2.7 or 3.5 and higher\n- Ansible: Version 2.7 or higher (depends on python version installed)\n- Nuitka: Version 1.7.5 or higher\n\n### Installing Requirements\n\n- Install Ansible : `pip3 install ansible==7.0.0`\n- Install Nuitka : `pip3 install nuitka==1.7.5`\n### Modify Ansible Playbook \n\n Modify the ansible playbook file in this repository ([one_installer.yml](https://github.com/HexmosTech/Ansika/blob/main/one_installer.yml)) to include additional instructions for installing software packages, tools, extensions, and configurations. For further insights into ansible and ansible playbook, you can refer to the [Ansible documentation](https://docs.ansible.com/ansible/latest/getting_started/index.html).\n\n### Local Testing\n\nWe recommend testing the binary within a Docker container first. Docker isolates your Ansible installation and binary file execution from the rest of your system. Here's the procedure :\n\n- Begin by pulling the Ubuntu 20.04 image from Docker Hub : \n ```bash\n docker pull ubuntu:20.04\n ```\n\n- Run an Ubuntu container named `my_ubuntu_container` with an interactive shell, a mounted volume, and start a bash session : \n```bash\ndocker run -it --name my_ubuntu_container -v ~/Docker_Share:/data ubuntu /bin/bash\n```\n- The mounted volume facilitates file sharing between the Docker container and the host machine through the `Docker_Share` directory in your host machine. \n\n\n#### Ansible Python API\n\n- Specify the ansible playbook file that should be executed inside the executor.py\n- Adjust the playbook file path in the [executor.py](https://github.com/HexmosTech/Ansika/blob/main/executor.py#L47) file.\n- You can refer [Ansible Python API](https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html) for more details about the code.\n\n#### Build Binary using Nuitka \n\nFor building the binary file run the command:\n\n```bash\n\npython3 -m nuitka --onefile \\\n--include-package-data=ansible:'*.py' \\\n--include-package-data=ansible:'*.yml' \\\n--include-data-files=one_installer.yml=one_installer.yml \\\n executor.py\n```\n\nThe `--include-package-data` option tells Nuitka to include all files that match the specified pattern in the package data of the specified module. In this case, the pattern *.py and *.yml will match all Python files and YAML files in the ansible module.\n\nThe `--include-data-files=one_installer.yml=one_installer.yml` option tells Nuitka to include the ansible playbook file `one_installer.yml` in the distribution.\n\nYou may refer to the [Nuitka user manual](https://nuitka.net/doc/user-manual.html) for more information on the available options.\n\n#### Executing binary\nFirst copy the binary file from the host machine to the docker container : \n```bash\nsudo cp executor.bin ~/Docker_Share\n```\n\nThe shared files can be found in the `data` directory inside the docker container :\n```bash\ncd /data\n```\nRun the executable binary file :\n```bash\n./executor.bin\n```\n\nIf you encounter any permission issues run :\n```bash\nchmod +x executor.bin \n``` \n\n\n\n### Release and One-line command\n\nRelease the binary file and generate a one line command easily using the github actions and workflows.\n\n#### Github Workflow\n\nThe github workflow mentioned in the file [build-and-release.yml](./.github/workflows/build-and-release.yml) will handle the binary creation and release of the binary.\n\n- First commit your changes.\n- Then create a tag name using the command `git tag v1.0.0`.\n- Push the tag `git push v1.0.0`.\n\nIf you encounter any permission issues in the workflow follow this steps:\n\n- Go to the repository \"Settings\".\n- After that, it will show you a left pane where you will find \"Actions\"\n- Expand the \"Actions\" tab\n- Click on \"General\" under the options tab.\n- Now on the new page scroll down and you will find \"Workflow Permissions\"\n- Select \"Read and Write\" under \"Workflow Permissions\".\n\n\n\n#### Binary Release\n\nAfter the successful completion of the workflow you can see a new release with tag_name in the github releases.\n\n#### One-line Command\n\nFinally, generate the one-line command:\n\n```bash\nwget  -q https://github.com/USER/PROJECT/releases/latest/download/executor.bin \u0026\u0026 chmod +x executor.bin \u0026\u0026 ./executor.bin\n```\n\nreplace `USER` and `PROJECT` with github username and repository name.\n\nShare this URL with employees and interns to help them set up the software, tools, and configurations they need for onboarding to your team.\n\n### Blog Post about Ansika\n\n[Ansible + Nuitka: One-line Installer for Smoother Employee Onboarding](https://journal.hexmos.com/ansika/)\n### Acknowledgements\n\n - Ansible\n - Nuitka","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHexmosTech%2FAnsika","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FHexmosTech%2FAnsika","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHexmosTech%2FAnsika/lists"}