main.yml 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. ---
  2. - name: Define kernel regex
  3. set_fact: kernel_regex="\.yn[0-9]{8}\."
  4. - name: test if nbd is supported
  5. environment:
  6. PATH: $PATH:/usr/sbin:/sbin
  7. shell: modprobe nbd
  8. register: nbd_status
  9. ignore_errors: yes
  10. no_log: true
  11. failed_when: false
  12. - name: nbd facts
  13. set_fact:
  14. nbd_ok: true
  15. when: nbd_status.rc == 0
  16. - name: Is Cloud kernel running
  17. shell: |
  18. uname -r | grep -E "{{ kernel_regex }}"
  19. register: is_yunion_kernel_running
  20. changed_when: false
  21. failed_when: false
  22. - name: Is cloud kernel installed
  23. shell: |
  24. if rpm --version &>/dev/null; then
  25. count=$(rpm -qa |grep kernel |grep -E "{{ kernel_regex }}" |wc -l || :)
  26. elif dpkg --version &>/dev/null; then
  27. count=$(dpkg -l |grep kernel |grep -E "{{ kernel_regex }}" |wc -l || :)
  28. fi
  29. [[ "$count" -ge 1 ]]
  30. args:
  31. executable: /bin/bash
  32. register: is_yunion_kernel_installed
  33. changed_when: false
  34. failed_when: false
  35. - name: install customized kernel
  36. include_tasks: "{{ ansible_distribution | lower }}-{{ ansible_distribution_major_version |lower }}-{{ ansible_architecture }}.yml"
  37. when:
  38. - nbd_ok|default(false)|bool == false
  39. - is_yunion_kernel_installed.rc != 0
  40. - name: Check /proc/cmdline for huge pages configuration
  41. command: "grep -w 'hugepagesz=1G' /proc/cmdline"
  42. register: hugepagesz
  43. changed_when: false
  44. check_mode: true
  45. when:
  46. - ansible_architecture == 'x86_64'
  47. - name: Check /proc/cmdline for huge pages configuration
  48. command: "grep -w 'default_hugepagesz=1G' /proc/cmdline"
  49. register: default_hugepagesz
  50. changed_when: false
  51. check_mode: true
  52. when:
  53. - ansible_architecture == 'x86_64'
  54. - name: Check if oc-hugetlb-gigantic-pages.service is active
  55. shell:
  56. cmd: systemctl is-active oc-hugetlb-gigantic-pages
  57. register: hugepage_service_status
  58. failed_when: false
  59. when:
  60. - ansible_architecture == 'x86_64'
  61. - name: set default fact to_init_hugetlb
  62. set_fact:
  63. hugetlb_is_ready: false
  64. when:
  65. - ansible_architecture == 'x86_64'
  66. - name: Set hugetlb fact if conditions are met
  67. set_fact:
  68. hugetlb_is_ready: true
  69. when:
  70. - ansible_architecture == 'x86_64'
  71. - hugepagesz.rc == 0
  72. - default_hugepagesz.rc == 0
  73. - hugepage_service_status.rc == 0
  74. # setup hugetlb
  75. - name: Setup hugepage
  76. include_tasks: 'hugetlb.yml'
  77. when:
  78. - ansible_architecture == 'x86_64'
  79. - hugetlb_is_ready == false
  80. - name: SSH Reboot system if hugetlb conf is updated
  81. reboot:
  82. reboot_timeout: 900 # 15 mins
  83. connect_timeout: 900 # 15 mins
  84. become: yes
  85. when:
  86. - ansible_architecture == 'x86_64'
  87. - hugetlb_is_ready == false
  88. - is_controller_node is not defined or is_controller_node|default(false)|bool == false
  89. - ansible_connection == "ssh"
  90. - name: Local Reboot system if hugetlb conf is updated
  91. command: reboot
  92. become: yes
  93. when:
  94. - ansible_architecture == 'x86_64'
  95. - hugetlb_is_ready == false
  96. - is_controller_node is not defined or is_controller_node|default(false)|bool == false
  97. - ansible_connection == "local"