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.prod.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@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators

Reply via email to