diff --git a/tasks/lxc_apparmor.yml b/tasks/lxc_apparmor.yml index e30e9925..5274dc94 100644 --- a/tasks/lxc_apparmor.yml +++ b/tasks/lxc_apparmor.yml @@ -97,6 +97,48 @@ - lxc-apparmor - lxc_hosts-config +- name: Check for apparmor profile + stat: + path: "/etc/apparmor.d/bin.sbin.haproxy" + register: sbin_haproxy + +# NOTE(hwoarang) aa-disable will disable the profile and unload it immediately +# See https://bugzilla.opensuse.org/show_bug.cgi?id=1108688. For aa-disable to +# work we need apparmor app and running +- name: Relax apparmor profile + block: + - name: Ensure apparmor service is running + systemd: + name: "apparmor" + enabled: yes + state: "started" + + - name: Relax haproxy apparmor profile + shell: | + # empty line to workaround bug in EnvVarsInCommandRule.py lint test + # https://github.com/willthames/ansible-lint/issues/275 + exit_code=0 + if aa-status | grep -q haproxy ; then + aa-disable usr.sbin.haproxy + exit_code=$? + if [[ ${exit_code} == 0 ]]; then + exit_code=2 + fi + fi + exit ${exit_code} + register: _apparmor_profile_disabled + changed_when: _apparmor_profile_disabled.rc == 2 + failed_when: _apparmor_profile_disabled.rc not in [0,2] + args: + warn: no + executable: /bin/bash + when: + - sbin_haproxy.stat.exists | bool + tags: + - lxc-files + - lxc-apparmor + - lxc_hosts-config + - name: Drop lxc-openstack apparmor profile template: src: "lxc-openstack.apparmor.j2"