The NetApp cookbook manages Clustered Data ONTAP clusters using the NetApp Manageability SDK. Both cluster-wide and Storage Virtual Machine (SVM, formerly known as Vservers) specific operations are supported.
The NetApp cookbook may also be used to manage the netapp_role, netapp_volume, and netapp_qtree resources on Cloud ONTAP on Amazon Web Services.
You may download it from NetApp after you have created an account on NetApp NOW
-
Save the NetApp SDK to this NetApp cookbook in the "libraries" dir.
-
Update the NaServer.rb to specify the path of NaElement. Replace the line:
require NaElementWith -require File.dirname(__FILE__) + "/NaElement"
The ZAPI connection is made over HTTP or HTTPS, with a user account that exists on the NetApp storage cluster. If you specify an account that only has SVM administration privileges (rather than cluster administration privileges), some features of the NetApp cookbook will not work. The connection settings are managed by attributes in the cookbook but are also exposed in Common attributes for the NetApp resources.
['netapp']['url'] = 'https://root:secret@pfiler01.example.com/svm01'
or
['netapp']['https'] boolean, default is 'true'.
['netapp']['user'] string
['netapp']['password'] string
['netapp']['fqdn'] string
['netapp']['vserver'] string
['netapp']['asup'] boolean, default is 'true'.
The ASUP option, if set to 'true', will cause a log message to be sent to the storage cluster. This log message will be included in ASUP bundles that are sent back to NetApp, if configured to do so on the system. If ASUP is not enabled on the system or on the attribute listed above, no log message will be sent to NetApp.
In addition to those provided by Chef itself (ignore_failure, retries, retry_delay, etc.), the connection attribute(s) are exposed all NetApp Resources even though they are typically set by attributes.
The :nothing action is provided by Chef for all Resources for use with notifications and subscriptions.
Cluster management of user creation, modification and deletion.
This resource has the following actions:
:createDefault.:deleteRemoves the user
This resource has the following attributes:
nameUser name. RequiredpasswordRequired for non-snmp usersapplicationName of the application. Possible values: 'console', 'http', 'ontapi', 'rsh', 'snmp', 'sp', 'ssh', 'telnet'commentroleArray of rolessnmpv3-login-infoSNMPv3 user login information for 'usm' authentication methodvserverName of vserverauthenticationAuthentication method for the application. Possible values: 'community', 'password', 'publickey', 'domain', 'nsswitch' and 'usm'
netapp_user "clogeny" do
vserver "my-vserver"
role "admin"
application "ontapi"
authentication "password"
password "my-password1"
action :create
endnetapp_user "clogeny" do
vserver "my-vserver"
application "ontapi"
authentication "password"
action :delete
endCluster management of group creation, modification and deletion.
This resource has the following actions:
:createDefault.:deleteRemoves the group
This resource has the following attributes:
namestring, name attribute. Requiredcommentstring.rolesArray of roles for this group.
netapp_group 'admins' do
comments 'keep the trains on time'
roles ['security']
action :create
endnetapp_group 'read-only' do
action :delete
endCluster management of role creation, modification and deletion.
The netapp_role resource may be used to manage roles on Cloud ONTAP instances as well.
This resource has the following actions:
:createDefault.:deleteRemoves the role
This resource has the following attributes:
nameName attribute. RequiredsvmName of vserver. Requiredcommand_directoryThe command or command directory to which the role has an access. Requiredaccess_levelAccess level for the role. Possible values: 'none', 'readonly', 'all'. The default value is 'all'.return_recordIf set to true, returns the security login role on successful creation. Default: falserole_queryExample: The command is 'volume show' and the query is '-volume vol1'
netapp_role 'security' do
svm 'my-vserver'
command_directory 'volume'
action :create
endnetapp_role 'superusers' do
svm 'my-vserver'
command_directory 'DEFAULT'
action :delete
endCluster management of NetApp features by license. See API docs for "license-v2".
This resource has the following action:
:enableDefault. Ensures the NetApp provides this feature.
This resource has the following attributes:
codesArray, license code when adding a package. 24 or 48 uppercase alpha only characters.
netapp_feature 'iscsi' do
codes ['ABCDEFGHIJKLMNOPQRSTUVWX']
action :enable
endCluster-level management of a data Storage Virtual Machines (SVMs). SVM-level management is done through other resources. After the cluster setup, a cluster administrator must create data SVMs and add volumes to these SVMs to facilitate data access from the cluster. A cluster must have at least one data SVM to serve data to its clients.
This resource has the following actions:
:createDefault.:deleteRemoves the svm
This resource has the following attributes:
namename attribute. Required. SVM names can contain a period (.), a hyphen (-), or an underscore (_), but must not start with a hyphen, period, or number. The maximum number of characters allowed in SVM names is 47.nsswitchRequired.volumeRequiredaggregateRequired. Aggregate on which you want to create the root volume for the SVM. The default aggregate name is used if you do not specify one.securityRequired. Determines the type of permissions that can be used to control data access to a volume. Default isunix.commentis_repository_vserverlanguageIf you do not specify the language, the default languageC.UTF-8orPOSIX.UTF-8is used.???nmswitchquota_policyreturn_recordsnapshot_policy
netapp_svm "example-svm" do
security "unix"
aggregate "aggr1"
volume "vol1"
nsswitch ["nis"]
action :create
endSVM-management of volume creation, modification and deletion including auto-increment, snapshot schedules and volume options.
The netapp_volume resource provisions additional volumes on Cloud ONTAP instances. It Creates the volume on an existing aggregate that has sufficient free space.
This resource has the following actions:
:createDefault.:deleteRemoves the volume
This resource has the following attributes:
namestring, name attribute. Volume name. Required.svmstring. Name of managed SVM. Requiredaggregatestring. Requiredsizestring (1-9kmgt). Required
netapp_volume '/foo' do
svm 'vs1.example.com'
aggregate 'aggr1'
size '5t'
action :create
endnetapp_volume 'bar' do
action :delete
endSVM-management of logical interface (LIF) creation, modification and deletion.
This resource has the following actions:
:createDefault. Ensures the lif is in this state.:deleteRemoves the lif
This resource has the following attributes:
namename attribute. LIF name. RequiredsvmName of managed SVM. Requiredaddressadministrative_statusvalid values "up", "down", "unknown"commentdata_protocolsdns_domain_namefailover_groupfailover_policyvalid values "nextavail", "priority", "disabled"firewall_policyhome_nodehome_portis_auto_revertis_ipv4_link_locallisten_for_dns_querynetmasknetmask_lengthreturn_recordrolevalid values "undef", "cluster", "data", "node_mgmt", "intercluster", "cluster_mgmt"routing_group_nameuse_failover_groupvalid values "system_defined", "disabled", "enabled"
netapp_lif 'private' do
svm 'vs1.example.com'
action :create
endnetapp_lif 'public' do
action :delete
endSVM-management of iSCSI target creation, modification and deletion.
This resource has the following actions:
:createDefault. Creates iSCSI service.:deleteRemoves the target
This resource has the following attributes:
svmName of managed SVM. RequiredaliasnodestartTrue or False. True by default.
netapp_iscsi 'foo' do
svm 'vs1.example.com'
action :create
endnetapp_iscsi 'bar' do
action :delete
endSVM-management of NFS export rule creation, modification and deletion including NFS export security. Rule changes are persistent.
You do not need to enter any information to configure NFS on the SVM. The NFS configuration is created when you specify the protocol value as nfs.
This resource has the following actions:
:createDefault. Ensures the NFS export is in this state.:deleteRemoves the NFS export
This resource has the following attributes:
pathnamestring, name attribute. Requiredsvmstring. Name of managed SVM. Requiredsecurity_ruleshash. Access block information for lists of hosts.
netapp_nfs '/vol/vol0' do
svm 'vs1.example.com'
action :create
endnetapp_export '/vol/vol1' do
svm 'vs1.example.com'
action :delete
endSVM-management of qtree creation, modification and deletion. Qtrees are a special subdirectory of the root of a volume that acts as a virtual subvolume with special attributes.
The netapp_qtree resource may be used to create logically defined file system on Cloud ONTAP instances.
This resource has the following actions:
:createDefault. Ensures the QTree is in this state.:deleteRemoves the QTree
This resource has the following attributes:
namename attribute. The path of the qtree, relative to the volume. RequiredsvmName of managed SVM. RequiredvolumeName of the volume on which to create the qtree. Required.export_policyExport policy of the qtree. If this input is not specified, the qtree will inherit the export policy of the parent volume.modeThe file permission bits of the qtree, similar to UNIX permission bits. If this argument is missing, the permissions of the volume is used.oplocksOpportunistic locks mode of the qtree. Possible values: "enabled", "disabled". Default value is the oplock mode of the volume.securitySecurity style of the qtree. Possible values: "unix", "ntfs", or "mixed". Default value is the security style of the volume.forceTrue or false
netapp_qtree '/share' do
svm 'vs1.example.com'
volume '/foo'
action :create
endnetapp_role '/bar' do
svm 'vs1.example.com'
volume '/foo'
action :delete
endSVM-management of lun creation, modification and deletion. Luns are a special file type created in a volume that acts as a virtual SCSI device for SAN (ISCSI and FCP) connected hosts.
This resource has the following actions:
:createDefault. Ensures the Lun is in this state.:deleteRemoves the Lun
This resource has the following attributes:
namename attribute. The name of the Lun. RequiredsvmName of managed SVM. RequiredvolumeName of the volume in which to create the Lun. Required.qtreeName of the selected volume qtree in which to create the Lun.size_mbActual size of the Lun in Megabytes (MB). RequiredostypeSAN host version to which the Lun will be connected. RequiredcommentDescription text for the Lun.qos_policy_groupExisting QOS Policy to apply to the Lun.prefix_sizeManual offset for the Lun's starting partition. Advance user featurespace_reservation_enabledTrue or False. If true then the Lun will consume 100% of the space on disk, otherwise the size consumed on disk is directly related to the amount of data in the Lun.forceTrue or false
netapp_lun 'data.lun' do
svm 'vs1.example.com'
volume 'foo'
size_mb 1024
ostype 'windows_2008'
action :create
endnetapp_lun 'data.lun' do
svm 'vs1.example.com'
volume 'foo'
action :delete
endSVM-management of lun mapping and unmapping to initiator groups. Luns are a special file type created in a volume that acts as a virtual SCSI device for SAN (ISCSI and FCP) connected hosts.
This resource has the following actions:
:createDefault. Ensures the Lun Mapping is in this state.:deleteRemoves the Lun Mapping
This resource has the following attributes:
namename attribute. The name of the Lun. Requiredigroupexisting initiator group to which the Lun should be mapped. RequiredsvmName of managed SVM. RequiredvolumeName of the volume in which to create the Lun. Required.qtreeName of the selected volume qtree in which to create the Lun.lun_idLun identification number. Default will choose the next lowest number starting with 0forceTrue or false
netapp_lun_map 'data.lun' do
svm 'vs1.example.com'
volume 'foo'
igroup 'windows_host'
action :create
endnetapp_lun_map 'data.lun' do
svm 'vs1.example.com'
volume 'foo'
igroup 'windows_host'
action :delete
endSVM-management of initiator group (igroup) creation, modification and deletion. Igroups allow for the mapping of Host intiators to NetApp Luns for use with SAN protocols (ISCSI and FCP).
This resource has the following actions:
:createDefault. Ensures the Igroup is in this state.:deleteRemoves the Igroup
This resource has the following attributes:
namename attribute. The name of the Lun. Requiredtype["iscsi", "fcp", "mixed"] .RequiredsvmName of managed SVM. RequiredostypeSAN host version to which the Lun will be connected. Requiredbind_portsetExisting Igroup Portset nameforceTrue or false
netapp_igroup 'windows_host' do
svm 'vs1.example.com'
type 'iscsi'
ostype 'windows'
action :create
endnetapp_igroup 'windows_host' do
svm 'vs1.example.com'
action :delete
endSVM-management of initiators in an initiator group (igroup) addition and removal. Igroups allow for the mapping of Host intiators to NetApp Luns for use with SAN protocols (ISCSI and FCP).
This resource has the following actions:
:addDefault. Ensures the Initiator is associated with the Igroup:removeRemoves the Initiator from the Igroup
This resource has the following attributes:
namename attribute. The name of the Lun. RequiredinitiatorInitiator address (IQN for ISCSI or WWPN for FCP) .RequiredsvmName of managed SVM. RequiredforceTrue or false
netapp_igroup_initiators 'windows_host' do
svm 'vs1.example.com'
initiator 'iqn.XXXXXXXXXX'
action :create
endnetapp_igroup_initiators 'windows_host' do
svm 'vs1.example.com'
initiator 'iqn.XXXXXXXXXX'
force true
action :delete
end- Fork the repository on Github
- Create a named feature branch (like
add_component_x) - Write your change
- Write tests for your change (if applicable)
- Run the tests, ensuring they all pass
- Submit a Pull Request using Github
- Authors:: Arjun Hariharan (Arjun.Hariharan@Clogeny.com)
Copyright 2014 Chef Software, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.