OpenStack For Humans

_images/openwest.gif

Spencer Krum, IBM

July 14, 2016

@nibalizer

Note

  • Who am I
  • What do I work on
  • github
  • This talk is my version of an introduction to openstack
  • demystify
  • objective truths
  • no vendor pitch
  • i want you to know the words when openstack is being discussed
  • I'll also show you how to use it

Portland

_images/mt_hood.jpg

_images/openstack-cloud-software-vertical-large.png

_images/oh-snap-gif-1.gif

Agenda

Who Am I?

Note

  • Sysop
  • PSU
  • Work at IBM
  • I build the infrastructure that tests openstack, jenkins, code hosting
  • Access to a good half dozen clouds
  • boot nodes all the time
  • Working at IBM to deploy a cloud

OpenStack Mission Statement

To produce a ubiquitous Open Source Cloud Computing platform that is
easy to use, simple to implement, interoperable between deployments,
works well at all scales, and meets the needs of users and operators of
both public and private clouds.

Basic Things you can ask an OpenStack to do

Less Basic things you can ask an OpenStack to do

What is OpenStack

Note

  • Python daemon that takes in rest api and then causes other things to happen
  • Some kind of a programmable thing that does stuff that datacenter techs used to do
  • Tickets!
  • Ticket to get a vm
  • Rest API to get a vm
  • Apache 2

What OpenStack is Not

Note

  • Xen, Kvm, Virtualbox, Vmware these are hypervisors
  • Amazon web services, its not that and its not compatible
  • Eucalyptus

Definitions

Note

  • a subnet is l3
  • a network is l2

The Four Opens

Note

  • Not Open Core, Apache2
  • Design is open and open to contributors
  • The development is done in the open with open tooling
  • The discussion and voting and technical direction is all transparent
  • There is a CoC

History

Note

  • I started working on it in 2014

Fast Facts

Note

  • openstack development is freaking huge

Primary Services

Iaas UX

Note

  • OpenStack has a UX Team
  • What is cloud ux

_images/horizon_1.png

_images/horizon_2.png

CLI: Env Vars

_images/env-vars.gif

CLI: List Machines

_images/nova-list.gif

CLI: Show Machine

_images/nova-show.gif

CLI: Create Machine

_images/nova-boot.gif

CLI: Destroy Machine

_images/nova-delete.gif

CLI: Future

_images/openstack-server-list.gif

CLI: Recap

Upload a new image

nova list
nova boot
openstack server list
openstack server create
openstack flavor list
openstack image list

CLI: Advanced

Upload a new image

openstack image create --disk-format qcow2 \
--container-format bare --file mynixosimg.qcow nixos

CLI: Advanced

Upload a file to swift

openstack conatiner create test1
openstack object create test1 mypicture.png

Deployment: List Hosts

$ ansible all -i openstack.py  --list-hosts
  hosts (1):
    cacti-hodor-dfc7a021-3d50-4c3c-8082-a0aecb6d3878

Deployment: Playbook

---
  - name: Foo
    hosts: localhost
    connection: local
    vars:
      FLAVOR: '8GB Standard Instance'
      IMAGE_NAME: 'Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)'
      KEY_NAME: nibz
    tasks:
      - name: create instances
        os_server:
          name: "{{ item }}"
          image: "{{ IMAGE_NAME }}"
          key_name: "{{ KEY_NAME }}"
          wait: yes
          timeout: 200
          flavor: "{{ FLAVOR }}"
        with_items:
          - foo
          - bar
          - baz

Deployment: Boot Many Machines

$: ansible-playbook -i openstack.py ansible_machines.yml

PLAY [Foo] *********************************************************************

TASK [setup] *******************************************************************
ok: [localhost]

TASK [create instances] ********************************************************
changed: [localhost] => (item=foo)
changed: [localhost] => (item=bar)
changed: [localhost] => (item=baz)

PLAY RECAP *********************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0

Deployment: Results

$: ansible all -i openstack.py --list-hosts
  hosts (5):
    twitch-hodor-4b73cb8d-d2b2-4dc6-a533-486d816e45f1
    bar
    foo
    baz
    cacti-hodor-dfc7a021-3d50-4c3c-8082-a0aecb6d3878

Library: Shade

Library: OpenStack Client Config

clouds:
  mordred:
    profile: hp
    auth:
      username: [email protected]
      password: XXXXXXXXX
      project_name: [email protected]
    region_name: region-b.geo-1
    dns_service_type: hpext:dns
    compute_api_version: 1.1
  monty:
    auth:
      auth_url: https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0
      username: [email protected]
      password: XXXXXXXX
      project_name: [email protected]
    region_name: region-b.geo-1
    dns_service_type: hpext:dns

Library: Shade usage

cloudname = sys.argv[1]
cloud = shade.openstack_cloud(name=cloudname)
image = filter_images('trusty', cloud.list_images())
server_name = human_name + "-hodor-" + str(uuid.uuid4())

cloud.create_server(server_name, image['id'], flavor['id'], key_name=key[0]['id'])

References

References (cont)

Thank You + Questions

_images/spencer_face.jpg

Spencer Krum

IBM

@nibalizer

nibz@spencerkrum.com

https://github.com/nibalizer/talk-openstack_for_humans