Các link – github hướng dẫn cài đặt OpenStack
openstack
4
cloud
5
computing
4
White

Nguyễn Hồng Phúc viết ngày 23/05/2015

Khi mới tìm hiểu vấn đề gì đó, chúng ta thường cố gắng tìm các cài đặt và dùng thử để xem tính khả thi và “mắt thấy tay sờ”, đây cũng là tâm lý chung, có thể nó không phải là bước đúng đắn khi tìm hiểu vấn đề nhưng tôi cũng đã từng làm như vậy – về sau tôi sẽ sửa lối tư duy này khi tìm hiểu vấn đề gì đó. Vì vậy bài viết này sẽ tập hợp các hướng dẫn giúp cài đặt OpenStack mà tôi tập hợp được và đã trải qua. Hi vọng rút ngắn được thời gian tìm kiếm và mong rằng sau khi làm theo tôi và các bạn sẽ có những cách cài và kỹ thuật cài chuẩn chỉ. NHƯNG TÔI KHUYÊN BẠN HÃY TÌM HIỂU VỀ OPENSTACK TRƯỚC KHI CÀI

Về cơ bản việc cài đặt OpenStack có vài cách mà tôi đúc rút ra như sau: (nếu thiếu các bạn bổ sung)

  • Cài bằng tay (gõ từng dòng lệnh) – theo tài liệu hướng dẫn từ trang chủ.
  • Cài bằng các kịch bản do cá nhân tự phát triển – các cá nhân tự viết ra kịch bản cài đặt, các kịch bản shell, python, perl … Các cá nhân này đã đọc tài liệu và tổng hợp lại các bước vào trong các script. Tùy theo scirpt mà các bước có thể khác nhau
  • Cài bằng các công cụ do bên thứ 3 phát triển (devstack, rdo, puppet …) – có thể hiểu là cài tự động.

Và trong bài viết này tập hợp các blog, các link trên github … hướng dẫn giúp cài đặt OpenStack theo dạng 2 – dạng kịch bản nếu bạn đang tìm hiểu và mong muốn cài được OpenStack để xem hình thù như thế nào thì có thể tham khảo một trong các link này.

Github là một ứng dụng để chứa các mã nguồn, tài liệu, kịch bản dùng trong nhiều mục đích khác nhau rất tiện lợi (đặc biệt với những người sử dụng linux). Do đó các cá nhân thường có những hướng dẫn cài đặt OpenStack theo dạng step by step, các hướng dẫn cài đặt OpenStack này thường được thực hiện bằng các kịch bản (file shell, python, perl ….) và được chứa trên github.

Để cài được OpenStack thì các bạn chỉ cần biết sử dụng linux, đọc các hướng dẫn đi kèm và thực hiện theo hướng dẫn mà các tác giả gửi lên. Đa số các hướng dẫn này được cập nhật và sửa lỗi liên tục, do vậy nếu làm theo hướng dẫn nào đó bạn cần phải đọc kỹ và chắc chắn đã làm đúng (đúng mô hình, đúng bước, đúng nền tảng sử dụng như Ubuntu, Centos, Debian …

Các chú ý trước khi cài:

  • Các link này được sưu tập và tham khảo trên internet, nên cần học tập và đúc rút ra kinh nghiệm cài.
  • Mỗi kịch bản cài có thể thiếu các thành phần (project con trong phiên bản OpenStack)
  • Các hướng dẫn có thể là tham khảo của nhau (tức là tác giả này tham khảo tác giả khác và sửa đổi cho phù hợp)
  • Bạn cần biết sử dụng github (tải các kịch bản cài đặt, các script).
  • Cần đọc các script mà các tác giả viết để biết xem có các thành phần nào được cài đặt và các thông số mà họ thiết lập.
  • Bạn cần sử dụng linux với các lệnh cơ bản để có thể tải về, nếu chưa hiểu lệnh khi thực hiện scrpit thì tra luôn để học và hiểu.
  • Cần đọc và nắm rõ mô hình cài đặt, số các node -máy vật lý, số card mạng, cách thiết lập IP.
  • Nếu bạn đã thực hiện thành công theo hướn dẫn nào mà chưa có thì có thể gửi để tôi bổ sung.
  • Nếu bạn phát hiện lỗi, hay trao đổi và đóng góp với tác giả.
  • Tôi không đủ thời gian và thiết bị để kiểm tra từng script nên không có khả năng giải quyết các câu hỏi, hãy liên hệ với tác giả để trao đổi.
  • Hãy học và phát triển các script để cài.

Các Link trên github hướng dẫn cài đặt OpenStack

  1. https://github.com/fornyx/OpenStack-Havana-Install-Guide/blob/master/OpenStack-Havana-Install-Guide.rst (một node)
  2. https://github.com/Ch00k/openstack-install-aio/blob/master/openstack-all-in-one.rst (một node – All in one)
  3. https://github.com/kjtanaka/deploy_havana
  4. https://github.com/romilgupta/openstack-scripts (viết bằng python)
  5. https://github.com/DylanYu/Openstack-Havana-Install-Guide/blob/master/OpenStack-Havana-Install-Guide.rst
  6. Ultimate OpenStack Havana Guide
    # Guide to deploy OpenStack Havana on top of Ubuntu 12.04.3
    #
    # It covers: Ubuntu (hostnames, LVM), Open vSwitch, MySQL, Keystone, Glance,
    # Neutron, Nova, Cinder and Dashboard.
    # Preliminary IPv6 support!
    # This is a "step-by-step", a "cut-and-paste" guide.
    # It was inspired by:
    # http://openstack-folsom-install-guide.readthedocs.org/en/latest/
    # Limitations:
    # 1- No Metadata, no GRE, no L3, no Security Groups.
    # 2- Only 1 ethernet for each physical server.
    # Features:
    # 1- No NAT within the Cloud, no `Floating IPs', no multihost=true (i.e. NAT at
    # the Compute Node itself - bad, avoid NAT).
    # My idea is to move on and forget about IPv4 and NAT tables, so, with IPv6, we
    # don't need NAT anymore. NAT66 is a bad thing, be part of the Internet with
    # REAL IPv6 address! Or stay out with your smelly NAT66... :-P
    # Also, the gateway (physical / instances) is located outside of the cloud.
    # This means that we're mapping our physical network into OpenStack.
    # NOTE:
    # The contents between `---' and `---' are supposed to be added to the
    # respective files, it is not a entire config file replacement. Keep the rest of
    # the original files intact when possible (i.e. when not duplicating the
    # entries).
    # TODO List:
    # Setup: Metadata, Spice, Heat, Ceilometer and Swift.
    # External to the Cloud Computing
    ---- Gateway (Ubuntu 12.04.3 recommended) ----
    eth0 - public IPv4 and/or IPv6 from SixxS, TunnelBroker.net or native.
    eth1 - 10.32.14.1/24, 10.33.14.1/24 and your IPv6 /64 (or /48) Block from SixxS,
    TunnelBroker.net or native.
    # Example of its /etc/network/interfaces file:
    ---
    # The loopback network interface
    auto lo
    iface lo inet loopback
    # The primary network interface connected to your ISP's WAN
    auto eth0
    # IPv4
    iface eth0 inet static
    address 200.10.1.2
    netmask 28
    gateway 200.10.1.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-search yourdomain.com
    # Google Public DNS
    dns-nameservers 8.8.8.8 8.8.4.4
    # OpenDNS
    # dns-nameservers 208.67.222.222 208.67.220.220 208.67.222.220 208.67.220.222
    # OpenNIC
    # dns-nameservers 66.244.95.20 74.207.247.4 216.87.84.211
    # IPv6 - If you have native IPv6, configure it here
    #iface eth0 inet6 static
    # address 2001:db8:0:0::2
    # netmask 64
    # gateway 2001:db8:0:0::1
    # OpenStack - Management (API, physical servers (compute) and/or generic
    # hypervisors, gateway itself)
    auto eth1
    # IPv4
    iface eth1 inet static
    address 10.32.14.1
    netmask 24
    # OpenStack - Instance's gateway
    auto eth1:0
    iface eth1:0 inet static
    address 10.33.14.1
    netmask 24
    # IPv6 - Your routed block, SixxS.net or TunnelBroker provides a entire /48 for
    # you, for free! If you get one, configure it here.
    #iface eth1 inet6 static
    # address 2001:db8:1::1
    # netmask 48
    # OpenStack - Management
    #auto eth1:1
    #iface eth1:1 inet6 manual
    # up ip -6 addr add 2001:db8:1:1::1/64 dev $IFACE
    # down ip -6 addr del 2001:db8:1:1::1/64 dev $IFACE
    # OpenStack - Instance's gateway
    #auto eth1:2
    #iface eth1:2 inet6 manual
    # up ip -6 addr add 2001:db8:1:2::1/64 dev $IFACE
    # down ip -6 addr del 2001:db8:1:2::1/64 dev $IFACE
    ---
    # Enable IPv4 / IPv6 (optional) package forwarding
    sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
    sed -i 's/#net.ipv6.conf.all.forwarding=1/net.ipv6.conf.all.forwarding=1/' /etc/sysctl.conf
    sysctl -p
    # NAT rule
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    NOTE 1: There is only 1 NAT rule on this environment, which resides on this
    gateway, to do the IPv4 SNAT/DNAT to/from the "old" Internet infrastructure.
    There is no IPv4 NAT within the OpenStack environment itself (no Floating IPs,
    "no multihost=true"). Also, there is no NAT when enjoying the new `Internet
    Powered by IPv6`!
    NOTE 2: If your have more IPv4 public blocks available (i.e. at your gateway's
    eth1 interface, your Instances can also have public IPs on it! But
    you'll need to manage the package filter by yourself (no Security
    Groups on this setup).
    OPTIONAL: Install and enable the `radvd' on your eth1, with your IPv6 Block from
    SixxS (NOT OpenNIC-friendly) or TunnelBroker.net (OpenNIC-friendly), that way,
    your physical servers will get its IPv6 automatically, and you can start
    kissing goodbye to IPv4. Tip: DNS helps a lot when moving to IPv6! ;-)
    # Inside your Cloud Computing environment!
    ---- Ubuntu 12.04.3 (controller.youdomain.com) ----
    # Requirements: 1 Virtual Machine (KVM/Xen) with 2G of RAM - 2 Virtual HDs about
    # 100G each - 1 ethernet
    #
    # 64 bits O.S. Recommended
    #
    # hostname: controller.yourdomain.com
    #
    # IPv4: 10.32.14.232/24
    # Gateway: 10.32.14.1
    #
    # IPv6: 2001:db8:1:1::10/64
    # Gateway: 2001:db8:1:1::1
    #
    # Install Ubuntu 12.04.3 on the first disk, can be the `Minimum Virtual Machine'
    # flavor, using `Guided LVM Paritioning', leave the second disk untouched for
    # now.
    # Login as root
    aptitude update
    aptitude install vim iptables python-software-properties
    add-apt-repository cloud-archive:havana
    aptitude update && aptitude safe-upgrade -y
    reboot
    vi /etc/hosts
    ---
    127.0.0.1 localhost.localdomain localhost
    # IPv4
    10.32.14.232 controller.yourdomain.com controller
    10.32.14.234 compute1.yourdomain.com compute1
    10.32.14.236 compute2.yourdomain.com compute2
    # IPv6
    #2001:db8:1:1::10 controller.yourdomain.com controller
    #2001:db8:1:1::100 compute1.yourdomain.com compute1
    #2001:db8:1:1::200 compute2.yourdomain.com compute2
    ---
    aptitude install openvswitch-switch openvswitch-datapath-dkms
    vi /etc/network/interfaces
    ---
    # The primary network interface
    auto eth0
    iface eth0 inet manual
    up ip address add 0/0 dev $IFACE
    up ip link set $IFACE up
    #       up ip link set $IFACE promisc on
    #       down ip link set $IFACE promisc off
    down ip link set $IFACE down
    auto br-eth0
    iface br-eth0 inet static
    address 10.32.14.232
    netmask 24
    gateway 10.32.14.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-search yourdomain.com
    # Google Public DNS
    dns-nameservers 8.8.8.8 8.8.4.4
    # OpenDNS
    # dns-nameservers 208.67.222.222 208.67.220.220 208.67.222.220 208.67.220.222
    # OpenNIC
    # dns-nameservers 66.244.95.20 74.207.247.4 216.87.84.211
    # Use "inet6 auto" when you have radvd running at your gateway, otherwise, use static.
    #iface br-eth0 inet6 auto
    #iface br-eth0 inet6 static
    # address 2001:db8:1:1::10
    # netmask 64
    # gateway 2001:db8:1:1::1
    # Google Public DNS
    # dns-nameservers 2001:4860:4860::8888 2001:4860:4860::8844
    # OpenNIC
    # dns-nameservers 2001:530::216:3cff:fe8d:e704 2600:3c00::f03c:91ff:fe96:a6ad 2600:3c00::f03c:91ff:fe96:a6ad
    # OpenDNS Public Name Servers:
    # dns-nameservers 2620:0:ccc::2 2620:0:ccd::2
    ---
    ovs-vsctl add-br br-int
    ovs-vsctl add-br br-eth0
    ovs-vsctl add-port br-eth0 eth0 && reboot
    ovs-vsctl show
    aptitude update
    aptitude install mysql-server python-mysqldb ntp curl openssl rabbitmq-server python-keyring
    sed -i 's/server ntp.ubuntu.com/server ntp.ubuntu.com\nserver 127.127.1.0\nfudge 127.127.1.0 stratum 10/g' /etc/ntp.conf
    service ntp restart
    sed -i 's/127.0.0.1/::/g' /etc/mysql/my.cnf
    service mysql restart
    mysql -u root -p
    ---
    CREATE DATABASE keystone;
    GRANT ALL ON keystone.* TO 'keystoneUser'@'%' IDENTIFIED BY 'keystonePass';
    CREATE DATABASE glance;
    GRANT ALL ON glance.* TO 'glanceUser'@'%' IDENTIFIED BY 'glancePass';
    CREATE DATABASE nova;
    GRANT ALL ON nova.* TO 'novaUser'@'%' IDENTIFIED BY 'novaPass';
    CREATE DATABASE cinder;
    GRANT ALL ON cinder.* TO 'cinderUser'@'%' IDENTIFIED BY 'cinderPass';
    CREATE DATABASE neutron;
    GRANT ALL ON neutron.* TO 'neutronUser'@'%' IDENTIFIED BY 'neutronPass';
    CREATE DATABASE heat;
    GRANT ALL ON heat.* TO 'heatUser'@'%' IDENTIFIED BY 'heatPass';
    quit;
    ---
    ---- Keystone ----
    aptitude install keystone
    vi /etc/keystone/keystone.conf
    ---
    [DEFAULT]
    admin_token = ADMIN
    connection = mysql://keystoneUser:keystonePass@controller.yourdomain.com/keystone
    ---
    keystone-manage db_sync
    service keystone restart
    cd ~
    wget https://gist.github.com/tmartinx/7002197/raw/838770e4848c78dcd896fcfb6e4627d754051a72/keystone_basic.sh
    wget https://gist.github.com/tmartinx/7002255/raw/40887b30a54df288483cb515d793a919bca671b4/keystone_endpoints_basic.sh
    vi keystone_basic.sh
    ---
    HOST_IP=controller.yourdomain.com
    ---
    vi keystone_endpoints_basic.sh
    ---
    HOST_IP=controller.yourdomain.com
    EXT_HOST_IP=controller.yourdomain.com
    ---
    chmod +x keystone_basic.sh
    chmod +x keystone_endpoints_basic.sh
    ./keystone_basic.sh
    ./keystone_endpoints_basic.sh
    vi ~/.novarc
    ---
    # COMMON OPENSTACK ENVS
    export SERVICE_TOKEN=ADMIN
    export OS_USERNAME=admin
    export OS_PASSWORD=admin_pass
    export OS_TENANT_NAME=admin
    export OS_AUTH_URL="http://controller.yourdomain.com:5000/v2.0/"
    export SERVICE_ENDPOINT="http://controller.yourdomain.com:35357/v2.0/"
    export OS_AUTH_STRATEGY=keystone
    export OS_NO_CACHE=1
    # LEGACY NOVA ENVS
    export NOVA_USERNAME=${OS_USERNAME}
    export NOVA_PROJECT_ID=${OS_TENANT_NAME}
    export NOVA_PASSWORD=${OS_PASSWORD}
    export NOVA_API_KEY=${OS_PASSWORD}
    export NOVA_URL=${OS_AUTH_URL}
    export NOVA_VERSION=1.1
    export NOVA_REGION_NAME=RegionOne
    # EUCA2OOLs ENV VARIABLES
    export EC2_ACCESS_KEY=ab2f155901fb4be5bae4ddc78c924665
    export EC2_SECRET_KEY=ef89b9562e9b4653a8d68e3117f0ae32
    export EC2_URL=http://controller.yourdomain.com:8773/services/Cloud
    ---
    vi ~/.bashrc
    ---
    if [ -f ~/.novarc ]; then
    . ~/.novarc
    fi
    ---
    source ~/.bashrc
    keystone tenant-list
    curl http://controller.yourdomain.com:35357/v2.0/endpoints -H 'x-auth-token: ADMIN' | python -m json.tool
    ---- Glance ----
    aptitude install glance python-mysqldb
    vi /etc/glance/glance-api.conf
    ---
    [DEFAULT]
    sql_connection = mysql://glanceUser:glancePass@controller.yourdomain.com/glance
    [keystone_authtoken]
    auth_host = controller.yourdomain.com
    auth_port = 35357
    auth_protocol = http
    admin_tenant_name = service
    admin_user = glance
    admin_password = service_pass
    [paste_deploy]
    flavor = keystone
    ---
    vi /etc/glance/glance-registry.conf
    ---
    [DEFAULT]
    sql_connection = mysql://glanceUser:glancePass@controller.yourdomain.com/glance
    [keystone_authtoken]
    auth_host = controller.yourdomain.com
    auth_port = 35357
    auth_protocol = http
    admin_tenant_name = service
    admin_user = glance
    admin_password = service_pass
    [paste_deploy]
    flavor = keystone
    ---
    glance-manage db_sync
    service glance-api restart; service glance-registry restart
    cd ~
    wget http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-i386-disk.img
    wget http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img
    # CirrOS
    glance image-create --name "CirrOS Minimalist - 32 Bits - Cloud Based Image" --is-public true --container-format bare --disk-format qcow2 < cirros-0.3.1-i386-disk.img
    glance image-create --name "CirrOS Minimalist - 64 Bits - Cloud Based Image" --is-public true --container-format bare --disk-format qcow2 < cirros-0.3.1-x86_64-disk.img
    # Ubuntu 12.04.3
    glance image-create --location http://uec-images.ubuntu.com/releases/12.04/release/ubuntu-12.04-server-cloudimg-i386-disk1.img --is-public true --disk-format qcow2 --container-format bare --name "Ubuntu 12.04.3 LTS - Precise Pangolin - 32 Bits - Cloud Based Image"
    glance image-create --location http://uec-images.ubuntu.com/releases/12.04/release/ubuntu-12.04-server-cloudimg-amd64-disk1.img --is-public true --disk-format qcow2 --container-format bare --name "Ubuntu 12.04.3 LTS - Precise Pangolin - 64 Bits - Cloud Based Image"
    # Ubuntu 13.10
    glance image-create --location http://uec-images.ubuntu.com/releases/13.10/release/ubuntu-13.10-server-cloudimg-i386-disk1.img --is-public true --disk-format qcow2 --container-format bare --name "Ubuntu 13.10 - Saucy Salamander - 32 Bits - Cloud Based Image"
    glance image-create --location http://uec-images.ubuntu.com/releases/13.10/release/ubuntu-13.10-server-cloudimg-amd64-disk1.img --is-public true --disk-format qcow2 --container-format bare --name "Ubuntu 13.10 - Saucy Salamander - 64 Bits - Cloud Based Image"
    # Ubuntu 14.04 (under development)
    glance image-create --location http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-i386-disk1.img --is-public true --disk-format qcow2 --container-format bare --name "Ubuntu 14.04 - LTS - Trusty Tahr - 32 Bits - Cloud Based Image"
    glance image-create --location http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img --is-public true --disk-format qcow2 --container-format bare --name "Ubuntu 14.04 - LTS - Trusty Tahr - 64 Bits - Cloud Based Image"
    glance image-list
    --- Nova ---
    aptitude install nova-api nova-cert nova-consoleauth nova-scheduler nova-conductor nova-novncproxy novnc
    vi /etc/nova/api-paste.ini
    ---
    [filter:authtoken]
    paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
    auth_host = controller.yourdomain.com
    auth_port = 35357
    auth_protocol = http
    admin_tenant_name = service
    admin_user = nova
    admin_password = service_pass
    # signing_dir is configurable, but the default behavior of the authtoken
    # middleware should be sufficient. It will create a temporary directory
    # in the home directory for the user the nova process is running as.
    #signing_dir = /var/lib/nova/keystone-signing
    # Workaround for https://bugs.launchpad.net/nova/+bug/1154809
    auth_version = v2.0
    ---
    cd /etc/nova
    mv /etc/nova/nova.conf /etc/nova/nova.conf_Ubuntu
    wget https://gist.github.com/tmartinx/7002808/raw/07b2e27a4996fd5b23175fc281b03ac422414639/nova.conf
    chown nova: /etc/nova/nova.conf
    chmod 640 /etc/nova/nova.conf
    nova-manage db sync
    cd /etc/init.d/; for i in $(ls nova-*); do sudo service $i restart; done
    ---- Neutron ----
    aptitude install neutron-server neutron-plugin-openvswitch neutron-plugin-openvswitch-agent neutron-dhcp-agent neutron-metadata-agent
    vi /etc/neutron/neutron.conf
    ---
    [DEFAULT]
    allow_overlapping_ips = True
    rabbit_host = controller.yourdomain.com
    [keystone_authtoken]
    auth_host = controller.yourdomain.com
    auth_port = 35357
    auth_protocol = http
    admin_tenant_name = service
    admin_user = neutron
    admin_password = service_pass
    signing_dir = $state_path/keystone-signing
    [database]
    sql_connection = mysql://neutronUser:neutronPass@controller.yourdomain.com/neutron
    ---
    vi /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
    ---
    [database]
    sql_connection = mysql://neutronUser:neutronPass@controller.yourdomain.com/neutron
    [OVS]
    network_vlan_ranges = physnet1
    bridge_mappings = physnet1:br-eth0
    ---
    vi /etc/neutron/metadata_agent.ini
    ---
    # The Neutron user information for accessing the Neutron API.
    auth_url = http://controller.yourdomain.com:5000/v2.0
    auth_region = RegionOne
    admin_tenant_name = service
    admin_user = neutron
    admin_password = service_pass
    nova_metadata_ip = 127.0.0.1
    nova_metadata_port = 8775
    metadata_proxy_shared_secret = metasecret13
    ---
    vi /etc/neutron/dhcp_agent.ini
    ---
    [DEFAULT]
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
    use_namespaces = True
    dhcp_domain = yourdomain.com
    ---
    cd /etc/init.d/; for i in $(ls neutron-*); do sudo service $i restart; done
    keystone tenant-list # To note the admin tenant id.
    neutron net-create --tenant-id $ADMIN_TENTANT_ID sharednet1 --shared --provider:network_type flat --provider:physical_network physnet1
    neutron subnet-create --ip-version 4 --tenant-id $ADMIN_TENANT_ID sharednet1 10.33.14.0/24 --dns_nameservers list=true 8.8.8.8 8.8.4.4
    # OPTIONAL IPv6 - Still not tested! It will not work, neither in "Dual-Stack" mode or alone.
    #neutron subnet-create --ip-version 6 --tenant-id $ADMIN_TENANT_ID sharednet1 2001:db8:1:2::/64 --dns_nameservers list=true 2001:4860:4860::8888
    ---- Cinder ----
    # Use the extra Virtual HD of you controller (about 100G).
    # If don't have, add one:
    # halt -> virt-manager -> Add hardware -> VirtIO Disk / 100G / RAW
    cfdisk /dev/vdb
    pvcreate /dev/vdb1
    vgcreate cinder-volumes /dev/vdb1
    aptitude install cinder-api cinder-scheduler cinder-volume python-mysqldb
    vi /etc/cinder/api-paste.ini
    ---
    [filter:authtoken]
    paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
    auth_host = controller.yourdomain.com
    auth_port = 35357
    auth_protocol = http
    admin_tenant_name = service
    admin_user = cinder
    admin_password = service_pass
    signing_dir = /var/lib/cinder
    ---
    echo "sql_connection = mysql://cinderUser:cinderPass@controller.yourdomain.com/cinder" >> /etc/cinder/cinder.conf
    cinder-manage db sync
    cd /etc/init.d/; for i in $(ls cinder-*); do sudo service $i restart; done
    ---- Dashboard ----
    aptitude install openstack-dashboard memcached
    aptitude purge openstack-dashboard-ubuntu-theme
    ---- Ubuntu 12.04.3 (compute1.yourdomain.com) ----
    # Requirements: 1 Physical Server with Virtualization support on CPU, 1 ethernet
    #
    # IPv4: 10.32.14.234/24
    # Gateway 10.32.14.1
    #
    # IPv6: 2001:db8:1:1::100/64
    # Gateway: 2001:db8:1:1::1
    #
    # Install Ubuntu 12.04.3, can be the `Minimum Installation' flavor, using
    # `Manual Paritioning', make the following partitions:
    #
    # /dev/sda1 on /boot (~256M - /dev/md0 if raid1[0], bootable)
    # /dev/sda2 on LVM VG vg01 (~50G - /dev/md1 if raid1[0]) - lv_root (25G), lv_swap (XG) of compute1
    # /dev/sda3 on LVM VG nova-local (~450G - /dev/md2 if raid1[0]) - Instances
    aptitude update
    aptitude install vim iptables python-software-properties
    add-apt-repository cloud-archive:havana
    aptitude update && aptitude safe-upgrade -y
    reboot
    vi /etc/hosts
    ---
    127.0.0.1 localhost.localdomain localhost
    10.32.14.232 controller.yourdomain.com controller
    10.32.14.234 compute1.yourdomain.com compute1
    10.32.14.236 compute2.yourdomain.com compute2
    ---
    vi /etc/network/interfaces
    ---
    # The primary network interface
    auto eth0
    iface eth0 inet manual
    up ip address add 0/0 dev $IFACE
    up ip link set $IFACE up
    #       up ip link set $IFACE promisc on
    #       down ip link set $IFACE promisc off
    down ip link set $IFACE down
    auto br-eth0
    iface br-eth0 inet static
    address 10.32.14.234
    netmask 24
    gateway 10.32.14.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-search yourdomain.com
    # Google Public DNS
    dns-nameservers 8.8.8.8 8.8.4.4
    # OpenDNS
    # dns-nameservers 208.67.222.222 208.67.220.220 208.67.222.220 208.67.220.222
    # OpenNIC
    # dns-nameservers 66.244.95.20 74.207.247.4 216.87.84.211
    # Use "inet6 auto" when you have radvd running at your gateway, otherwise, use static.
    #iface br-eth0 inet6 auto
    #iface br-eth0 inet6 static
    # address 2001:db8:1:1::100
    # netmask 64
    # gateway 2001:db8:1:1::1
    # Google Public DNS
    # dns-nameservers 2001:4860:4860::8888 2001:4860:4860::8844
    # OpenNIC
    # dns-nameservers 2001:530::216:3cff:fe8d:e704 2600:3c00::f03c:91ff:fe96:a6ad 2600:3c00::f03c:91ff:fe96:a6ad
    # OpenDNS Public Name Servers:
    # dns-nameservers 2620:0:ccc::2 2620:0:ccd::2
    ---
    vi /etc/default/grub
    ---
    GRUB_CMDLINE_LINUX="elevator=deadline"
    ---
    update-grub
    echo vhost_net >> /etc/modules
    aptitude install openvswitch-switch openvswitch-datapath-dkms
    ovs-vsctl add-br br-int
    ovs-vsctl add-br br-eth0
    ovs-vsctl add-port br-eth0 eth0 && reboot
    aptitude update
    aptitude install ubuntu-virt-server libvirt-bin pm-utils nova-compute-kvm nova-conductor neutron-plugin-openvswitch-agent
    virsh net-destroy default
    virsh net-undefine default
    vi /etc/libvirt/libvirtd.conf
    ---
    listen_tls = 0
    listen_tcp = 1
    auth_tcp = "none"
    ---
    vi /etc/init/libvirt-bin.conf
    ---
    env libvirtd_opts="-d -l"
    ---
    vi /etc/default/libvirt-bin
    ---
    libvirtd_opts="-d -l"
    ---
    service libvirt-bin restart
    vi /etc/nova/api-paste.ini
    ---
    [filter:authtoken]
    paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
    auth_host = controller.yourdomain.com
    auth_port = 35357
    auth_protocol = http
    admin_tenant_name = service
    admin_user = nova
    admin_password = service_pass
    signing_dir = /tmp/keystone-signing-nova
    # Workaround for https://bugs.launchpad.net/nova/+bug/1154809
    auth_version = v2.0
    ---
    mv /etc/nova/nova.conf /etc/nova/nova.conf_Ubuntu
    cd /etc/nova
    wget https://gist.github.com/tmartinx/7019788/raw/e3921076077f02c41c2276c7ae1fad6baf963e3a/nova.conf
    chown nova: /etc/nova/nova.conf
    chmod 640 /etc/nova/nova.conf
    cd /etc/init.d/; for i in $(ls nova-*); do sudo service $i restart; done
    --- Neutron (still on compute1.yourdomain.com) ---
    vi /etc/neutron/neutron.conf
    ---
    # debug = True
    # verbose = True
    allow_overlapping_ips = True
    rabbit_host = controller.yourdomain.com
    [keystone_authtoken]
    auth_host = controller.yourdomain.com
    auth_port = 35357
    auth_protocol = http
    admin_tenant_name = service
    admin_user = neutron
    admin_password = service_pass
    signing_dir = /var/lib/neutron/keystone-signing
    ---
    vi /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
    ---
    [DATABASE]
    sql_connection = mysql://neutronUser:neutronPass@controller.yourdomain.com/neutron
    [OVS]
    network_vlan_ranges = physnet1
    bridge_mappings = physnet1:br-eth0
    ---
    service neutron-plugin-openvswitch-agent restart
    # Done!
    Point mycloud.yourdomain.com to 10.32.14.232 (and/or 2001:db8:1:1::10) and open
    the Dashboard at:
    http://mycloud.yourdomain.com/horizon - user admin, pass admin_pass
    Congrats!
  7. https://github.com/jedipunkz/openstack_havana_deploy
  8. https://github.com/HolySparky/OpenStack_Installer
  9. https://github.com/mseknibilel/OpenStack-Grizzly-Install-Guide (Phiên bản được tham khảo khá nhiều, từ hướng dẫn này, các tác giả tham khảo và viết ra các hướng dẫn khác, trong này có đủ các mô hình và các thành phần).
  10. https://github.com/dmitry-teselkin/havana-from-packages
  11. https://github.com/life1347/havana-auto-deploy
  12. https://github.com/alfredcs/OpenStack-Havana

Các hướng dẫn khác:

  1. http://vlabs.cfapps.io/openstack/installation/overview.html (Link này mới cập nhật, khá hay-10/03/2014 )
  2. http://virtual2privatecloud.com/install-havana-on-ubuntu/
  3. http://www.cloudcraft.cn/openstack-havana-install-in-ubuntu12-04-3/
  4. http://openstack.redhat.com/Quickstart
  5. http://devstack.org/guides/single-machine.html hoặc bài viết trên vietsi đã chia sẻ
  6. http://www.andrewklau.com/getting-started-with-multi-node-openstack-rdo-havana-gluster-backend-neutron/ link2 (3 node trên RDO)
  7. http://blog.csdn.net/ifzing/article/details/9398029 (3 node với Ubuntu, tác giả người tàu)
  8. http://www.server-world.info/en/note?os=CentOS_6&p=openstack_havana&f=1 ( Link hướng dẫn của người Nhật)
  9. http://www.stackinsider.org/wiki/ Trang này có đơn vị quản lý là Stackinsider, họ thực hiện các mục tiêu Deploy as a Service. Họ có các bài viết hướng dẫn cài đặt OpenStack trên devstack, rdo, fule …
  10. http://www.discoposse.com/index.php/2014/01/26/openstack-havana-all-in-one-lab-on-vmware-workstation/ (trang này rất phù hợp vơi những người chưa biết gì, kể cả vmware workstation).

(Cập nhật ngày 21/02/2014 với link số 6 và số 7 trong “Các hướng dẫn khác)
(Cập nhật ngày 23/02/2014 với link số 8 và số 9″Các hướng dẫn khác)
(Cập nhật ngày 11/03/2014 với link số 1và số 10″Các hướng dẫn khác. Link số 10, 11, 12 cho phần link trên github)

Mời các bạn bổ sung tiếp.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Nguyễn Hồng Phúc

9 bài viết.
41 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
36 9
Một số vấn đề Theo cá nhân tôi, Javascript có lẽ là một trong những ngôn ngữ dễ học, dễ viết nhất. Một web developer mới bắt đầu có lẽ chỉ cần từ ...
Nguyễn Hồng Phúc viết 3 năm trước
36 9
White
16 2
Mở đầu Có lẽ hầu hết những người sử dụng Linux đều biết quyền hạn của 1 file hay folder được đại diện bởi r (read), w (write), x (execute) như hìn...
Nguyễn Hồng Phúc viết hơn 3 năm trước
16 2
White
16 4
Mở đầu Ở (Link), tôi đã tổng kết lại một số nguyên tắc của câu lệnh điều kiện if, phép so sánh == và ===. Chúng ta hãy cùng bắt đầu phần 2 với điề...
Nguyễn Hồng Phúc viết 3 năm trước
16 4
Bài viết liên quan
White
2 0
Đón đọc những bài viết đặc sắc ở blog http://giaosucan.com Lời nói đầu Là một nhà phát triển ứng dụng web, có lẽ bạn đã khá quen thuộc với mô hình...
Giaosucan viết 9 tháng trước
2 0
White
15 1
Có vẻ là quá thường nhưng để bắt đầu làm gì đó “to tát” thì hay bắt đầu những việc đơn giản trước. Tôi viết bài này để chia sẻ tới những người mới ...
Nguyễn Hồng Phúc viết hơn 3 năm trước
15 1
White
2 0
Để đáp ứng các nhu cầu của cộng đồng, vietstack community đóng góp thêm các script dùng để triển khai OpenStack Icehouse trên 3 nodes. Với các scri...
Nguyễn Hồng Phúc viết hơn 3 năm trước
2 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
9 bài viết.
41 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!