--- # tasks file for pure_storage_vmware_best_practices - name: Get the current state of all services vmware_host_service_facts: hostname: '{{ vcenter_hostname }}' esxi_hostname: '{{ inventory_hostname }}' username: '{{ vmware_user }}' password: '{{ vmware_password }}' delegate_to: localhost register: host_service_facts - name: Start SSH Temporarily vmware_host_service_manager: hostname: '{{ vcenter_hostname }}' esxi_hostname: '{{ inventory_hostname }}' username: '{{ vmware_user }}' password: '{{ vmware_password }}' service_name: TSM-SSH state: start delegate_to: localhost when: not host_service_facts['host_service_facts'][inventory_hostname] | selectattr('key', 'equalto', 'TSM-SSH') | map(attribute='running') | list | first | bool notify: Stop SSH - name: DataMover.HardwareAcceleratedInit vmware_host_config_manager: hostname: '{{ vcenter_hostname }}' esxi_hostname: '{{ inventory_hostname }}' username: '{{ vmware_user }}' password: '{{ vmware_password }}' options: 'DataMover.HardwareAcceleratedInit': 1 delegate_to: localhost - name: DataMover.HardwareAcceleratedMove vmware_host_config_manager: hostname: '{{ vcenter_hostname }}' esxi_hostname: '{{ inventory_hostname }}' username: '{{ vmware_user }}' password: '{{ vmware_password }}' options: 'DataMover.HardwareAcceleratedMove': 1 delegate_to: localhost - name: VMFS3.HardwareAcceleratedLocking vmware_host_config_manager: hostname: '{{ vcenter_hostname }}' esxi_hostname: '{{ inventory_hostname }}' username: '{{ vmware_user }}' password: '{{ vmware_password }}' options: 'VMFS3.HardwareAcceleratedLocking': 1 delegate_to: localhost - name: Disk.DiskMaxIOSize vmware_host_config_manager: hostname: '{{ vcenter_hostname }}' esxi_hostname: '{{ inventory_hostname }}' username: '{{ vmware_user }}' password: '{{ vmware_password }}' options: 'Disk.DiskMaxIOSize': 4096 delegate_to: localhost - name: VMFS3.UseATSForHBOnVMFS5 vmware_host_config_manager: hostname: '{{ vcenter_hostname }}' esxi_hostname: '{{ inventory_hostname }}' username: '{{ vmware_user }}' password: '{{ vmware_password }}' options: 'VMFS3.UseATSForHBOnVMFS5': '{{ 0 if Third_Party_Array_Not_Support_ATS_HB|bool else 1 }}' delegate_to: localhost - name: Get value of DataMover.MaxHWTransferSize shell: esxcfg-advcfg -g /DataMover/MaxHWTransferSize vars: ansible_user: '{{ vmware_user }}@{{ ad_domain|upper }}' ansible_password: '{{ vmware_password }}' ansible_connection: paramiko ansible_python_interpreter: /bin/python register: MaxHWTransferSizeCMD changed_when: False - name: Set CurrentMaxHWTransferSize fact set_fact: CurrentMaxHWTransferSize: '{{ MaxHWTransferSizeCMD.stdout | regex_replace(regexp,"\1") }}' vars: regexp: 'Value of MaxHWTransferSize is (\d*)' - debug: var=CurrentMaxHWTransferSize - name: DataMover.MaxHWTransferSize shell: esxcfg-advcfg -s {{ MaxHWTransferSize }} /DataMover/MaxHWTransferSize vars: ansible_user: '{{ vmware_user }}@{{ ad_domain|upper }}' ansible_password: '{{ vmware_password }}' ansible_connection: paramiko ansible_python_interpreter: /bin/python when: CurrentMaxHWTransferSize != MaxHWTransferSize - name: VMFS3.EnableBlockDelete vmware_host_config_manager: hostname: '{{ vcenter_hostname }}' esxi_hostname: '{{ inventory_hostname }}' username: '{{ vmware_user }}' password: '{{ vmware_password }}' options: 'VMFS3.EnableBlockDelete': 1 delegate_to: localhost # vSphere keeps trying to read SMART data from Pure volumes # https://www.jacobhopkinson.com/2019/08/09/vmware-and-scsi-why-do-my-pure-storage-datastores-report-scsi-0x85-errors-every-30-minutes/ - when: DisableSmartd block: - name: Get status of smartd shell: /etc/init.d/smartd status vars: ansible_user: '{{ vmware_user }}@{{ ad_domain|upper }}' ansible_password: '{{ vmware_password }}' ansible_connection: paramiko ansible_python_interpreter: /bin/python register: SmartdStatusCMD failed_when: ( SmartdStatusCMD.rc not in [ 0, 3 ] ) # When smart is stopped the return code is 3 changed_when: False - name: Set SmartdStatus fact set_fact: SmartdRunning: '{{ true if SmartdStatusCMD.rc == 0 else false }}' - name: Stop smartd shell: /etc/init.d/smartd stop vars: ansible_user: '{{ vmware_user }}@{{ ad_domain|upper }}' ansible_password: '{{ vmware_password }}' ansible_connection: paramiko ansible_python_interpreter: /bin/python when: SmartdRunning - name: Check if smartd is enabled at boot shell: chkconfig --list smartd vars: ansible_user: '{{ vmware_user }}@{{ ad_domain|upper }}' ansible_password: '{{ vmware_password }}' ansible_connection: paramiko ansible_python_interpreter: /bin/python register: SmartdEnabledCMD failed_when: ( SmartdEnabledCMD.rc not in [ 0, 1 ] ) # When smart is disabled the return code is 1 changed_when: False - name: Set SmartdEnabled fact set_fact: SmartdEnabled: '{{ true if SmartdEnabledCMD.rc == 0 else false }}' - name: Disable smartd at boot shell: chkconfig smartd off vars: ansible_user: '{{ vmware_user }}@{{ ad_domain|upper }}' ansible_password: '{{ vmware_password }}' ansible_connection: paramiko ansible_python_interpreter: /bin/python when: SmartdEnabled