ECS Community Edition Utilities

ecsdeploy

The ecsdeploy utility responsible for executing Ansible playbooks and helper scripts responsible for deploying ECS Community Edition to member data nodes.

Usage: ecsdeploy [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

  Command line interface to ecs-install installer

Options:
  -v, --verbose  Use multiple times for more verbosity
  --help         Show this message and exit.

Commands:
  access         Configure ssh access to nodes
  bootstrap      Install required packages on nodes
  cache          Build package cache
  check          Check data nodes to ensure they are in compliance
  deploy         Deploy ECS to nodes
  disable-cache  Disable datanode package cache handling
  enable-cache   Enable datanode package cache handling
  load           Apply deploy.yml
  reboot         Reboot data nodes that need it
  start          Start the ECS service
  stop           Stop the ECS service

ecsconfig

The ecsconfig utility responsible for communicating with the ECS management API and configuring an ECS deployment with administrative and organizational objects.

Usage: ecsconfig [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

  Command line interface to configure ECS from declarations in deploy.yml

Options:
  -v, --verbose  Use multiple times for more verbosity
  --help         Show this message and exit.

Commands:
  licensing        Work with ECS Licenses
  management-user  Work with ECS Management Users
  namespace        Work with ECS Namespaces
  object-user      Work with ECS Object Users
  ping             Check ECS Management API Endpoint(s)
  rg               Work with ECS Replication Groups
  sp               Work with ECS Storage Pools
  trust            Work with ECS Certificates
  vdc              Work with ECS Virtual Data Centers

ecsremove

The ecsremove utility is responsible for removing ECS instances and artifacts from member data nodes and the install node.

Usage: ecsremove [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

  Command line interface to remove ECS bits

Options:
  -v, --verbose  Use multiple times for more verbosity
  --help         Show this message and exit.

Commands:
  purge-all        Uninstall ECS and purge artifacts from all nodes
  purge-installer  Purge caches from install node
  purge-nodes      Uninstall ECS and purge artifacts from data nodes

enter

This utility has two functions: 1. To access member data nodes by name enter luna 2. To access the ecs-install image directly and the contents of the data container.

Accessing the ecs-install image directly

[admin@installer-230 ~]$ enter
installer-230 [/]$

Accessing a member node

[admin@installer-230 ~]$ enter luna
Warning: Identity file /opt/ssh/id_ed25519 not accessible: No such file or directory.
Warning: Permanently added 'luna,192.168.2.220' (ECDSA) to the list of known hosts.
Last login: Thu Nov  9 16:44:31 2017 from 192.168.2.200
[admin@luna ~]$

catfacts

This utility displays all the facts Ansible has registered about a node in pretty-printed, colorized output from jq paged through less.

Running catfacts without an argument lists queryable nodes.

[admin@installer-230 ~]$ catfacts
Usage: $ catfacts <Ansible inventory host>
Here is a list of hosts you can query:
Data Node(s):
  hosts (1):
    192.168.2.220
Install Node:
  hosts (1):
    192.168.2.200

Querying a node

[admin@installer-230 ~]$ catfacts 192.168.2.200
{
  "ansible_all_ipv4_addresses": [
    "172.17.0.1",
    "192.168.2.200"
  ],
  "ansible_all_ipv6_addresses": [
    "fe80::42:98ff:fe85:2502",
    "fe80::f0c5:a7d1:6fff:205e"
  ],
  "ansible_apparmor": {
    "status": "disabled"
  },
  "ansible_architecture": "x86_64",
  "ansible_bios_date": "04/01/2014",
  "ansible_bios_version": "rel-1.8.2-0-g33fbe13 by qemu-project.org",
  "ansible_cmdline": {
    "BOOT_IMAGE": "/vmlinuz-3.10.0-693.5.2.el7.x86_64",
    "LANG": "en_US.UTF-8",

[... snip ...]

update_deploy

This utility updates the /opt/emc/ecs-install/deploy.yml file with the updated contents of the file deploy.yml provided during bootstrapping. It can also set the path to the deploy.yml file from which to fetch updates.

Running with no arguments

[admin@installer-230 ~]$ update_deploy
> Updating /opt/emc/ecs-install/deploy.yml from /home/admin/ecsce-lab-configs/local/local-lab-1-node-1/deploy.yml
37c37
<     ssh_password: ChangeMe
---
>     ssh_password: admin
> Recreating ecs-install data container
ecs-install> Initializing data container, one moment ... OK
ecs-install> Applying deploy.yml

Updating the deploy.yml file to a different source.

[admin@installer-230 ~]$ update_deploy ~/ecsce-lab-configs/local/local-lab-1-node-2/deploy.yml
> Updating bootstrap.conf to use deploy config from /home/admin/ecsce-lab-configs/local/local-lab-1-node-2/deploy.yml
> Updating /opt/emc/ecs-install/deploy.yml from /home/admin/ecsce-lab-configs/local/local-lab-1-node-2/deploy.yml
37c37
<     ssh_password: admin
---
>     ssh_password: ChangeMe
82c82
<         - 192.168.2.221
---
>         - 192.168.2.220
173a174
>
> Recreating ecs-install data container
ecs-install> Initializing data container, one moment ... OK
ecs-install> Applying deploy.yml

videploy

This utility modifies the deploy.yml file currently installed at /opt/emc/ecs-install/deploy.yml.

[admin@installer-230 ~]$ videploy

First, vim runs with the contents of deploy.yml, and then videploy calls update_deploy.

pingnodes

This utility pings nodes involved in the deployment using Ansible’s ping module to verify connectivity. It can be used to ping groups or individual nodes.

Ping all data nodes (default)

[admin@installer-230 ~]$ pingnodes
192.168.2.220 | SUCCESS => {
    "changed": false,
    "failed": false,
    "ping": "pong"
}

Ping all known nodes

[admin@installer-230 ~]$ pingnodes all
localhost | SUCCESS => {
    "changed": false,
    "failed": false,
    "ping": "pong"
}
192.168.2.200 | SUCCESS => {
    "changed": false,
    "failed": false,
    "ping": "pong"
}
192.168.2.220 | SUCCESS => {
    "changed": false,
    "failed": false,
    "ping": "pong"
}

Ping the node identified as 192.168.2.220

[admin@installer-230 ~]$ pingnodes 192.168.2.220
192.168.2.220 | SUCCESS => {
    "changed": false,
    "failed": false,
    "ping": "pong"
}

Ping members of the install_node group

[admin@installer-230 ~]$ pingnodes install_node
192.168.2.200 | SUCCESS => {
    "changed": false,
    "failed": false,
    "ping": "pong"
}

inventory

This utility displays the known Ansible inventory and all registered group and host variables.

[admin@installer-230 ~]$ inventory
{
  "ecs_install": {
    "hosts": [
      "localhost"
    ],
    "vars": {
      "ansible_become": false,
      "ansible_python_interpreter": "/usr/local/bin/python",
      "ansible_connection": "local"
    }
  },
  "install_node": {
    "hosts": [
      "192.168.2.200"
    ],

[... snip ...]