Tech ONTAP Blogs
Tech ONTAP Blogs
"This article was orignally published on Aug 15, 2014"
In our previous blog (Overview of Manila at Atlanta OpenStack Summit), we spoke about the Atlanta summit and the new OpenStack File Share Service project called Manila. This is a follow up with some information that will assist you getting Manila installed within a DevStack environment. We will show you some of the steps and links that are available that will provide information about the installation, and get you started with Manila – think of this as a Manila 101 🙂
Important Note: This blog is for the stable/Juno branch of Manila with Devstack.
The test infrastructure being used is a VM with the following details:
Now, let’s walk thru the steps to get devstack and Manila setup on your host (almost all of the steps will be via the command line, with one confirmation of viewing shares via Horizon):
<span class="w">stack@greg:~$ </span><span class="nc">git</span><span class="kv"> clone -b master https://github.com/openstack-dev/devstack.git
</span>Cloning into 'devstack'...
remote: Counting objects: 19577, done.
remote: Compressing objects: 100% (29/29), done.
remote: Total 19577 (delta 11), reused 3 (delta 0)
Receiving objects: 100% (19577/19577), 5.51 MiB | 663.00 KiB/s, done.
Resolving deltas: 100% (13436/13436), done.
Checking connectivity... done.
<span class="w">stack@greg:~/devstack$ </span><span class="nc">git</span><span class="kv"> clone -b stable/juno https://github.com/openstack/manila.git
</span>Cloning into 'manila'...
remote: Counting objects: 5538, done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 5538 (delta 39), reused 15 (delta 10)
Receiving objects: 100% (5538/5538), 2.64 MiB | 0 bytes/s, done.
Resolving deltas: 100% (3633/3633), done.
Checking connectivity... done.
<span class="w">stack@greg:~$ </span><span class="nc">cp</span><span class="kv"> ./manila/contrib/devstack/lib/manila ./devstack/lib
</span><span class="w">stack@greg:~$ </span><span class="nc">cp</span><span class="kv"> ./manila/contrib/devstack/extras.d/70-manila.sh ./devstack/extras.d/</span>
Create your local.conf file with the appropriate values. More importantly, there are specific things for Manila required prior to running of stack.sh . Below is a sample local.conf with the items required for Neutron and Manila denoted with the comment #MANILA-SPECIFIC-STUFF-BELOW .
<span class="c"># Credentials</span>
<span class="nv">DATABASE_PASSWORD</span><span class="o">=</span>devstack
<span class="nv">ADMIN_PASSWORD</span><span class="o">=</span>devstack
<span class="nv">SERVICE_PASSWORD</span><span class="o">=</span>devstack
<span class="nv">SERVICE_TOKEN</span><span class="o">=</span>devstack
<span class="nv">RABBIT_PASSWORD</span><span class="o">=</span>devstack
<span class="nv">GUEST_PASSWORD</span><span class="o">=</span>devstack
<span class="nv">MYSQL_HOST</span><span class="o">=</span>127.0.0.1
<span class="nv">MYSQL_USER</span><span class="o">=</span>root
<span class="nv">MYSQL_PASSWORD</span><span class="o">=</span>devstack
<span class="nv">RABBIT_HOST</span><span class="o">=</span>127.0.0.1
<span class="nv">LIBVIRT_TYPE</span><span class="o">=</span>qemu
<span class="nv">GLANCE_HOSTPORT</span><span class="o">=</span>127.0.0.1:9292
<span class="nv">SERVICE_PASSWORD</span><span class="o">=</span>devstack
<span class="nv">ENABLED_SERVICES</span><span class="o">=</span>key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,n-sch,n-novnc,n-xvnc,n-cauth
<span class="c">#glance</span>
ENABLED_SERVICES+<span class="o">=</span>,g-api,g-reg
<span class="c">#cinder</span>
ENABLED_SERVICES+<span class="o">=</span>,cinder,c-sch,c-api,c-vol,c-bak
<span class="c">#trove</span>
ENABLED_SERVICES+<span class="o">=</span>,trove,tr-api,tr-tmgr,tr-cond
<span class="c">#manila</span>
ENABLED_SERVICES+<span class="o">=</span>,manila,m-api,m-sch,m-shr
<span class="c">#others</span>
ENABLED_SERVICES+<span class="o">=</span>,horizon,rabbit,mysql,tempest
<span class="c">#neutron needs for manila</span>
disable_service n-net
enable_service q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron
<span class="c">#</span>
<span class="nv">LOGDAYS</span><span class="o">=</span>1
<span class="nv">LOGFILE</span><span class="o">=</span><span class="nv">$DEST</span>/devstack.log
<span class="nv">SCREEN_LOGDIR</span><span class="o">=</span><span class="nv">$DEST</span>/logs/screen
<span class="nv">RECLONE</span><span class="o">=</span>yes
<span class="nv">API_RATE_LIMIT</span><span class="o">=</span>False
<span class="c">#MANILA-SPECIFIC-STUFF-BELOW</span>
<span class="nv">HORIZON_REPO</span><span class="o">=</span>https://github.com/NetApp/horizon.git
<span class="nv">HORIZON_BRANCH</span><span class="o">=</span>manila_juno
<span class="nv">Q_PLUGIN</span><span class="o">=</span>ml2
<span class="nv">ENABLE_TENANT_VLANS</span><span class="o">=</span>True
<span class="nv">ML2_VLAN_RANGES</span><span class="o">=</span>physnet1:100:4000
<span class="nv">PHYSICAL_NETWORK</span><span class="o">=</span>physnet1
<span class="nv">OVS_PHYSICAL_BRIDGE</span><span class="o">=</span>br-eth1
<span class="nv">Q_ML2_PLUGIN_MECHANISM_DRIVERS</span><span class="o">=</span>openvswitch
<span class="nv">Q_ML2_PLUGIN_TYPE_DRIVERS</span><span class="o">=</span>vlan,vxlan
<span class="nv">SHARE_BACKING_FILE_SIZE</span><span class="o">=</span>8G
<span class="nv">FLAT_INTERFACE</span><span class="o">=</span>eth1
Important Note for local.conf and Manila:
- Your network configuration may be different than our example. Configure Neutron according to your network and VLAN ranges
- Ensure that you add vxlan to the Q_ML2_PLUGIN_TYPE_DRIVERS parameter. This was a change to upstream Icehouse.
- Note the changes for version of Horizon for the integration with Manila and Shares
sudo apt-get update && \
sudo apt-get -y install git vim-gtk libxml2-dev libxslt1-dev libpq-dev python-pip libsqlite3-dev && \
sudo apt-get -y build-dep python-mysqldb && sudo pip install git-review tox
<span class="w">stack@greg:~/devstack$ </span><span class="nc">manila</span><span class="kv"> service-list
</span>+------------------+---------------+------+---------+-------+----------------------------+
| Binary | Host | Zone | Status | State | Updated_at |
+------------------+---------------+------+---------+-------+----------------------------+
| manila-scheduler | greg | nova | enabled | up | 2014-08-08T17:48:32.000000 |
| manila-share | greg@backend1 | nova | enabled | up | 2014-08-08T17:48:40.000000 |
+------------------+---------------+------+---------+-------+----------------------------+
stack@greg:~/devstack$
<span class="w">stack@greg:~$ </span><span class="nc">neutron</span><span class="kv"> net-list
</span>+--------------------------------------+------------------------+----------------------------------------------------+
| id | name | subnets |
+--------------------------------------+------------------------+----------------------------------------------------+
| 003cdc18-cd83-4d8c-880d-73abef80ca4c | public | 9f0ff94d-0c17-4e68-88c4-92da33df8448 172.24.4.0/24 |
| 83b9d824-1186-4aed-82df-da84adca39b1 | private | 5d70ffc6-e26a-4189-a522-7fb9b1c2eb23 10.0.0.0/24 |
| e18fa903-183b-4de6-b4ad-a08e52faa9c8 | manila_service_network | |
+--------------------------------------+------------------------+----------------------------------------------------+
<span class="w">stack@greg:~$ </span><span class="nc">neutron</span><span class="kv"> subnet-list
</span>+--------------------------------------+----------------+---------------+------------------------------------------------+
| id | name | cidr | allocation_pools |
+--------------------------------------+----------------+---------------+------------------------------------------------+
| 5d70ffc6-e26a-4189-a522-7fb9b1c2eb23 | private-subnet | 10.0.0.0/24 | {"start": "10.0.0.2", "end": "10.0.0.254"} |
| 9f0ff94d-0c17-4e68-88c4-92da33df8448 | public-subnet | 172.24.4.0/24 | {"start": "172.24.4.2", "end": "172.24.4.254"} |
+--------------------------------------+----------------+---------------+------------------------------------------------+
private
network and subnet for your environment. We used the generic private network/subnet for this example.<span class="w">stack@greg:~/devstack$ </span><span class="nc">manila</span><span class="kv"> share-network-create --neutron-net-id 83b9d824-1186-4aed-82df-da84adca39b1 --neutron-subnet-id 5d70ffc6-e26a-4189-a522-7fb9b1c2eb23 --name manila_share
</span>+-------------------+--------------------------------------+
| Property | Value |
+-------------------+--------------------------------------+
| cidr | None |
| created_at | 2014-08-11T19:30:34.698596 |
| description | None |
| id | 438032da-1147-4cc4-864a-cf691953def9 |
| ip_version | None |
| name | manila_share |
| network_type | None |
| neutron_net_id | 83b9d824-1186-4aed-82df-da84adca39b1 |
| neutron_subnet_id | 5d70ffc6-e26a-4189-a522-7fb9b1c2eb23 |
| project_id | ede0edb1c1e54e3eabc6e6c98b17d862 |
| segmentation_id | None |
| status | None |
| updated_at | None |
+-------------------+--------------------------------------+
<span class="w">stack@greg:~/devstack$ </span><span class="nc">manila</span><span class="kv"> share-network-list
</span>+--------------------------------------+---------------+--------+
| id | name | status |
+--------------------------------------+---------------+--------+
| 438032da-1147-4cc4-864a-cf691953def9 | manila_share | None |
| b098a3cd-3b4b-4d7e-b51d-a7476dc761cc | manila_share1 | None |
+--------------------------------------+---------------+--------+
<span class="w">stack@greg:~/devstack$ </span><span class="nc">manila</span><span class="kv"> create --name devstack_share --share-network 438032da-1147-4cc4-864a-cf691953def9 NFS 1
</span>+----------+---------------------------------------------------------------------------------------------------------------------------+
| Property | Value |
+----------+---------------------------------------------------------------------------------------------------------------------------+
| id | e9b92837-ea2b-4acd-ab65-65c98199e78b |
| links | [{u'href': u'http://10.63.168.135:8786/v1/ede0edb1c1e54e3eabc6e6c98b17d862/shares/e9b92837-ea2b-4acd-ab65-65c98199e78b', |
| | u'rel': u'self'}, |
| | {u'href': u'http://10.63.168.135:8786/ede0edb1c1e54e3eabc6e6c98b17d862/shares/e9b92837-ea2b-4acd-ab65-65c98199e78b', |
| | u'rel': u'bookmark'}] |
| name | devstack_share |
+----------+---------------------------------------------------------------------------------------------------------------------------+
<span class="w">stack@greg:~/devstack$ </span><span class="nc">manila</span><span class="kv"> list
</span>+--------------------------------------+----------------+------+-------------+-----------+---------------------------------------------------------------+
| ID | Name | Size | Share Proto | Status | Export location |
+--------------------------------------+----------------+------+-------------+-----------+---------------------------------------------------------------+
| 4ed16b64-59ee-4123-b6f0-f42148280a99 | myshare | 1 | NFS | available | 10.254.0.3:/shares/share-4ed16b64-59ee-4123-b6f0-f42148280a99 |
| e9b92837-ea2b-4acd-ab65-65c98199e78b | devstack_share | 1 | NFS | creating | None |
+--------------------------------------+----------------+------+-------------+-----------+---------------------------------------------------------------+
myshare
and devstack_share
. Each uses the NFS protocol and the export paths for each share are listed in the ‘export location’ column.<span class="w">stack@greg:~/devstack$ </span><span class="nc">manila</span><span class="kv"> list
</span>+--------------------------------------+----------------+------+-------------+-----------+---------------------------------------------------------------+
| ID | Name | Size | Share Proto | Status | Export location |
+--------------------------------------+----------------+------+-------------+-----------+---------------------------------------------------------------+
| 4ed16b64-59ee-4123-b6f0-f42148280a99 | myshare | 1 | NFS | available | 10.254.0.3:/shares/share-4ed16b64-59ee-4123-b6f0-f42148280a99 |
| e9b92837-ea2b-4acd-ab65-65c98199e78b | devstack_share | 1 | NFS | available | 10.254.0.5:/shares/share-e9b92837-ea2b-4acd-ab65-65c98199e78b |
+--------------------------------------+----------------+------+-------------+-----------+---------------------------------------------------------------+
stack@greg:~/devstack$
<span class="w">stack@greg:~/devstack$ </span><span class="nc">neutron</span><span class="kv"> subnet-list
</span>+--------------------------------------+------------------------------------------------+---------------+------------------------------------------------+
| id | name | cidr | allocation_pools |
+--------------------------------------+------------------------------------------------+---------------+------------------------------------------------+
| 0d75e8af-ea21-4668-b0c1-351937bee35a | routed_to_5d70ffc6-e26a-4189-a522-7fb9b1c2eb23 | 10.254.0.0/28 | {"start": "10.254.0.2", "end": "10.254.0.14"} |
| 5d70ffc6-e26a-4189-a522-7fb9b1c2eb23 | private-subnet | 10.0.0.0/24 | {"start": "10.0.0.2", "end": "10.0.0.254"} |
| 9f0ff94d-0c17-4e68-88c4-92da33df8448 | public-subnet | 172.24.4.0/24 | {"start": "172.24.4.2", "end": "172.24.4.254"} |
+--------------------------------------+------------------------------------------------+---------------+------------------------------------------------+
<span class="w">stack@greg:~/devstack$ </span><span class="nc">df</span><span class="kv"> -kh
</span>Filesystem Size Used Avail Use% Mounted on
/dev/sda1 34G 5.7G 26G 18% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 7.9G 4.0K 7.9G 1% /dev
tmpfs 1.6G 840K 1.6G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 7.9G 4.0K 7.9G 1% /run/shm
none 100M 0 100M 0% /run/user
172.16.22.230:/v_devstack_mirror 15G 50M 15G 1% /opt/stack/data/nova/mnt/3edfeba0731309866b6773b9828448eb
172.16.22.230:/v_devstack_comp 9.5G 9.5M 9.5G 1% /opt/stack/data/nova/mnt/57975883130c2c9c4aab078fe8f72404
devstack_share
to two different hosts in my test environment. From here – we would mount the NFS shares on the NFS client specific by the IP address of the access-allow command.<span class="w">stack@greg:~/devstack$ </span><span class="nc">manila</span><span class="kv"> access-list e9b92837-ea2b-4acd-ab65-65c98199e78b
</span>+----+-------------+-----------+-------+
| id | access type | access to | state |
+----+-------------+-----------+-------+
+----+-------------+-----------+-------+
<span class="w">stack@greg:~/devstack$ </span><span class="nc">manila</span><span class="kv"> access-allow e9b92837-ea2b-4acd-ab65-65c98199e78b ip 10.63.168.135
</span>+-------------+--------------------------------------+
| Property | Value |
+-------------+--------------------------------------+
| access_to | 10.63.168.135 |
| access_type | ip |
| created_at | 2014-08-12T12:44:28.112086 |
| deleted | False |
| deleted_at | None |
| id | 104a8ce8-bb2e-47a7-84a0-06e7b7dc148a |
| share_id | e9b92837-ea2b-4acd-ab65-65c98199e78b |
| state | new |
| updated_at | None |
+-------------+--------------------------------------+
<span class="w">stack@greg:~/devstack$ </span><span class="nc">manila</span><span class="kv"> access-allow e9b92837-ea2b-4acd-ab65-65c98199e78b ip 10.0.0.6
</span>+-------------+--------------------------------------+
| Property | Value |
+-------------+--------------------------------------+
| access_to | 10.0.0.6 |
| access_type | ip |
| created_at | 2014-08-12T12:44:36.326327 |
| deleted | False |
| deleted_at | None |
| id | ec398f37-cbf4-4cd2-bc28-7a92fcbe0167 |
| share_id | e9b92837-ea2b-4acd-ab65-65c98199e78b |
| state | new |
| updated_at | None |
+-------------+--------------------------------------+
<span class="w">stack@greg:~/devstack$ </span><span class="nc">manila</span><span class="kv"> access-list e9b92837-ea2b-4acd-ab65-65c98199e78b
</span>+--------------------------------------+-------------+---------------+--------+
| id | access type | access to | state |
+--------------------------------------+-------------+---------------+--------+
| 104a8ce8-bb2e-47a7-84a0-06e7b7dc148a | ip | 10.63.168.135 | active |
| ec398f37-cbf4-4cd2-bc28-7a92fcbe0167 | ip | 10.0.0.6 | active |
+--------------------------------------+-------------+---------------+--------+
stack@greg:~/devstack$
That’s all for now; we will follow up with more on Manila in later blog posts, including a discussion of the integration with the NetApp clustered Data ONTAP driver for Manila. To learn more about Manila, check out our wiki page at http://wiki.openstack.org/wiki/Manila.
NetApp is committed to fostering open source solutions. You can learn more about our contributions by joining our Discord channel.