openstack-ansible-lxc_conta.../handlers/main.yml

108 lines
3.2 KiB
YAML

---
# Copyright 2014, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Due to https://github.com/ansible/ansible-modules-extras/issues/2691
# this uses the LXC CLI tools to ensure that we get logging.
# TODO(odyssey4me): revisit this once the bug is fixed and released
- name: Stop Container
command: >
lxc-stop --name {{ inventory_hostname }}
--logfile {{ lxc_container_log_path }}/lxc-{{ inventory_hostname }}.log
--logpriority {{ (debug | bool) | ternary('DEBUG', 'INFO') }}
notify:
- Start Container
delegate_to: "{{ physical_host }}"
register: container_stop
changed_when: true
failed_when: not container_stop.rc in [0, 2]
until: container_stop.rc in [0, 2]
retries: 3
delay: 2
when:
- lxc_container_allow_restarts | bool
listen: Lxc container restart
# Due to https://github.com/ansible/ansible-modules-extras/issues/2691
# this uses the LXC CLI tools to ensure that we get logging.
# TODO(odyssey4me): revisit this once the bug is fixed and released
- name: Start Container
command: >
lxc-start --daemon --name {{ inventory_hostname }}
--logfile {{ lxc_container_log_path }}/lxc-{{ inventory_hostname }}.log
--logpriority {{ (debug | bool) | ternary('DEBUG', 'INFO') }}
delegate_to: "{{ physical_host }}"
register: container_start
until: container_start | success
retries: 3
listen: Lxc container restart
- name: Flush routes
command: "ip route flush table main"
listen: Restart networkd
- name: Restart systemd-networkd
systemd:
name: systemd-networkd
state: restarted
enabled: true
daemon_reload: true
listen: Restart networkd
- name: Enable resolved
systemd:
name: systemd-resolved
state: started
enabled: true
daemon_reload: true
when:
- lxc_container_enable_resolved | bool
- name: Enable hostnamed
systemd:
name: systemd-hostnamed
state: started
enabled: true
daemon_reload: true
- name: Enable dbus
systemd:
name: dbus
state: started
enabled: true
daemon_reload: true
- name: Reload systemd daemon
systemd:
daemon_reload: true
# NOTE(hwoarang) openSUSE randomly fails to start the service
# with an error like the following one
# sysctl-container.service: Failed at step CGROUP spawning /sbin/sysctl: No such device
# Until this is fixed, we workaround it by simply retrying a few more times
# before giving up
# https://bugzilla.suse.com/show_bug.cgi?id=1055426
# https://bugs.launchpad.net/openstack-ansible/+bug/1712741
- name: Enable container sysctl service
service:
name: "sysctl-container"
state: started
enabled: yes
daemon_reload: yes
remote_user: root
register: _sysctl_service_started
until: _sysctl_service_started|success
retries: 5
delay: 5