heat_template_version: queens description: Sets up MPIO and udev rules on all nodes parameters: servers: type: json resources: PureSetup: type: OS::Heat::SoftwareConfig properties: group: script config: | #!/bin/bash sudo mpathconf --enable --with_multipathd yes cat <>/tmp/multipath.conf defaults { polling_interval 10 } devices { device { vendor "PURE" product "FlashArray" fast_io_fail_tmo 10 path_grouping_policy "group_by_prio" failback "immediate" prio "alua" hardware_handler "1 alua" max_sectors_kb 4096 } } sudo cat /tmp/multipath.conf >>/etc/multipath.conf sudo systemctl start multipathd sudo systemctl enable multipathd cat <>/tmp/99-pure-storage.rules # Recommended settings for Pure Storage FlashArray. # Use noop scheduler for high-performance solid-state storage for SCSI devices ACTION=="add|change", KERNEL=="sd*[!0-9]", SUBSYSTEM=="block", ENV{ID_VENDOR}=="PURE", ATTR{queue/scheduler}="none" ACTION=="add|change", KERNEL=="dm-[0-9]*", SUBSYSTEM=="block", ENV{DM_NAME}=="3624a937*", ATTR{queue/scheduler}="none" # Reduce CPU overhead due to entropy collection ACTION=="add|change", KERNEL=="sd*[!0-9]", SUBSYSTEM=="block", ENV{ID_VENDOR}=="PURE", ATTR{queue/add_random}="0" ACTION=="add|change", KERNEL=="dm-[0-9]*", SUBSYSTEM=="block", ENV{DM_NAME}=="3624a937*", ATTR{queue/add_random}="0" # Spread CPU load by redirecting completions to originating CPU ACTION=="add|change", KERNEL=="sd*[!0-9]", SUBSYSTEM=="block", ENV{ID_VENDOR}=="PURE", ATTR{queue/rq_affinity}="2" ACTION=="add|change", KERNEL=="dm-[0-9]*", SUBSYSTEM=="block", ENV{DM_NAME}=="3624a937*", ATTR{queue/rq_affinity}="2" # Set the HBA timeout to 60 seconds ACTION=="add|change", KERNEL=="sd*[!0-9]", SUBSYSTEM=="block", ENV{ID_VENDOR}=="PURE", ATTR{device/timeout}="60" EOF sudo cp /tmp/99-pure-storage.rules /etc/udev/rules.d/99-pure-storage.rules sudo /sbin/udevadm control --reload-rules sudo /sbin/udevadm trigger --type=devices --action=change ExtraDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: servers: {get_param: servers} config: {get_resource: PureSetup} actions: [CREATE,UPDATE]