diff --git a/defaults/main.yml b/defaults/main.yml index a5a735cd..2fff99f5 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -123,9 +123,15 @@ openstack_kernel_options: # above. openstack_user_kernel_options: [] +# User defined list of extra packages to install on all hosts and containers +openstack_host_extra_distro_packages: [] + # Overridable set of packages to install on all hosts and containers. openstack_host_distro_packages: "{{ _openstack_host_distro_packages }}" +# User defined list of extra packages to install on the host +openstack_host_extra_metal_distro_packages: [] + # Overridable set of packages to install on the host. openstack_host_metal_distro_packages: "{{ _openstack_host_metal_distro_packages }}" diff --git a/tasks/configure_metal_hosts.yml b/tasks/configure_metal_hosts.yml index 36ea35e6..87e5a312 100644 --- a/tasks/configure_metal_hosts.yml +++ b/tasks/configure_metal_hosts.yml @@ -27,7 +27,18 @@ name: "{{ openstack_host_metal_distro_packages }}" state: "{{ openstack_hosts_package_state }}" register: install_packages - until: install_packages is success + until: install_packages is success + retries: 5 + delay: 2 + +- name: Install user defined extra distro packages for bare metal nodes + package: + name: "{{ openstack_host_extra_metal_distro_packages }}" + state: "{{ openstack_hosts_package_state }}" + when: + - openstack_host_extra_metal_distro_packages | length > 0 + register: install_packages + until: install_packages is success retries: 5 delay: 2 diff --git a/tasks/main.yml b/tasks/main.yml index ee91a15b..28897043 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -80,6 +80,17 @@ retries: 5 delay: 2 +- name: Install user defined extra distro packages + package: + name: "{{ openstack_host_extra_distro_packages }}" + state: "{{ openstack_hosts_package_state }}" + when: + - openstack_host_extra_distro_packages | length > 0 + register: install_packages + until: install_packages is success + retries: 5 + delay: 2 + - include_tasks: openstack_authorized_keys.yml tags: - openstack_hosts-config diff --git a/tests/openstack_hosts-overrides.yml b/tests/openstack_hosts-overrides.yml index b3d3822f..3cae8144 100644 --- a/tests/openstack_hosts-overrides.yml +++ b/tests/openstack_hosts-overrides.yml @@ -1,4 +1,14 @@ --- + +extra_host_package: iotop +extra_metal_package: lshw + +openstack_host_extra_distro_packages: + - "{{ extra_host_package }}" + +openstack_host_extra_metal_distro_packages: + - "{{ extra_metal_package }}" + openstack_host_specific_kernel_modules: - name: "ebtables" pattern: "CONFIG_BRIDGE_NF_EBTABLES" diff --git a/tests/test.yml b/tests/test.yml index 53bc38e5..3e9d4f70 100644 --- a/tests/test.yml +++ b/tests/test.yml @@ -35,6 +35,16 @@ when: - "'idempotence' not in lookup('env', 'ANSIBLE_LOG_PATH')" + - name: Ensure extra host packages are not present + package: + name: "{{ item }}" + state: absent + with_items: + - "{{ extra_host_package }}" + - "{{ extra_metal_package }}" + when: + - "'idempotence' not in lookup('env', 'ANSIBLE_LOG_PATH')" + # Prepare the user ssh keys - import_playbook: common/test-prepare-keys.yml @@ -53,36 +63,56 @@ slurp: src: "{{ openstack_host_module_file }}" register: modules_file + - name: Open sysctl file slurp: src: /etc/sysctl.conf register: sysctl_file + - name: Open hosts file slurp: src: /etc/hosts register: hosts_file + - name: Open /etc/environment file slurp: src: /etc/environment register: environment_file + - name: Read files set_fact: modules_content: "{{ modules_file.content | b64decode }}" sysctl_content: "{{ sysctl_file.content | b64decode }}" hosts_content: "{{ hosts_file.content | b64decode }}" environment_content: "{{ environment_file.content | b64decode }}" + - name: Check for release file stat: path: /etc/openstack-release register: release_file + - name: Check for systat file stat: path: "{{ openstack_host_sysstat_file }}" register: systat_file + - name: Check for ssh dir stat: path: "{{ ansible_env.HOME}}/.ssh" register: ssh_dir + + - name: Check for extra host package present on host + package: + name: "{{ extra_host_package }}" + state: present + register: extra_distro_package_host + + - name: Check for extra metal package present on host + package: + name: "{{ extra_metal_package }}" + state: present + register: extra_metal_distro_package_host + - name: Check role functions assert: that: @@ -99,3 +129,6 @@ - "systat_file.stat.exists" - "'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' in environment_content" - "ssh_dir.stat.isdir" + - extra_distro_package_host.changed == false + - extra_metal_distro_package_host.changed == false +