--- # Copyright 2017, 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. - name: Pull systemd version command: "systemctl --version" changed_when: false register: get_systemd_version tags: # Avoid ANSIBLE0006 lint issue: systemctl used in place of systemd module - skip_ansible_lint - always - name: Set systemd version set_fact: systemd_version: "{{ get_systemd_version.stdout_lines[0].split()[-1] }}" tags: - always - name: Ensure networkd is available block: - name: Check for networkd command: "which networkctl" failed_when: false changed_when: false register: networkd_installed - name: Notify user debug: msg: >- Local DHCP has been disabled because networkd was not installed or is not part of the $PATH. run_once: true when: - networkd_installed.rc != 0 - name: Disable local DHCP set_fact: systemd_PrivateNetworkLocalDHCP: false when: - networkd_installed.rc != 0 when: - systemd_PrivateNetwork | bool - systemd_PrivateNetworkLocalDHCP | bool tags: - systemd-service - name: Create TEMP run dir file: path: "/var/run/{{ item.service_name | replace(' ', '_') }}" state: directory owner: "{{ item.systemd_user_name | default(systemd_user_name) }}" group: "{{ item.systemd_group_name | default(systemd_group_name) }}" mode: "02755" with_items: "{{ systemd_services }}" tags: - systemd-service - name: Create TEMP service lock dir file: path: "/var/lock/{{ item.service_name | replace(' ', '_') }}" state: directory owner: "{{ item.systemd_user_name | default(systemd_user_name) }}" group: "{{ item.systemd_group_name | default(systemd_group_name) }}" mode: "02755" with_items: "{{ systemd_services }}" tags: - systemd-service - name: Create TEMP defined lock dir file: path: "{{ item.systemd_lock_path | default(systemd_lock_path) }}" state: directory owner: "{{ item.systemd_user_name | default(systemd_user_name) }}" group: "{{ item.systemd_group_name | default(systemd_group_name) }}" mode: "02755" when: - (item.systemd_lock_path is defined) or (systemd_lock_path is defined) with_items: "{{ systemd_services }}" tags: - systemd-service - name: Create netns service entry template: src: "systemd-netns@.service.j2" dest: "/etc/systemd/system/systemd-netns@.service" mode: "0644" owner: "root" group: "root" when: - systemd_PrivateNetwork | bool tags: - systemd-service - name: Create netns-access service entry template: src: "systemd-netns-access@.service.j2" dest: "/etc/systemd/system/systemd-netns-access@.service" mode: "0644" owner: "root" group: "root" when: - systemd_PrivateNetwork | bool tags: - systemd-service - name: Create netns dhcp server template: src: "systemd-dhcp.network.j2" dest: "/etc/systemd/network/systemd-mv-{{ systemd_PrivateNetworkInterface }}.network" mode: "0644" owner: "root" group: "root" when: - systemd_PrivateNetwork | bool - systemd_PrivateNetworkLocalDHCP | bool notify: - systemd networkd restart tags: - systemd-service - name: Create tmpfiles.d entry template: src: "systemd-tmpfiles.j2" dest: "/etc/tmpfiles.d/{{ item.systemd_tempd_prefix | default(systemd_tempd_prefix) }}-{{ item.service_name | replace(' ', '_') }}.conf" mode: "0644" owner: "root" group: "root" with_items: "{{ systemd_services }}" tags: - systemd-service - name: Place the systemd service config_template: src: "systemd-service.j2" dest: "/etc/systemd/system/{{ item.service_name | replace(' ', '_') }}.service" mode: "0644" owner: "root" group: "root" config_overrides: "{{ item.config_overrides | default(systemd_service_config_overrides) }}" config_type: "ini" with_items: "{{ systemd_services }}" notify: - systemd service changed register: systemd_services_result tags: - systemd-service - name: Place the systemd timer template: src: "systemd-timer.j2" dest: "/etc/systemd/system/{{ item.service_name | replace(' ', '_') }}.timer" mode: "0644" owner: "root" group: "root" when: - item.timer is defined with_items: "{{ systemd_services }}" notify: - systemd service changed register: systemd_timer_result tags: - systemd-service - name: Reload systemd on unit change systemd: daemon_reload: yes when: - (systemd_services_result is changed) or (systemd_timer_result is changed) - name: Load service systemd: name: "{{ item.service_name | replace(' ', '_') }}.service" enabled: "{{ item.enabled | default(systemd_service_enabled) }}" state: "{{ (item.timer is defined) | ternary(omit, (item.state | default(omit))) }}" with_items: "{{ systemd_services }}" tags: - systemd-service - name: Load timer systemd: name: "{{ item.service_name | replace(' ', '_') }}.timer" enabled: "{{ item.enabled | default(systemd_service_enabled) }}" state: "{{ item.timer.state | default(omit) }}" when: - item.timer is defined with_items: "{{ systemd_services }}" tags: - systemd-service