[Openstack-operators] [openstack-ansible] configuration to use nfs for glance and cinder
Andreas Vallin
andreas.vallin at it.uu.se
Mon Feb 6 14:01:53 UTC 2017
Hi Andy,
Yes it probably does not matter if the variables are visible in other
containers (you get a working system up and running anyway) but it is
not the expected behavior when using limit_container_types. I did manage
to get the variables limited to cinder_volume containers when I typed
the configuration like this:
XxX:
ip: 172.22.5.9
container_vars:
cinder_storage_availability_zone: cinderAZ_1
cinder_default_availability_zone: cinderAZ_1
cinder_backends:
limit_container_types: cinder_volume
cinder_nfs:
volume_backend_name: cinder_nfs
volume_driver: cinder.volume.drivers.nfs.NfsDriver
nfs_mount_options:
"_netdev,auto,rw,intr,noatime,async,vers=3,proto=tcp,wsize=1048576,rsize=1048576,timeo=1200,actimeo=120"
cinder_nfs_client:
limit_container_types: cinder_volume
nfs_shares_config: /etc/cinder/nfs_shares
shares:
- ip: "172.22.20.254"
share: "/nfs/cinder/production"
However, I did not find any way to limit the glance nfs configuration to
only the glance containers. It looks like this in
openstack_user_config.yml.prod.example:
image_hosts:
infra1:
ip: 172.29.236.11
container_vars:
limit_container_types: glance
glance_nfs_client:
- server: "172.29.244.15"
remote_path: "/images"
local_path: "/var/lib/glance/images"
type: "nfs"
options: "_netdev,auto"
My workaround to the problem was to add the glance configuration to
user_variables.yml instead, that way you don't get the inventory full
with glance configuration on all containers. This is what I added to
user_variables.yml:
glance_nfs_client:
- server: "172.22.20.254"
remote_path: "/nfs/glance/production"
local_path: "/var/lib/glance/images"
type: "nfs"
options:
"_netdev,auto,rw,intr,noatime,async,vers=3,proto=tcp,wsize=1048576,rsize=1048576,timeo=1200,actimeo=120"
So it sounds like you are aware of the problem and are working on a fix,
that is great.
Thank you all for a very good work with openstack-ansible.
Regards,
Andreas
On 02/03/2017 05:27 PM, Andy McCrae wrote:
> Hi Andreas,
>
> The way you're doing it at the end looks correct - the docs are not
> quite right on that one.
> The nfs_shares file will only get templated on the cinder_volumes
> hosts, as will the nfs_shares_config option - so in essence it
> shouldn't matter that the var isn't limited to volume hosts.
>
> That said, there is a bug here that we've been working to fix - this
> will work if you have one backend.
> Mainly it means there is no support for multiple backends, if one of
> them is an NFS backend, and there is no support for multiple NFS backends.
> A patch has gone in to allow multiple NFS backends (and change the way
> they're configured) - but it's not quite ready for release - so we're
> working on a subsequent fix that will then be a part of newton 14.0.8
> release for OSA.
>
> I'd be happy to keep you updated - if you'd like to drop into
> #openstack-ansible on Freednode IRC there are a lot of active
> operators/developers/deployers, we'd be happy to help further.
>
> But barring that I'll try add a reminder to drop an update here once
> that's working.
>
> Andy
>
>
> On 3 February 2017 at 08:56, Andreas Vallin <andreas.vallin at it.uu.se
> <mailto:andreas.vallin at it.uu.se>> wrote:
>
> Hi!
>
> I need to ask how do you correctly configure nfs to be used with
> openstack-ansible newton (14.0.6). I think it is great that there
> is an production example file that uses nfs for glance and cinder
> (openstack_user_config.yml.pro
> <http://openstack_user_config.yml.pro>d.example) but the cinder
> config is not working for me.
>
> I use this config for storage_hosts, only changing ip, and share
> from production example:
>
> storage_hosts:
> XxXx:
> ip: 172.22.5.9
> container_vars:
> cinder_backends:
> limit_container_types: cinder_volume
> cinder_nfs_client:
> nfs_shares_config: /etc/cinder/nfs_shares
> shares:
> - ip: "172.22.20.254"
> share: "/nfs/cinder/production"
>
> And this is the failure when running os-cinder-install.yml
>
> TASK [os_cinder : Add in cinder devices types]
> *********************************
> fatal: [XxXx_cinder_volumes_container-080139bd]: FAILED! =>
> {"failed": true, "msg": "the field 'args' has an invalid value,
> which appears to include a variable that is undefined. The error
> was: 'dict object' has no attribute 'volume_backend_name'\n\nThe
> error appears to have been in
> '/etc/ansible/roles/os_cinder/tasks/cinder_backends.yml': line 30,
> column 3, but may\nbe elsewhere in the file depending on the exact
> syntax problem.\n\nThe offending line appears to be:\n\n\n- name:
> Add in cinder devices types\n ^ here\n"}
>
> OK, so volume_backend_name is missing. The playbook runs if I add
> volume_backend_name to the config like this:
>
>
> storage_hosts:
> XxXx:
> ip: 172.22.5.9
> container_vars:
> cinder_backends:
> limit_container_types: cinder_volume
> cinder_nfs_client:
> volume_backend_name: cinder_nfs
> nfs_shares_config: /etc/cinder/nfs_shares
> shares:
> - ip: "172.22.20.254"
> share: "/nfs/cinder/production"
>
>
> But now there is no /etc/cinder/nfs_shares file in the
> cinder-volumes-container so the nfs share will not be mounted.
> This is because the "Create nfs shares export file" task in
> cinder_post_install.yml doesn't see that cinder_nfs_client is
> defined. You also get this in cinder.conf:
>
> enabled_backends=cinder_nfs_client
> # All given backend(s)
> [cinder_nfs_client]
> volume_backend_name=cinder_nfs
> nfs_shares_config=/etc/cinder/nfs_shares
> shares=[{u'ip': u'172.22.20.254', u'share':
> u'/nfs/cinder/production'}]
>
>
> This configuration works for me:
>
> storage_hosts:
> XxXx:
> ip: 172.22.5.9
> container_vars:
> cinder_storage_availability_zone: cinderAZ_1
> cinder_default_availability_zone: cinderAZ_1
> limit_container_types: cinder_volume
> cinder_backends:
> cinder_nfs:
> volume_backend_name: cinder_nfs
> volume_driver: cinder.volume.drivers.nfs.NfsDriver
> nfs_mount_options:
> "_netdev,auto,rw,intr,noatime,async,vers=3,proto=tcp,wsize=1048576,rsize=1048576,timeo=1200,actimeo=120"
> cinder_nfs_client:
> nfs_shares_config: /etc/cinder/nfs_shares
> shares:
> - ip: "172.22.20.254"
> share: "/nfs/cinder/production"
>
>
> BUT when I look in the inventory file (openstack_inventory.json)
> it doesn't look like this configuration is limited to
> cinder_volume containers even if "limit_container_types:
> cinder_volume" is used. So now I feel it is time to ask how a
> correct configuration should look like.
>
> Regards,
> Andreas
>
>
> _______________________________________________
> OpenStack-operators mailing list
> OpenStack-operators at lists.openstack.org
> <mailto:OpenStack-operators at lists.openstack.org>
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators
> <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-operators/attachments/20170206/7b3c06ba/attachment.html>
More information about the OpenStack-operators
mailing list