I started to work with WFA. It's a very good tool to implement default Workflows with buildt in functionality.
But I have some questions for my understanding of working method of WFA.
Is ist right to declare the Dictionary in a way as classes you can find in object oriented program languages? For example: I have a Dictionary named vserver. The vserver should be reachable about nfs. There are several options: nfs_allowed and nfs_is_up. When I set both options 'on' on a new buildt Vserver, the Vserver is allowed to speak nfs. I excepted that the NFS-Service is up too, but it isn't. So I searched why the service is not up, but at the moment I don't understand wich programmcode is performed when the tasks create vserver is performed.
I have been trying to get to this post for the last two days and I am sorry for the delay. I am glad to hear that you are getting in there into the WFA nuts and bolts. I will see what I can do to help clarify what you need to do. If you haven't taken a look at the How-To video series, then please check out the video called Workflow Automation Technical Introduction (https://communities.netapp.com/docs/DOC-22052)
The first place to start is to explain the use of a Dictionary Object. One of the main building blocks of WFA is the dictionary object. This is where we define the object names and properties. We also use this dictionary object as a way to define the cache table columns for our Data sources. All in all, think of the dictionary as our way of structuring the objects that we will use later. We can also leverage this structure in our commands by linking the Parameters to the Dictionary Objects. When you create a new workflow and add a command like Create Volume, you will notice that there is tab called volume and that each of the objects match those that exist in the dictionary entry for volume. Not all of the entries are shown since not all are used in the Create Volume command. Those that are not used are hidden from view. Also, you will noticed that there a few variables that have a R beside them. These are references to other dictionary objects. Now we can get data from other tables using the reference variable.
Ok, now that we talked about dictionary objects, I want to explain Templates. Templates are associated with dictionary objects. Once a template has been created it can be assigned to an appropriate command object in a workflow. Note that this is per object and per workflow. This means that I can use multiple Create Volume templates in a single workflow or across workflows but I can only used one per Object (important to remember if you decide to start using row repetition). Leveraging a Template is a good way to ensure that the appropriate standards are being applied. I like to use them for default options or settings. In this case, you want to ensure that NFS is enabled for the vServer but also that the service is started when the vServer is created. I ran into this issue as well when I built the Pirate Pack for VMware - clustered Data ONTAP . In my case I had to configure the nfs_server_options to contain "IsNfsAccessEnabled=true,IsNfsv3Enabled=true". This allowed me to confirm that both NFSv3 was enabled and useable as well as confirm that the NFS service was started.
thank you for your answer. It helped very much Now I recognized that there is the NetApp PowerShell Toolkit in the Background, that was the missing part I searched for.
I don't find any documentation about possible values for nfs_server_options, where can I find this?
But another question: The requirements to access OnTap with WFA? The options httpd.enable or httpd.admin.enable; Should they setted to on? Is it possible to ensure that access to OnTap is only possible with secure https?
This should give you the list of available services. I found out that the WFA command was using this Cmdlet to verify the correct NfsService options.
Regarding the HTTPS versus HTTP question. By default, WFA will first try HTTPS and then fail back to HTTP if httpd.admin.ssl.enable is OFF and/or SSL is not configured. You can disable httpd.admin.enable to force only allowing SSL.