Bringing in new engineers to your team means tediously setting up lots of software.Ansika helps build hassle-free custom one-line installers, saving your team time, effort, and money.
Ansika 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.
Ansika produces a binary file that does not requires external dependencies. Simply define software, libraries, and configurations in the Ansible playbook file (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.
- Install any combination of software packages, libraries and extensions
- Run commands and configure setting files
- Produce zero-dependency binaries
- Provide one-liner to perform every on-boarding task
- 100% Free and Open Source Software
- Built upon solid tech: Ansible and Nuitka (Python)
To 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.
- python: Version 2.7 or 3.5 and higher
- Ansible: Version 2.7 or higher (depends on python version installed)
- Nuitka: Version 1.7.5 or higher
- Install Ansible :
pip3 install ansible==7.0.0
- Install Nuitka :
pip3 install nuitka==1.7.5
Modify the ansible playbook file in this repository (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.
We 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 :
- Begin by pulling the Ubuntu 20.04 image from Docker Hub :
docker pull ubuntu:20.04
- Run an Ubuntu container named
my_ubuntu_container
with an interactive shell, a mounted volume, and start a bash session :
docker run -it --name my_ubuntu_container -v ~/Docker_Share:/data ubuntu /bin/bash
- The mounted volume facilitates file sharing between the Docker container and the host machine through the
Docker_Share
directory in your host machine.
- Specify the ansible playbook file that should be executed inside the executor.py
- Adjust the playbook file path in the executor.py file.
- You can refer Ansible Python API for more details about the code.
For building the binary file run the command:
python3 -m nuitka --onefile \
--include-package-data=ansible:'*.py' \
--include-package-data=ansible:'*.yml' \
--include-data-files=one_installer.yml=one_installer.yml \
executor.py
The --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.
The --include-data-files=one_installer.yml=one_installer.yml
option tells Nuitka to include the ansible playbook file one_installer.yml
in the distribution.
You may refer to the Nuitka user manual for more information on the available options.
First copy the binary file from the host machine to the docker container :
sudo cp executor.bin ~/Docker_Share
The shared files can be found in the data
directory inside the docker container :
cd /data
Run the executable binary file :
./executor.bin
If you encounter any permission issues run :
chmod +x executor.bin
Release the binary file and generate a one line command easily using the github actions and workflows.
The github workflow mentioned in the file build-and-release.yml will handle the binary creation and release of the binary.
- First commit your changes.
- Then create a tag name using the command
git tag v1.0.0
. - Push the tag
git push v1.0.0
.
If you encounter any permission issues in the workflow follow this steps:
- Go to the repository "Settings".
- After that, it will show you a left pane where you will find "Actions"
- Expand the "Actions" tab
- Click on "General" under the options tab.
- Now on the new page scroll down and you will find "Workflow Permissions"
- Select "Read and Write" under "Workflow Permissions".
After the successful completion of the workflow you can see a new release with tag_name in the github releases.
Finally, generate the one-line command:
wget -q https://github.com/USER/PROJECT/releases/latest/download/executor.bin && chmod +x executor.bin && ./executor.bin
replace USER
and PROJECT
with github username and repository name.
Share this URL with employees and interns to help them set up the software, tools, and configurations they need for onboarding to your team.
Ansible + Nuitka: One-line Installer for Smoother Employee Onboarding
- Ansible
- Nuitka