diff --git a/.gitignore b/.gitignore index a295864e354f25c935ea5453ab7ec97813b11bd2..16dcbd87b83b56cd90c1d90cf5f7d6434fa7c545 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ +.venv +*.retry +*.sw[po] *.pyc __pycache__ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b06eb6d482ded7bcfd6816f5b9e4b51b06eead65..2dfdfee0312b010985a57e5c6cb04fa9836877a2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,7 +11,5 @@ include: molecule: stage: test - variables: - DOCKER_TLS_CERTDIR: "" tags: - - docker-dind-runner + - docker-runner diff --git a/molecule/custom_packages/converge.yml b/molecule/custom_packages/converge.yml new file mode 100644 index 0000000000000000000000000000000000000000..c2b75081ed121102d5a909be51da7924c6485da3 --- /dev/null +++ b/molecule/custom_packages/converge.yml @@ -0,0 +1,16 @@ +--- +- name: Converge + hosts: all + tasks: + - name: Install epel release for CentOS + package: + name: epel-release + state: present + + - name: "Include nagios" + include_role: + name: "nagios" + vars: + nagios_packages: + - nagios + - nagios-plugins-dhcp diff --git a/molecule/custom_packages/molecule.yml b/molecule/custom_packages/molecule.yml new file mode 100644 index 0000000000000000000000000000000000000000..a150faf0a2d8c476ac77234350243f80b4100d67 --- /dev/null +++ b/molecule/custom_packages/molecule.yml @@ -0,0 +1,19 @@ +--- +dependency: + name: galaxy +driver: + name: docker +lint: | + ansible-lint + yamllint . +platforms: + - name: molecule_nagios_centos7 + image: docker.io/pycontribs/centos:7 + pre_build_image: true + # - name: molecule_nagios_centos6 + # image: docker.io/pycontribs/centos:6 + # pre_build_image: true +provisioner: + name: ansible +verifier: + name: testinfra diff --git a/molecule/custom_packages/tests/test_missing_packages.py b/molecule/custom_packages/tests/test_missing_packages.py new file mode 100644 index 0000000000000000000000000000000000000000..bf4d06a934b70215a3b157d7a3ef510d2cbcd989 --- /dev/null +++ b/molecule/custom_packages/tests/test_missing_packages.py @@ -0,0 +1,21 @@ +"""Use testinfra to ensure that some of our "default" packages are missing due +to our reduction of the standard package listing in this test scenario.""" + +# molecule/custom_packages/tests/test_missing_packages.py +import os + +import sys + +import testinfra.utils.ansible_runner + + +testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( + os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') + + +def test_custom_packages(host): + if host.system_info.distribution.lower() == 'centos': + assert host.package('nagios').is_installed + assert host.package('nagios-plugins-dhcp').is_installed + assert (not host.package('nagios-plugins-users').is_installed) + assert (not host.package('nagios-plugins-disk').is_installed) diff --git a/molecule/custom_packages/verify.yml b/molecule/custom_packages/verify.yml new file mode 100644 index 0000000000000000000000000000000000000000..a82dd6fd0bce1c1742b2d5523fe06b8a51a84c8c --- /dev/null +++ b/molecule/custom_packages/verify.yml @@ -0,0 +1,9 @@ +--- +# This is an example playbook to execute Ansible tests. + +- name: Verify + hosts: all + tasks: + - name: Example assertion + assert: + that: true diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml index ba915658f25dd25b416c10c6b74ea893e427504b..013d9094930b5951c163e1c6755db64a96d95623 100644 --- a/molecule/default/converge.yml +++ b/molecule/default/converge.yml @@ -2,6 +2,11 @@ - name: Converge hosts: all tasks: + - name: Install epel release for CentOS + package: + name: epel-release + state: present + - name: "Include nagios" include_role: name: "nagios" diff --git a/tasks/dependencies/centos/7.yml b/tasks/dependencies/centos/7.yml index 1298a7d78484d0acb5ca6f19fbb528501b79bd15..2b75d25cb7fecd31553d62c0be9f8c788c63b1ca 100644 --- a/tasks/dependencies/centos/7.yml +++ b/tasks/dependencies/centos/7.yml @@ -1,21 +1,17 @@ --- -- name: Try TRIUMF EPEL release - package: - name: triumf-epel-release - state: installed - ignore_errors: true - register: triumf_epel - become: yes - -- name: Make sure EPEL is installed if TRIUMF epel failed - package: - name: epel-release - state: installed - when: triumf_epel.failed - become: yes - - name: Install other package dependencies package: - name: "{{ packages }}" + name: > + {{ (nagios_packages|length > 0) | + ternary( + nagios_packages, + lookup( + 'vars', + 'nagios_packages_' + + ansible_distribution|lower + + ansible_distribution_major_version|string + ) + ) + }} state: installed become: yes diff --git a/tasks/main.yml b/tasks/main.yml index 1427e92d0c9cb9ab227bcf275fb01250bbce3677..62cdce39e565ebf48ee56be8a3cc9cd1a2ebecd8 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,43 +1,37 @@ --- - name: Load platform variables - include_vars: "{{ found }}" + include_vars: "{{ filename }}" vars: - distribution: + vars_files: files: - "{{ role_path }}/vars/{{ ansible_distribution | lower }}/\ {{ ansible_distribution_major_version }}.yml" - "{{ role_path }}/vars/{{ ansible_distribution | lower }}/\ main.yml" - - "{{ role_path }}/vars/{{ ansible_distribution | lower }}.yml" - - "{{ role_path }}/vars/{{ ansible_os_family | lower }}.yml" + - "{{ role_path }}/vars/{{ ansible_os_family | lower }}/\ + main.yml" - "{{ role_path }}/vars/main.yml" - found: "{{ lookup('first_found', distribution, errors='ignore') }}" - skip: true - tags: - - platform_vars - when: - - "found|length > 0" + loop: "{{ q('first_found', vars_files, errors='ignore') }}" + loop_control: + loop_var: filename - name: Load platform dependencies - include_tasks: "{{ found }}" vars: - distribution: + tasks: files: - "{{ role_path }}/tasks/dependencies/\ {{ ansible_distribution | lower }}/\ {{ ansible_distribution_major_version }}.yml" - "{{ role_path }}/tasks/dependencies/\ - {{ ansible_distribution | lower }}/main.yml" - - "{{ role_path }}/tasks/dependencies/\ - {{ ansible_distribution | lower }}.yml" + {{ ansible_distribution | lower }}/\ + main.yml" - "{{ role_path }}/tasks/dependencies/\ {{ ansible_os_family | lower }}.yml" - found: "{{ lookup('first_found', distribution, errors='ignore') }}" - skip: true - tags: - - platform_dependencies - when: - - "found|length > 0" + - "{{ role_path }}/tasks/dependencies/main.yml" + include_tasks: "{{ filename }}" + loop: "{{ q('first_found', tasks, errors='ignore') }}" + loop_control: + loop_var: filename - name: Create destdirs file: diff --git a/vars/centos/.7.yml.swp b/vars/centos/.7.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..bd7d26e0e5beededf64b00e6c464b012d9d9bd20 Binary files /dev/null and b/vars/centos/.7.yml.swp differ diff --git a/vars/centos/7.yml b/vars/centos/7.yml index 2d13d535fa4f0a6c22a85343e35ee32036c386e5..759d7cd706d9ab9c07bfd9c097fe67e59090aed8 100644 --- a/vars/centos/7.yml +++ b/vars/centos/7.yml @@ -1,4 +1,4 @@ -packages: +nagios_packages_centos7: - nagios - nagios-plugins-dhcp - nagios-plugins-disk @@ -13,6 +13,7 @@ packages: - nagios-plugins-procs - nagios-plugins-rpc - nagios-plugins-smtp + - nagios-plugins-snmp - nagios-plugins-ssh - nagios-plugins-tcp - nagios-plugins-users