deisctl is a command-line utility used to provision and operate a Deis cluster.
In order to build and install deisctl you will need the following:
- make
- Go 1.3+
- Godeps (install with
go get github.com/tools/godep)
$ go get -v github.com/deis/deisctl
$ cd $GOPATH/src/github.com/deis/deisctl
$ make install
$ deisctl
Usage:
deisctl <command> [<target>...] [options]While deisctl can be used locally on a CoreOS host, it is extremely useful as a tool
for remote administration. This requires an SSH tunnel to one of your CoreOS hosts.
Test password-less SSH connectivity to a CoreOS host:
$ ssh core@172.17.8.100 hostname
deis-1Export the DEISCTL_TUNNEL environment variable:
$ export DEISCTL_TUNNEL=172.17.8.100The deisctl install command will schedule and activate all of the Deis platform units.
$ deisctl install
Scheduling data containers...
deis-database-data.service: loaded
deis-registry-data.service: loaded
deis-logger-data.service: loaded
deis-builder-data.service: loaded
Launching data containers...
deis-database-data.service: launched
deis-registry-data.service: launched
deis-logger-data.service: launched
deis-builder-data.service: launched
Scheduling service containers...
deis-database@1.service: loaded
deis-cache@1.service: loaded
deis-logger@1.service: loaded
deis-registry@1.service: loaded
deis-controller@1.service: loaded
deis-builder@1.service: loaded
deis-router@1.service: loaded
Launching service containers...
deis-logger@1.service: launched
deis-cache@1.service: launched
deis-database@1.service: launched
deis-registry@1.service: launched
deis-controller@1.service: launched
deis-builder@1.service: launched
deis-router@1.service: launched
Done.Note that the default install command activates 1 of each component.
You can scale components with deisctl scale router=3, for example.
You can also use the deisctl uninstall command to destroy platform units:
$ deisctl uninstall
Destroying service containers...
deis-database@1.service: inactive
deis-cache@1.service: inactive
deis-logger@1.service: inactive
deis-registry@1.service: inactive
deis-controller@1.service: inactive
deis-builder@1.service: inactive
deis-router@1.service: inactive
Done.To uninstall a specific component, use deisctl uninstall router.
Note that uninstalling platform units will not remove the data units or underlying data containers. Data must be destroyed manually.
The deisctl tool provides a number of other commands, including:
deisctl list- list Deis platform componentsdeisctl status <component>- retrieve Systemd status of a componentdeisctl journal <component>- retrieve Systemd journal outputdeisctl start <component>- start a platform componentdeisctl stop <component>- stop a platform componentdeisctl install <component>- install a single platform componentdeisctl uninstall <component>- uninstall a single platform componentdeisctl scale <component>=<num>- scale a component to the target number of units
$ deisctl list
UNIT MACHINE LOAD ACTIVE SUB
deis-builder-data.service f936b7a5.../172.17.8.100 loaded active exited
deis-builder@1.service f936b7a5.../172.17.8.100 loaded active running
deis-cache@1.service f936b7a5.../172.17.8.100 loaded active running
deis-controller@1.service f936b7a5.../172.17.8.100 loaded active running
deis-database-data.service f936b7a5.../172.17.8.100 loaded active exited
deis-database@1.service f936b7a5.../172.17.8.100 loaded active running
deis-logger-data.service f936b7a5.../172.17.8.100 loaded active exited
deis-logger@1.service f936b7a5.../172.17.8.100 loaded active running
deis-registry-data.service f936b7a5.../172.17.8.100 loaded active exited
deis-registry@1.service f936b7a5.../172.17.8.100 loaded active running
deis-router@1.service f936b7a5.../172.17.8.100 loaded active running$ deisctl status controller
● deis-controller@1.service - deis-controller
Loaded: loaded (/run/fleet/units/deis-controller@1.service; linked-runtime)
Active: active (running) since Mon 2014-08-25 22:56:50 UTC; 15min ago
Process: 22969 ExecStartPre=/bin/sh -c docker inspect deis-controller >/dev/null && docker rm -f deis-controller || true (code=exited, status=0/SUCCESS)
Process: 22945 ExecStartPre=/bin/sh -c IMAGE=`/run/deis/bin/get_image /deis/controller`; docker history $IMAGE >/dev/null || docker pull $IMAGE (code=exited, status=0/SUCCESS)
Main PID: 22979 (sh)
CGroup: /system.slice/system-deis\x2dcontroller.slice/deis-controller@1.service
├─22979 /bin/sh -c IMAGE=`/run/deis/bin/get_image /deis/controller` && docker run --name deis-controller --rm -p 8000:8000 -e PUBLISH=8000 -e HOST=$COREOS_PRIVATE_IPV4 --volumes-from=deis-logger $IMAGE
└─22999 docker run --name deis-controller --rm -p 8000:8000 -e PUBLISH=8000 -e HOST=172.17.8.100 --volumes-from=deis-logger deis/controller:latest
Aug 25 22:57:07 deis-1 sh[22979]: [2014-08-25 16:57:07,959: INFO/MainProcess] Connected to redis://172.17.8.100:6379/0
Aug 25 22:57:07 deis-1 sh[22979]: 2014-08-25 16:57:07 [121] [INFO] Booting worker with pid: 121
Aug 25 22:57:07 deis-1 sh[22979]: [2014-08-25 16:57:07,968: INFO/MainProcess] mingle: searching for neighbors
Aug 25 22:57:08 deis-1 sh[22979]: 2014-08-25 16:57:08 [122] [INFO] Booting worker with pid: 122
Aug 25 22:57:08 deis-1 sh[22979]: 2014-08-25 16:57:08 [123] [INFO] Booting worker with pid: 123
Aug 25 22:57:08 deis-1 sh[22979]: 2014-08-25 16:57:08 [124] [INFO] Booting worker with pid: 124
Aug 25 22:57:08 deis-1 sh[22979]: 2014-08-25 16:57:08 [125] [INFO] Booting worker with pid: 125
Aug 25 22:57:08 deis-1 sh[22979]: 2014-08-25 16:57:08 [126] [INFO] Booting worker with pid: 126
Aug 25 22:57:08 deis-1 sh[22979]: [2014-08-25 16:57:08,979: INFO/MainProcess] mingle: all alone
Aug 25 22:57:08 deis-1 sh[22979]: [2014-08-25 16:57:08,997: WARNING/MainProcess] celery@4378062f17a5 ready.$ deisctl journal controller
...
Aug 25 22:57:08 deis-1 sh[22979]: 2014-08-25 16:57:08 [125] [INFO] Booting worker with pid: 125
Aug 25 22:57:08 deis-1 sh[22979]: 2014-08-25 16:57:08 [126] [INFO] Booting worker with pid: 126
Aug 25 22:57:08 deis-1 sh[22979]: [2014-08-25 16:57:08,979: INFO/MainProcess] mingle: all alone
Aug 25 22:57:08 deis-1 sh[22979]: [2014-08-25 16:57:08,997: WARNING/MainProcess] celery@4378062f17a5 ready.$ deisctl stop controller
deis-controller@1.service: loaded$ deisctl start controller
deis-controller@1.service: launched$ deisctl scale router=3
deis-router@1.service: loaded
deis-router@2.service: loaded
deis-router@3.service: loaded
$ deisctl start router
deis-router@1.service: launched
deis-router@2.service: launched
deis-router@3.service: launchedCopyright 2014, OpDemand LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.