If you haven’t head about Folding at Home yet, it is project that utilizes the community’s extra compute to allow disease research computations to occur faster and cheaper.
I heard about it from Amanda Blevins and William Lam on Twitter. There is a nice write-up on the Office of the CTO Blog about it as well.
I was trying to manually install it when VMware released a FaH OVA via their Flings program. Thank you to all of those that made this possible!!! The VMware Wavefront team even has a dashboard displaying VMware FaH group stats.
The OVA is easy to deploy if you’re wanting one or two instances of it. If you have a larger lab and wanted to deploy more, I thought it’d be great to share how to do this via OVF Tool. If you’ve used it before you can skip to the bottom to see the properties you need.
If you are not familiar with OVF Tool, it is very handy to import/export VM’s and modify/create OVA/OVF files, which you can see via my last post. OVF Tool can be download here and the user guide is here if you want to read more about it.
If do not know what parameters to add to the command line, OVF Tool will get them for you. I’m storing the OVA within the E:\Fah folder locally so I’ll run the following command:
ovftool.exe --hideEula e:\FaH\VMware-Appliance-FaH_1.0.1.ova
You’ll get a list of all the settings that can be set and their default values.
OVF version: 1.0 VirtualApp: false Name: VMware Appliance for Folding @ Home Version: 1.0.1 Vendor: VMware Product URL: https://foldingathome.org/ Vendor URL: https://vmware.com/ Annotation: Version: 1.0.1 VMware FaH Team: 52737 Download Size: 285.04 MB Deployment Sizes: Flat disks: 4.00 GB Sparse disks: 771.25 MB Networks: Name: VM Network Description: The VM Network network Virtual Machines: Name: VMware-Appliance-FaH Operating System: otherguest64 Virtual Hardware: Families: vmx-11 Number of CPUs: 2 Cores per socket: 1 Memory: 1024.00 MB Disks: Index: 0 Instance ID: 9 Capacity: 4.00 GB Disk Types: SCSI-lsilogic NICs: Adapter Type: VmxNet3 Connection: VM Network Properties: Key: guestinfo.hostname Category: Networking Label: Hostname Type: string Description: Hostname of system Value: fah.vmware.corp Key: guestinfo.ipaddress Category: Networking Label: IP Address Type: string Description: IP Address of the system (Leave blank for DHCP) Key: guestinfo.netmask Category: Networking Label: Network CIDR Prefix Type: string["32 (255.255.255.255)", "31 (255.255.255.254)", "30 (255.255.255.252)", "29 (255.255.255.248)", "28 (255.255.255.240)", "27 (255.255.255.224)", "26 (255.255.255.192)", "25 (255.255.255.128)", "24 (255.255.255.0)", "23 (255.255.254.0)", "22 (255.255.252.0)", "21 (255.255.248.0)", "20 (255.255.240.0)", "19 (255.255.224.0)", "18 (255.255.192.0)", "17 (255.255.128.0)", "16 (255.255.0.0)", "15 (255.254.0.0)", "14 (255.252.0.0)", "13 (255.248.0.0)", "12 (255.240.0.0)", "11 (255.224.0.0)", "10 (255.192.0.0)", "9 (255.128.0.0)", "8 (255.0.0.0)", "7 (254.0.0.0)", "6 (252.0.0.0)", "5 (248.0.0.0)", "4 (240.0.0.0)", "3 (224.0.0.0)", "2 (192.0.0.0)", "1 (128.0.0.0)", "0 (0.0.0.0)"] Description: Network CIDR Prefix Value: 24 (255.255.255.0) Key: guestinfo.gateway Category: Networking Label: Gateway Type: string Description: Gateway of the system (Leave blank for DHCP) Key: guestinfo.dns Category: Networking Label: DNS Type: string Description: DNS Servers (space separated) Key: guestinfo.domain Category: Networking Label: DNS Domain Type: string Description: DNS Domain Key: guestinfo.ntp Category: Networking Label: NTP Type: string Description: NTP Servers (space separated) Value: pool.ntp.org Key: guestinfo.http_proxy Category: Proxy Settings (optional) Label: HTTP Proxy Type: string Description: Enter HTTP Proxy Server followed by the port and without typing "http://" before. Example: "proxy.provider.com:3128" Key: guestinfo.https_proxy Category: Proxy Settings (optional) Label: HTTPS Proxy Type: string Description: Enter HTTPS Proxy Server followed by the port and without typing "https://" before. Example: "proxy.provider.com:3128" Key: guestinfo.proxy_username Category: Proxy Settings (optional) Label: Proxy Username (optional) Type: string Description: Username for the Proxy Server Key: guestinfo.proxy_password Category: Proxy Settings (optional) Label: Proxy Password (optional) Type: password Description: Password for the Proxy User Key: guestinfo.no_proxy Category: Proxy Settings (optional) Label: No Proxy Type: string Description: No Proxy for e.g. your internal domain suffix. Comma separated (localhost, 127.0.0.1, domain.local) Key: guestinfo.root_password Category: OS Credentials Label: Root Password Type: password Description: Password to login in as root. Please use a secure password Key: guestinfo.fah_username Category: Folding @ Home Settings Label: F@H Username Type: string Description: Username to credit F@H Contribution Key: guestinfo.fah_team Category: Folding @ Home Settings Label: F@H Team ID Type: string Description: F@H Team ID (default: 52737) Value: 52737 Key: guestinfo.fah_passkey Category: Folding @ Home Settings Label: F@H Passkey Type: password Description: F@H Passkey - Obtain unique key from https://apps.foldingathome.org/getpasskey Key: guestinfo.fah_mode Category: Folding @ Home Settings Label: F@H Mode Type: string["light", "medium", "full"] Description: F@H Mode Value: medium Key: guestinfo.fah_gpu Category: Folding @ Home Settings Label: GPU Type: boolean Description: Enable GPU Value: False Key: guestinfo.fah_web_remote_networks Category: Folding @ Home Settings Label: F@H Local Web Management Allowed Networks Type: string Description: Remote networks allowed to connect to F@H Web Management (http://[FQDN]:7396) Value: 0.0.0.0/0 Key: guestinfo.fah_remote_networks Category: Folding @ Home Settings Label: F@H Remote Management Allowed Networks Type: string Description: Remote networks allowed to connect to F@H system Value: 127.0.0.1 0.0.0.0/0 Key: guestinfo.fah_remote_pass Category: Folding @ Home Settings Label: F@H Remote Management Password Type: password Description: Password to configure for remote F@H management Value: VMware1! Key: guestinfo.fah_console_stats Category: Folding @ Home Settings Label: Enable F@H Stats in VM Console Type: boolean Description: Enables Top statistics and F@H Log details in VM Console. Use Alt+F2 to login normally Value: True Key: guestinfo.debug Category: zAdvanced Label: Debugging Type: boolean Description: Enable Debugging Value: True
Now that we have the list of items, we can build our command. I’ve set the following options based on my environment.
"--net:VM Network=LabVMs" --datastore=VM-Datastore-1 --name=EricFah01 --prop:guestinfo.hostname="EricFah01.lab.net;" --prop:guestinfo.ipaddress="<192.168.1.11" --prop:guestinfo.netmask="24 (255.255.255.0)" --prop:guestinfo.gateway="192.168.1.1" --prop:guestinfo.dns="192.168.1.1" --prop:guestinfo.domain="lab.net" --prop:guestinfo.ntp="192.168.1.1" --prop:guestinfo.root_password="VMware1!" --prop:guestinfo.fah_username="ericblee6" --prop:guestinfo.fah_team="52737" --prop:guestinfo.fah_passkey="MyPasskey" --prop:guestinfo.fah_mode=full --prop:guestinfo.fah_gpu=False --prop:guestinfo.fah_remote_networks="127.0.0.1 0.0.0.0/0" --prop:guestinfo.fah_web_remote_networks="0.0.0.0/0" --prop:guestinfo.fah_remote_pass="VMware1!" --prop:guestinfo.fah_console_stats=True --prop:guestinfo.debug=True
A couple notes about this.
- I’m not showing HTTP Proxy settings but they can be added from the OVA output list above.
- If you want to use DHCP you can. Just omit ipaddress and gateway fields.
- I had to use quotes around all values in order to deal with special characters. I did it throughout just to keep it consistent.
You will need the vSphere locator to deploy it to your desired location. This will be in the format:
vi://username:pass@localhost/my_datacenter/host/esx01.example.com/Resources/my_resourcepool
The last thing to automate this is the CPU/Memory that you want to apply. Thankfully this is available in version 4.3 of OVF Tool, as documented by William Lam.
Finally, put all of these parameters together and give it a go.
ovftool.exe --acceptAllEulas --noSSLVerify --allowAllExtraConfig ^ "--net:VM Network=LabVMs" ^ --datastore=VM-Datastore-1 ^ --name=EricFah-01 ^ --numberOfCpus:'*'=18 ^ --memorySize:'*'=16384 ^ --prop:guestinfo.hostname="EricFah01.lab.net;" ^ --prop:guestinfo.ipaddress="<span data-mce-type="bookmark" id="mce_SELREST_start" data-mce-style="overflow:hidden;line-height:0" style="overflow:hidden;line-height:0" ></span><192.168.1.11" ^ --prop:guestinfo.netmask="24 (255.255.255.0)" ^ --prop:guestinfo.gateway="192.168.1.1" ^ --prop:guestinfo.dns="192.168.1.1" ^ --prop:guestinfo.domain="lab.net" ^ --prop:guestinfo.ntp="192.168.1.1" ^ --prop:guestinfo.root_password="VMware1!" ^ --prop:guestinfo.fah_username="ericblee6" ^ --prop:guestinfo.fah_team="52737" ^ --prop:guestinfo.fah_passkey="MyPasskey" ^ --prop:guestinfo.fah_mode=full ^ --prop:guestinfo.fah_gpu=False ^ --prop:guestinfo.fah_remote_networks="127.0.0.1 0.0.0.0/0" ^ --prop:guestinfo.fah_web_remote_networks="0.0.0.0/0" ^ --prop:guestinfo.fah_remote_pass="VMware1!" ^ --prop:guestinfo.fah_console_stats=True ^ --prop:guestinfo.debug=True ^ E:\FaH\VMware-Appliance-FaH_1.0.1.ova ^ vi://labuser@lab.net:labuserpass@vc1.lab.net/LabDC1/host/LabCluster1
We’re off and running!!!
If you’ve deployed 16 CPU’s or more, make sure to add Client-Type bigadv so it requests extra large work units. See their post on this here.