aacebedo / machination Goto Github PK
View Code? Open in Web Editor NEWAn helper to create virtual machines using Docker and Vagrant
An helper to create virtual machines using Docker and Vagrant
fix: if alignement line 267 of cmdline.py
When trying to start a machine instance:
VM must be running to open SSH connection. Run
vagrant up
to start the virtual machine.
solution:
docker rm -f
"Machination destroy: error: argument name: invalid choice: 'xxx' (choose from )"
expected: choice list
défault: --all
or only specific named templates
Note that machination -h work as expected on stdout.
looks like a unwanted side effect
Generation of mac addresses in python seems to create problems with pipework.
Suggestion: keep auto in instance machine.config and let pipework handle it ?
add a schema on readme page with little boxes and arrows explaining:
How the different files are linked together, and how to add or extend a template.
Everything seems to work, but the warning can hide problems.
I would like machination to automatically deletes instances, docker container and rebuild docker images if I change something in the files defining the machine (roles or template).
(common practice, ie docker)
Can be generated with template
It would be nicer to the users reluctant to changing theirs little habits...
note: ip address is only shown if machine is running (ie not stopped)
For a simple change in a task, it would be a lot quicker if we could use docker cache feature.
I'll prefer --sharedfolder :
(instead the use of pipe as a separator)
machination create -h
IMHO adding an interface and adding a sharedfolder should have the same syntax (and separator, but guestinterface still uses the pipe).
--guestinterface GUESTINTERFACE, -i GUESTINTERFACE
Network interface to add to the new machine
<hostinterface|ip_addr|mac_addr|hostname> |
<hostinterface|ip_addr|mac_addr>
--sharedfolder SHAREDFOLDER SHAREDFOLDER, -s SHAREDFOLDER SHAREDFOLDER
Shared folder between the new machine and the host
<host_folder guest_folder>
And maybe package a v0.1 when done ? :)
It would be nice to have cmd
machination list
act as
machination list templates + machination list instances
temp workaround:
cd ~/.machination/instances/
vagrant ssh -c ""
maybe in ~/.machination/instances//log ?
I saw the light, and it has a name: TDD !
machination is based on templates
A template define:
Ansible needs a playbook file that defines which roles to execute.
The file is named ..playbook
The roles are then executed in order of their listing (and can depend themselves on other roles).
To allow automatic delete if the instance already exists.
(And dynamically get installed templates.)
I would like to see args given by sharedfolder on creation on information listed with
machination infos
Ideally on both:
machination list instances
and
machination infos
--sharedfolder
Do you want to add a synced folder ?
usefull for further automation: parsing of machination outputs without context lines
example: machination list instances:
get rid of the two first lines:
"Machine instances:"
"-------------------"
with maybe a --parse option ?
Some steps that can take a long time would be nicer with some user feedback, in order to know everything is working (otherwise the user might suspect machination is hanged).
Example: "Image needs provisioning, starting packer..." step on creation
Ideally: progress bar or percentage completed.
==> machination-gatewayA: Vagrant has noticed that the synced folder definitions have changed.
==> machination-gatewayA: With Docker, these synced folder changes won't take effect until you
==> machination-gatewayA: destroy the container and recreate it.
Why does it says that and what effect does it have on my env ?
(At least, have an FAQ that explains this).
machination start --verbose
fails and print an error
"Unable to start machine instance '': Error while starting machine instance: ''.
But the return code transmited to bash is 0.
Problem: should change the way action are launched from argument parsing.
from waf config:
Checking Python version : 2.7.8
Checking Vagrant version : 1.7.2
Checking Ansible version : 1.9.1
Checking Docker version : 1.5.0
Checking Udhcpc version : present
Checking packer version : 0.7.5
Checking python module enum : ok
Checking python module argcomplete : ok
from readme:
Vagrant 1.7.2
Ansible 1.7.2
Python 2.7.8
Docker 1.4.1
Enum for Python 2.7
Host-side-provisioner for vagrant (https://github.com/phinze/vagrant-host-shell)
Docker's pipework (https://github.com/jpetazzo/pipework)
machination create --sharedPlop myTemplate 1.0 myInstance
should fail very early
specially for integration since status is beta for now...
maybe as an option to ssh arg ?
Command to take template/role modifications into account should be proposed from machination cmd line.
machination create --sharedfolder /home/titi/toto /mnt/project --sharedfolder /home/titi/tutu /mnt/install --no-interactive --verbose :1.0
[...]
Templates loaded.
Instances loaded.
Instance does not exist, proceeding to its creation.
[...]
Unable to create machine instance : object of type 'NoneType' has no len().
Traceback (most recent call last):
File "/usr/local/share/machination/python/machination/cmdline.py", line 454, in createMachineInstance
(template, arch, osversion, provider, provisioner, guestInterfaces, sharedFolders) = w.execute(args,templates)
File "/usr/local/share/machination/python/machination/cmdline.py", line 249, in execute
if(len(args.guestinterface) < template.getGuestInterfaces()):
TypeError: object of type 'NoneType' has no len()
It's cleary the user fault, but as my templates are in a git repo where I switched branch, I'll like an explicit error message saying which file(s) cannot be accessed.
It's a bit strange that options --quiet and --verbose have a sense together.
I suggest to replace --quiet with --no-interractive
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.