1
0
Fork 0
mirror of https://github.com/mmumshad/ansible-playable.git synced 2025-02-12 15:41:56 +00:00
ansible-playable/README.md
Mumshad Mannambeth fc456d04d3
Update README.md
2018-12-10 12:01:24 +08:00

207 lines
8.8 KiB
Markdown

# Playable
> Note: This project needs help in development. If you are interested please join our slack group at: https://join.slack.com/t/kodekloud/shared_invite/enQtNDY2NzI2OTY1NTIxLTQ5NjM1NTg2MDlmMDBhYWY3MWI2NmMwYzA4YTkyY2JiZmRjMTE4ZmU5NzA5ODIzMDc2YzcyZGZlYTgwYTY4ODg
> Note: Only compatible with Ansible version - <2.4.
[![ansible-playable](https://raw.githubusercontent.com/mmumshad/ansible-playable/master/client/assets/images/banner.png)](http://ansible-playable.com)
[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/ansible-playable/Lobby)
[![](https://images.microbadger.com/badges/image/mmumshad/ansible-playable.svg)](https://microbadger.com/images/mmumshad/ansible-playable "Get your own image badge on microbadger.com")
[![](https://images.microbadger.com/badges/version/mmumshad/ansible-playable.svg)](https://microbadger.com/images/mmumshad/ansible-playable "Get your own version badge on microbadger.com")
Playable is an Ansible Playbook generator UI developed in MEAN stack using [Yeoman angular-fullstack-generator](https://github.com/angular-fullstack/generator-angular-fullstack) and built using [Docker](https://www.docker.com/).
The tool may be used by an individual or a team to
- Generate Ansible Playbooks
- Easily Search and import roles from Galaxy or Github
- Execute and Test Playbooks (Not available in the publicly hosted version)
- Develop custom modules and test them
- All the above while enforcing Ansible Best Practices
This is a fun project I started working on from my experience working with Ansible and developing custom modules, hoping that it will help the Ansible community.
> Note: This project is in its initial Alpha release. Hence this is only to be used for test purpose and at your own risk.
## Demo
Try a publicly hosted live demo at [ansible-playable.com](http://www.ansible-playable.com)
> Note: You may create projects and playbooks. But cannot execute or test them. For this you must host a private version of the tool yourself, following instructions below
## Getting Started
The easiest way to get started is to use Docker. The latest version of the software is built using docker and is available at [Docker hub](https://hub.docker.com/r/mmumshad/ansible-playable/)
Run the image to get started
```
docker run -p 80:8080 mmumshad/ansible-playable
```
Remember to use port mapping to map http port to external host.
Once the docker container is running visit http://<docker host\> to access the web portal.
The above command should only be used for testing purpose as the changes you make are not saved. The projects you create are not retained after restarting docker container.
To persist data across docker container restarts use the below command to map volumes from docker container on the docker host.
```
docker run -p 80:8080 -v /data/db:/data/db -v /opt/ansible-projects:/opt/ansible-projects mmumshad/ansible-playable
```
This command creates two volume maps - /data and /opt/ansible-projects. These directories must pre-exist on the docker host. All changes made by the docker container will now be stored in these folders.
Checkout Advanced Topics below for more details
## Features
The tool currently supports the following features and functionality:
- Ansible Engine
- Add one Ansible Engine/s (Ansible Controller) per project
- Test connectivity to Ansible Engine
- Identify Ansible version
- Ansible Projects
- Create/Edit/Delete Ansible Projects
- Define Ansible Inventory files and variables
- View and edit project files
- Create Playbooks
- Create Plays and Tasks
- List all available modules
- Show module descriptions and parameters. Automatically identify parameters from documentation. (Provided the module was documented correctly in the standard format)
- List defined variables and values from inventory files as module parameters
- Search Roles from Github/Ansible Galaxy
- Show ReadMe file of roles in HTML format
- Import Roles from Github/Ansible Galaxy
- Playbook Execution
- Execute playbooks - individual or full
- Select custom verbose level
- Select custom hosts
- View Ansible output in the UI
- Test imported Roles
- View previous execution results
- Custom Modules
- Auto generate custom module template as per best practice
- Auto update documentation and parameter section based on user input
- Provides default properties and available types in UI
- Test developed custom module
- Admin
- View list of users
- Delete Users
- View System and Server logs from the Admin tab
### Advanced options
Some advanced options on customizing execution are given below
#### External database
By default the web application uses a local mongodb instance. To use an external instance of MongoDB provide a different environmental variable using the -e parameter in docker command
```
docker run -p 80:8080 -e MONGODB_URI=mongodb://dbuser:password@test.mlab.com/ansible-playable mmumshad/ansible-playable
```
#### S3 storage for projects data
By default all ansible projects and files are stored at location /opt/ansible-projects. You may map volume using docker run parameter -v to map a local volume on host to this directory.
In case you need this to be on an external S3 store, set the below environment variables:
- AWS_ACCESS_KEY_ID=KEY
- AWS_SECRET_ACCESS_KEY=SECRET_KEY
- MOUNT_S3=True
- S3_PATH=ansible-playable-storage/data
Example Command:
```
docker run -p 80:8080 -e AWS_ACCESS_KEY_ID=KEY -e - AWS_SECRET_ACCESS_KEY=SECRET_KEY -e MOUNT_S3=True -e S3_PATH=ansible-playable-storage/data mmumshad/ansible-playable
```
#### Authentication
To configure Google Authentication provide the below keys:
- DOMAIN=http://ansible-playable.com
- GOOGLE_ID=ID
- GOOGLE_SECRET=SECRET
> Note: you must first configure google authentication and gather the GOOGLE_ID and GOOGLE_SECRET for this.
#### Admin user account
By default the local admin account is created and the email used is "admin@example.com" and the password is "admin". Provide the below environment variables to use a different password or to recreate admin and test account
- SEED_DB=true
- EMAIL_USER_ADMIN=admin@playable.com
- PASSWORD_ADMIN=ADMIN_PASSWORD
- EMAIL_USER_TEST=test@playable.com
- PASSWORD_TEST=TEST_ACCOUNT_PASSWORD
### Prerequisites
#### With Docker
A host with docker installed. For instructions on installing Docker on host please check [here](https://docs.docker.com/engine/installation/)
#### Without Docker
Without Docker you will have to setup the system manually:
Install the following dependencies
- [Git](https://git-scm.com/)
- [Node.js and npm](nodejs.org) Node >= 4.x.x, npm >= 2.x.x
- [Gulp](http://gulpjs.com/) (`npm install --global gulp`)
- [MongoDB](https://www.mongodb.org/) - Keep a running daemon with `mongod`
- [Ansible](https://www.ansible.org/)
The Dockerfile in this code repository will give you the exact instructions to install dependencies and setup environment
### Developing
1. Run `npm install` to install server dependencies.
2. Run `mongod` in a separate shell to keep an instance of the MongoDB Daemon running
3. Run `gulp serve` to start the development server. It should automatically open the client in your browser when ready.
## Build & development
Run `gulp build` for building and `gulp serve` for preview.
## Testing
Running `gulp test` will run the unit tests with karma.
## Limitations
Only compatible with Ansible version - <2.4.
## Improvements
- Improve Logging
- Improve Testing - add additional test cases
- Improve Security
- Sharing projects with multiple users
- Implement Vault Support
- Integration with Active Directory/LDAP
- Improve Collaboration
- Sharing projects between multiple users
- GIT integration
## License
MIT License
Copyright (c) 2017 Mumshad Mannambeth
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.