I'm looking for how to adapt this to environment automation to programmatically build machines that use NetApp storage on the backend via either iSCSI/FC directly connected to the machine, partitioned with lvm and then mounted to a directory, followed by programmatic installation of databases like Oracle, SQL, etc...
I wasn't able to adapt this module to my purposes, and would accept any help on if there is a solution pathway available for this use case. Note that I've already gotten what I've done working the the Puppet module for Pure storage, and from what I can tell this is because Pure supports an additional REST mechanism where the Puppet client agent can communicate with the host directly to accomplish objectives of creating volumes, connections, etc...
In my current design, I'm looking at Foreman creating nodes and programmatically building them via PXE booting. The Puppet classes are integrated into Foreman and user specify the modules like plugins to enable certain functionality. One module is createiscistorage that creates a volume on an external storage system, and works like this...
In the current design prototype,
node (<Foreman defined>) {
class (createiscsistorage) {
class (Pure storage) {
create my volume via REST calls to the storage
via a URL
}
// iscsi, lvm, lvmetad, etc...
}
}
From what I can see, it appears as if you must define the node entity through Puppet device.
NetApp Puppet Module Forces you into a node construct to define the storage
node (<Foreman defined through Puppet proxy device for NetApp storage>) {
create my volume
}
I don't see to a way to force this into the following, because node must be at the top of the hierarchy here,
node (<Foreman defined>) {
class (createiscsistorage) {
node (<Foreman defined through Puppet proxy device for NetApp storage>) {
create my volume
}
// iscsi, lvm, etc...
}
}
The alternative to get it working may end up dealing with something like,
node (<Foreman defined through Puppet proxy device for NetApp storage>) {
create my volume
}
node (<Foreman defined>)
class (createiscsistorage) {
** Find a way to talk to the Puppet proxy node(<NetApp storage>), i.e. non-agent code execution during a puppet agent run
// iscsi, lvm, etc...
}
}
But, I just don't see it working... in my automation case the client is used to control the storage on the fly rather than a more static node entry in the site manifest.