verify.yml 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. ---
  2. - name: Verify
  3. hosts: all
  4. become: true
  5. vars:
  6. inspec_download_source_dir: /usr/local/src
  7. inspec_bin: /opt/inspec/bin/inspec
  8. inspec_test_directory: "/tmp/molecule/inspec"
  9. inspec_downloads:
  10. el6:
  11. url: https://packages.chef.io/files/stable/inspec/3.6.6/el/6/inspec-3.6.6-1.el6.x86_64.rpm
  12. sha256: 69b05dd28304b7c915381b88f035b3239d1328d891faef18aa30954266fc4da2
  13. el7:
  14. url: https://packages.chef.io/files/stable/inspec/3.6.6/el/7/inspec-3.6.6-1.el7.x86_64.rpm
  15. sha256: 2a950a2aeecf2c26b16285a2fcec244da97c636d47d5928ee181620e80472cac
  16. ubuntu1404:
  17. url: https://packages.chef.io/files/stable/inspec/3.6.6/ubuntu/14.04/inspec_3.6.6-1_amd64.deb
  18. sha256: 4294bdd3f8cd1aff3e6d912d2c48b345d0ec60ecefd92310cb3ae561b909cfec
  19. ubuntu1604:
  20. url: https://packages.chef.io/files/stable/inspec/3.6.6/ubuntu/16.04/inspec_3.6.6-1_amd64.deb
  21. sha256: 4294bdd3f8cd1aff3e6d912d2c48b345d0ec60ecefd92310cb3ae561b909cfec
  22. ubuntu1804:
  23. url: https://packages.chef.io/files/stable/inspec/3.6.6/ubuntu/18.04/inspec_3.6.6-1_amd64.deb
  24. sha256: 4294bdd3f8cd1aff3e6d912d2c48b345d0ec60ecefd92310cb3ae561b909cfec
  25. inspec_package_deps:
  26. - lsof
  27. - net-tools
  28. tasks:
  29. - name: Install system dependencies for Inspec
  30. package:
  31. name: "{{ item }}"
  32. state: present
  33. loop: "{{ inspec_package_deps }}"
  34. - name: Download Inspec
  35. get_url:
  36. url: "{{ inspec_downloads[inspec_version]['url'] }}"
  37. dest: "{{ inspec_download_source_dir }}"
  38. sha256sum: "{{ inspec_downloads[inspec_version]['sha256'] }}"
  39. mode: 0755
  40. register: inspec_download
  41. - name: Install Inspec
  42. yum:
  43. name: "{{ inspec_download.dest }}"
  44. state: latest
  45. when: ansible_pkg_mgr == 'yum'
  46. - name: Install Inspec
  47. dnf:
  48. name: "{{ inspec_download.dest }}"
  49. state: latest
  50. when: ansible_pkg_mgr == 'dnf'
  51. - name: Install Inspec
  52. apt:
  53. deb: "{{ inspec_download.dest }}"
  54. state: present
  55. when: ansible_pkg_mgr == 'apt'
  56. - name: Create Molecule directory for test files
  57. file:
  58. path: "{{ inspec_test_directory }}"
  59. state: directory
  60. - name: Copy Inspec tests to remote
  61. copy:
  62. src: "{{ item }}"
  63. dest: "{{ inspec_test_directory }}/{{ item | basename }}"
  64. with_fileglob:
  65. - "{{ playbook_dir }}/tests/test_*.rb"
  66. - name: Register test files
  67. shell: "ls {{ inspec_test_directory }}/test_*.rb"
  68. register: test_files
  69. - name: Execute Inspec tests
  70. command: "{{ inspec_bin }} exec {{ item }} --no-color --reporter progress"
  71. register: test_results
  72. loop: "{{ test_files.stdout_lines }}"
  73. ignore_errors: true
  74. - name: Display details about the Inspec results
  75. debug:
  76. msg: "{{ item.stdout_lines }}"
  77. loop: "{{ test_results.results }}"
  78. - name: Fail when tests fail
  79. fail:
  80. msg: "Inspec failed to validate"
  81. when: item.rc != 0
  82. loop: "{{ test_results.results }}"