1
0
Fork 0
mirror of https://github.com/mmumshad/ansible-playable.git synced 2025-02-12 17:11:53 +00:00
No description
Find a file
Mumshad Mannambeth 2fc2040882 Update Readme file
2017-07-13 13:36:02 -04:00
client Update Readme file and index page 2017-07-13 13:34:44 -04:00
e2e Initial Commit 2017-06-07 13:36:45 -04:00
helpers Update startup script to skip starting local mongodb if MONGODB_URI is provided 2017-07-12 13:56:58 -04:00
server Add support for video demos 2017-07-13 11:47:20 -04:00
.babelrc Initial Commit 2017-06-07 13:36:45 -04:00
.buildignore Initial Commit 2017-06-07 13:36:45 -04:00
.dockerignore Add .dockerignore 2017-07-07 12:28:02 -04:00
.editorconfig Initial Commit 2017-06-07 13:36:45 -04:00
.eslintrc Initial Commit 2017-06-07 13:36:45 -04:00
.gitattributes Initial Commit 2017-06-07 13:36:45 -04:00
.gitignore Ignore logs from git 2017-07-08 21:19:29 -04:00
.gitlab-ci.yml Update gitlab ci file 2017-06-07 16:37:50 -04:00
.travis.yml Initial Commit 2017-06-07 13:36:45 -04:00
.yo-rc.json Initial Commit 2017-06-07 13:36:45 -04:00
bitbucket-pipelines.yml bitbucket-pipelines.yml edited online with Bitbucket 2017-06-07 23:00:40 +00:00
Dockerfile Add Label to Dockerfile 2017-07-12 13:56:32 -04:00
gulpfile.babel.js Modify entrypoint to serve without build as build is a separate step before 2017-07-12 07:31:17 -04:00
karma.conf.js Initial Commit 2017-06-07 13:36:45 -04:00
mocha.conf.js Initial Commit 2017-06-07 13:36:45 -04:00
mocha.global.js Initial Commit 2017-06-07 13:36:45 -04:00
package.json Implement Express server logging 2017-07-08 20:32:46 -04:00
protractor.conf.js Initial Commit 2017-06-07 13:36:45 -04:00
README.md Update Readme file 2017-07-13 13:36:02 -04:00
spec.js Update server side test cases and disable client side tests for now. Integrate later. 2017-07-07 12:23:45 -04:00
webpack.build.js Initial Commit 2017-06-07 13:36:45 -04:00
webpack.dev.js Initial Commit 2017-06-07 13:36:45 -04:00
webpack.make.js Initial Commit 2017-06-07 13:36:45 -04:00
webpack.test.js Initial Commit 2017-06-07 13:36:45 -04:00

Playable

ansible-playable

Playable is an Ansible Playbook generator UI developed in MEAN stack using Yeoman angular-fullstack-generator and built using Docker. 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 an developing custom modules. I think it will help the Ansible community and am looking forward to assistance in developing and maintaining this project.

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

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

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.

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

Prerequisites

With Docker

A host with docker installed. For instructions on installing Docker on host please check here

Without Docker

Without Docker you will have to setup the system manually:

Install the following dependencies

  • Git

  • Node.js and npm Node >= 4.x.x, npm >= 2.x.x

  • Gulp (npm install --global gulp)

  • MongoDB - Keep a running daemon with mongod

  • Ansible

    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.

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.