verify.yml 3.2 KB

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