Skip to main content

A command called cmsd and foo for the cloudmesh shell

Project description

Cloudmesh cmsd

Cloudmesh cmsd is a command to run cloudmesh in a container regardless of the OS. Thus it is extremely easy to install and use.

cmsd will, however, use locally installed keys in ~/.ssh and cloud configurations stored in ~/.cloudmesh/cloudmesh.yaml. The YAML file is created upon the first call of cmsd if it is not available.

How to use cmsd

Important. You must have cms in debug off mode. to use the cmsd command

cms debug off

Prerequesites

  • Docker
  • python 3.8 or newer
  • We strongly recommended using a python virtual environment
  • Install cloudmesh-installer by following the documentation in the Cloudmesh manual

User instalation

Please use a python virtualenv as to not interfere with your system python. Activate your python venv. Next just call

$ pip install cloudmesh-cmsd

This will install a command cmsd in your environment that you can use as an in-place replacement for the cms command.

The containers are called

  • cloudmesh-cms
  • cloudmesh-mongo

Developer Source install

For developers, it can be installed in an easy fashion with

Linux, osx:

$ python3.8 -m venv ~/ENV3
$ pip install pip -U
$ source ~/ENV3/bin/activate
$ mkdir cm   
$ cd cm  
$ pip install cloudmesh-installer -U 
$ cloudmesh-installer git clone cmsd 
$ cloudmesh-installer install cmsd   

Windows:

$ python -m venv ENV3
$ pip install pip -U
$ ENV3\Scripts\activate
$ mkdir cm   
$ cd cm  
$ pip install cloudmesh-installer -U 
$ cloudmesh-installer git clone cmsd 
$ cloudmesh-installer install cmsd   

Now you can use the command

cms help

Yes, the command cms help is without a d!

From now on you use the cmsd

cmsd --setup

The source code is contained in

cloudmesh-cmsd

cmsd setup

To run cmsd, you would need a configuration directory that is mounted into the container. Let us call this CLOUDMESH_CONFIG_DIR. Set CLOUDMESH_CONFIG_DIR as an environment variable.

For Unix:

$ export CLOUDMESH_CONFIG_DIR=<path to CLOUDMESH_HOME_DIR>

For Windows:

> set CLOUDMESH_CONFIG_DIR=<path to CLOUDMESH_HOME_DIR>

NOTE:

  • CLOUDMESH_CONFIG_DIR path must not have in any spaces.
  • Clarification for Windows users:
  • For example C:\.cloudmesh will work, so does C:\Users\gregor\.cloudmesh, but not C:\Users\gregor von Laszewski\.cloudmesh)
  • Make sure that the drive of the CLOUDMESH_CONFIG_DIR is granted file access in Docker settings

Run setup. If you are running setup on an empty CLOUDMESH_CONFIG_DIR, you will be asked to key in some details that are required for the setup, such as profile details, Mongo DB credentials, etc.

$ cmsd --setup 

Run the following command to see if the cloudmesh-cms-container is running! Additionally, check CLOUDMESH_CONFIG_DIR contains the cloudmesh.yaml file.

$ cmsd --ps

Run the following to verify if the configurations you entered have been properly reflected in the cloudmesh.yaml file.

$ cmsd config cat

cmsd usages

cmsd --stop

  • stop the containers

cmsd --start

  • start/restart the containers, use

cmsd --start

  • Clean the containers (remove stopped containers)

`cmsd --clean

  • Log into the running

MongoDB and Mongo client connections

cmsd is running an official MongoDB container from Docker Hub. Refer here.

Mongo server container is bound to 127.0.0.1:27071 port. Therefore you can use any Mongo client to explore the database by connecting to this port.

Example Usecase - Creating a vm in AWS

Create an AWS account and add the authentication information in the CLOUDMESH_HOME_DIR/cloudmesh.yaml file. Refer Cloudmesh Manual - AWS

Set cloud to aws

$ cmsd set cloud=aws 

Set AWS key name

$ cmsd set key=<key name> 

Boot a vm with the default config

$ cmsd vm boot 

Manual Page

  Usage:
        cmsd --help
        cmsd --setup
        cmsd --clean
        cmsd --version
        cmsd --update
        cmsd --start
        cmsd --stop
        cmsd --ps
        cmsd --gui COMMAND...
        cmsd --shell
        cmsd --pipe
        cmsd COMMAND...


  This command passes the arguments to a docker container
  that runs cloudmesh.

  Arguments:
      COMMAND the commands we bass along

  Description:

    cmsd --help

        prints this manual page

    cmsd --setup

        downloads the source distribution, installs the image locally

    cmsd --clean

        removes the container form docker

    cmsd --version

        prints out the verison of cmsd and the version of the container

    cmsd --gui
        runs cloudmesh gui on the docker container

    cmsd --update

        gets a new container form dockerhub

    cmsd COMMAND

        The command will be executed within the container, just as in
        case of cms.

    cmsd

        When no command is specified cms will be run in interactive
        mode.

Quickstart

macOS with python 3.8.1 from python.org

  1. Requirements:

    • Have a sername without a space.
    • Have docker installed and accessible to the user.
    • Have python 3.8.1 from python.org installed.

    Create a key ~/.ssh/id_rsa if you do not already have one

    $ ssh-keygen
    
  2. Install:

    Open a new terminal,

    $ python3.8 -m venv ~/ENV3
    $ source ~/ENV3/bin/activate
    $ pip install cloudmesh-cmsd
    
  3. Setup:

    $ cms help
    $ cmsd --gui profile
    $ cmsd --gui activate
    $ cmsd --gui mongo user
    $ cmsd --setup
    $ cmsd init
    
  4. Do some simple tests to see if it works

    Testing help command:

    $ cmsd help
    

    Output:

    Documented commands (type help <topic>):
    ========================================
    EOF       config     help       man        quit      ssh        vcluster      
    admin     container  host       open       register  start      version       
    aws       data       image      openstack  sec       stop       vm            
    azure     debug      info       pause      service   stopwatch  workflow_draft
    banner    default    init       plugin     set       sys      
    check     echo       inventory  provider   shell     test     
    clear     flavor     ip         py         sleep     var      
    commands  group      key        q          source    vbox 
    

    Testing banner command:

    $ cmsd banner hello
    

    Output:

    banner
    ######################################################################
    # hello
    ######################################################################
    

    Testing sec command:

    $ cmsd sec rule list
    

    Output:

    +-------+----------+-----------+-----------+
    | Name  | Protocol | Ports     | IP Range  |
    +-------+----------+-----------+-----------+
    | ssh   | tcp      | 22:22     | 0.0.0.0/0 |
    | icmp  | icmp     |           | 0.0.0.0/0 |
    | flask | tcp      | 8000:8000 | 0.0.0.0/0 |
    | http  | tcp      | 80:80     | 0.0.0.0/0 |
    | https | tcp      | 443:443   | 0.0.0.0/0 |
    +-------+----------+-----------+-----------+
    

Demonstartion of the different uses of cmsd

  1. Commandline

    $ cmsd banner hallo
    
    banner
    ######################################################################
    # hello
    ######################################################################
    
  2. Pipe

    $ echo "banner hello" | cmsd --pipe
    
    +-------------------------------------------------------+
    |   ____ _                 _                     _      |
    |  / ___| | ___  _   _  __| |_ __ ___   ___  ___| |__   |
    | | |   | |/ _ \| | | |/ _` | '_ ` _ \ / _ \/ __| '_ \  |
    | | |___| | (_) | |_| | (_| | | | | | |  __/\__ \ | | | |
    |  \____|_|\___/ \__,_|\__,_|_| |_| |_|\___||___/_| |_| |
    +-------------------------------------------------------+
    |                  Cloudmesh CMD5 Shell                 |
    +-------------------------------------------------------+
    
    cms> banner
    ######################################################################
    # hello
    ######################################################################   ```
    
  3. Interactive

    $ cmsd
    start cms interactively
    
    +-------------------------------------------------------+
    |   ____ _                 _                     _      |
    |  / ___| | ___  _   _  __| |_ __ ___   ___  ___| |__   |
    | | |   | |/ _ \| | | |/ _` | '_ ` _ \ / _ \/ __| '_ \  |
    | | |___| | (_) | |_| | (_| | | | | | |  __/\__ \ | | | |
    |  \____|_|\___/ \__,_|\__,_|_| |_| |_|\___||___/_| |_| |
    +-------------------------------------------------------+
    |                  Cloudmesh CMD5 Shell                 |
    +-------------------------------------------------------+
    
    cms> banner hello
    banner
    ######################################################################
    # hello
    ######################################################################
    cms> quit
    
  4. Access container shell for development

    $ cmsd --shell
    
    root@docker-desktop:/cm# ls -1
    cloudmesh-aws
    cloudmesh-azure
    cloudmesh-cloud
    cloudmesh-cmd5
    cloudmesh-common
    cloudmesh-configuration
    cloudmesh-inventory
    cloudmesh-openstack
    cloudmesh-sys
    cloudmesh-test
    root@docker-desktop:/cm# 
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudmesh-cmsd-4.2.11.tar.gz (12.5 kB view hashes)

Uploaded Source

Built Distribution

cloudmesh_cmsd-4.2.11-py2.py3-none-any.whl (9.4 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page