How about we release some software

Agile. So you think you're an agile practitioner? Well... I can tell you, if you spend more than 75% of your day in meetings, trying to predict how much time it will take to complete the project, then I would strongly disagree. Twiddling and re-twiddling fabricated estimates you somehow created without building software or releasing to production does not make you an agile practitioner.

Agile is all about the enablement of releasing code to production... OFTEN !!!  And by often I mean more often than 10 months... or another way of putting the same statement... NEVER.  Come on, people.  'NEVER' is not acceptable.  I would be happy with once a month, and once a week would be delightful.  I am not even going to think about having the discussion around the idea of continuous deployment.

And by production... I think we should strive for apps to be released to a device where an actual person can touch the screen and make things happen.  Bundling up features into a releasable package would be fine and probably quite acceptable to the consumer / user of the application.  The benefits of releasing the application to a somewhat public audience, where we can get 'real' feedback would be invaluable.  You do realize we are all about feedback... keeping the product in alignment with the changing needs of the product owner and the business.

As you read the remainder of this... please sit and read this as you are the product owner or better yet, the technical manager of an agile team trying to deliver business value to your company.  Why would you want to deliver a product... early and often?  Why would you want to receive feedback (real feedback) from the customer and allow your progress to be driven (guided) by these changes in direction.  Seems like the right thing to do.

In the case of my example for this post.  Making even a small adjustment to the release cadence would make a huge impact to the delivery of the product including quality and correctness.  Imagine if we could deliver something every six months (remember currently we are sitting at 10 months... with nothing delivered).  Delivering something every six months seems a pathetic goal for a team accustomed to delivery on a weekly basis, but to a team only delivering yearly... this would be a doubling of the value delivered to the customer.

Why would you want to deliver faster?

  • faster customer feedback
  • what you are trying to build, will change... do you want a waterfall project where you deliver something 12 months after defining it... I am sure you can remember one of those projects.
  • risks become smaller because you are dealing with them faster
  • value faster
  • code management is easier
  • smaller regression cycle (both from an automated and manual standpoint)
  • trust... working software... makes customers happy
  • cycle period from request to working software is smaller

EARLY and OFTEN... not a bad thing!

Posted

Docker Machine Base Script

Docker Machine

scripts

Please review the base scripts on our github repository.

docker-vm.sh

docker-vm_machine_lib.sh

nfsd_util.sh

init

Used for the initialization of the virtual machine (vm) instance.  This method will normally be used to initialize the vm instance, but will not be required after.

cd /opt/boxen/repo/vm
./confluence-vm.sh init

create

Can be used stand-alone, but is generally used as part of the 'init'.

delete

Shutdown the VM instance and delete.

start

Start an already initialized VM.

stop

Stop a running VM.

restart

Restart an already executing VM.

ssh

Gain ssh access to a running instance of the VM.

attach

Attach to a running instance of the VM and view console output.

status

View status information associated with running instance of VM.

Example Output
XAVIER:vm ga-mlsdiscovery$ ./stash-vm.sh status
Docker Virtual Machine (stash-vm)
Running
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                            NAMES
bbc767be3fbb        atlassian/stash     "./bin/start-stash.sh"   19 hours ago        Up 19 hours         0.0.0.0:7990->7990/tcp, 0.0.0.0:7999->7999/tcp   stash

 

inspect

View details about a running instance of the VM.

Example Output
XAVIER:vm ga-mlsdiscovery$ ./stash-vm.sh inspect
Docker Virtual Machine (stash-vm)
[
{
    "Id""f1f430b54be85ce50f937feb85b3c7ca1c4d10e8982fb31cfaf958bb82ab1586",
    "Parent""2cc45471c854425f26002abcf60f40ef37922fd4c960d65ec238e87bf277203e",
    "Comment""",
    "Created""2015-08-28T04:22:02.59075488Z",
    "Container""28625eb37c0c2addb57441ead09da2c1c9e7decf543667caa8bb8aed7f2ed766",
    "ContainerConfig": {
        "Hostname""1a382cba094f",
        "Domainname""",
        "User""daemon:daemon",
        "AttachStdin"false,
        "AttachStdout"false,
        "AttachStderr"false,
        "ExposedPorts": {
            "7990/tcp": {},
            "7999/tcp": {}
        },
        "PublishService""",
        "Tty"false,
        "OpenStdin"false,
        "StdinOnce"false,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "LANG=C.UTF-8",
            "JAVA_VERSION=7u79",
            "JAVA_DEBIAN_VERSION=7u79-2.5.6-1~deb8u1",
            "STASH_HOME=/var/atlassian/application-data/stash",
            "RUN_USER=daemon",
            "RUN_GROUP=daemon",
            "STASH_INSTALL_DIR=/opt/atlassian/stash",
            "STASH_VERSION=3.11.2"
        ],
        "Cmd": [
            "/bin/sh",
            "-c",
            "#(nop) CMD [\"./bin/start-stash.sh\" \"-fg\"]"
        ],
        "Image""2984c730f9a4440221b72f1550e5a8fa552339906e52d435c156c56ebf900451",
        "Volumes": {
            "/opt/atlassian/stash": {}
        },
        "VolumeDriver""",
        "WorkingDir""/opt/atlassian/stash",
        "Entrypoint"null,
        "NetworkDisabled"false,
        "MacAddress""",
        "OnBuild": [],
        "Labels": {}
    },
    "DockerVersion""1.6.2",
    "Author""Atlassian Stash Team",
    "Config": {
        "Hostname""1a382cba094f",
        "Domainname""",
        "User""daemon:daemon",
        "AttachStdin"false,
        "AttachStdout"false,
        "AttachStderr"false,
        "ExposedPorts": {
            "7990/tcp": {},
            "7999/tcp": {}
        },
        "PublishService""",
        "Tty"false,
        "OpenStdin"false,
        "StdinOnce"false,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "LANG=C.UTF-8",
            "JAVA_VERSION=7u79",
            "JAVA_DEBIAN_VERSION=7u79-2.5.6-1~deb8u1",
            "STASH_HOME=/var/atlassian/application-data/stash",
            "RUN_USER=daemon",
            "RUN_GROUP=daemon",
            "STASH_INSTALL_DIR=/opt/atlassian/stash",
            "STASH_VERSION=3.11.2"
        ],
        "Cmd": [
            "./bin/start-stash.sh",
            "-fg"
        ],
        "Image""2984c730f9a4440221b72f1550e5a8fa552339906e52d435c156c56ebf900451",
        "Volumes": {
            "/opt/atlassian/stash": {}
        },
        "VolumeDriver""",
        "WorkingDir""/opt/atlassian/stash",
        "Entrypoint"null,
        "NetworkDisabled"false,
        "MacAddress""",
        "OnBuild": [],
        "Labels": {}
    },
    "Architecture""amd64",
    "Os""linux",
    "Size"0,
    "VirtualSize"546775193,
    "GraphDriver": {
        "Name""aufs",
        "Data"null
    }
}
]

 

settings

Example Output
XAVIER:vm ga-mlsdiscovery$ ./stash-vm.sh settings
Docker Virtual Machine (stash-vm)
DOCKER_IMAGE=atlassian/stash
DOCKER_CONTAINER=stash
DOCKER_DATA_DIR=/Users/Shared/data/stash
DOCKER_VM_NAME=stash-vm
DOCKER_VM_MEMORY=2048
DOCKER_VM_CPUS=2
DOCKER_VM_ARGS=