Ansible role to manage systemd services
Go to file
Kevin Carter 6285b6c638 Build out the PrivateNetwork function for services
This change adds the ability to effectively use the PrivateNetwork
functionality systemd provides for services. Now, if enabled, services
can be created in a network namespace which isolates it from the reset
of the host. Additional options have been added allowing access into the
network namespace over ephemeral devices as needed.

Highlights:
* Isolated private networking for services will sandbox using a stand
  alone namespace which has no access to anything via the network.
* Access into a private namespace can be provided over a single network
  interface which can be IP'd via local DHCP + NAT or using an upstream
  DHCP server.
* Tests have been added to exercise the new functionality.

All of the funcality has been documented in the defaults of this role.

Change-Id: I6751765131f32393a1605eb2100bec46199d980a
Signed-off-by: Kevin Carter <kevin@cloudnull.com>
2019-02-09 04:06:44 +00:00
defaults Build out the PrivateNetwork function for services 2019-02-09 04:06:44 +00:00
doc Follow the new PTI for document build 2018-07-02 08:38:48 +01:00
examples Add tests to the service role 2018-03-21 17:47:22 -05:00
handlers Build out the PrivateNetwork function for services 2019-02-09 04:06:44 +00:00
html-docs Add tests to the service role 2018-03-21 17:47:22 -05:00
meta Add Bionic testing 2018-05-14 20:46:31 +02:00
releasenotes Update reno for stable/rocky 2018-08-10 16:44:22 +00:00
tasks Build out the PrivateNetwork function for services 2019-02-09 04:06:44 +00:00
templates Build out the PrivateNetwork function for services 2019-02-09 04:06:44 +00:00
tests Build out the PrivateNetwork function for services 2019-02-09 04:06:44 +00:00
zuul.d switch documentation job to new PTI 2018-08-21 13:21:43 +00:00
.gitignore Updated from OpenStack Ansible Tests 2018-10-02 14:57:14 +00:00
.gitreview Fix gitreview repo name 2018-03-19 14:48:14 -05:00
CONTRIBUTING.rst Replace Chinese punctuation with English punctuation 2018-10-29 20:09:54 +08:00
LICENSE Initial Commit 2017-05-19 10:24:55 -05:00
README.md Add release note link in README 2018-06-29 14:58:07 +08:00
Vagrantfile Updated from OpenStack Ansible Tests 2018-09-28 06:24:12 +00:00
ansible-role-requirements.yaml updated things so this role is usable 2018-03-08 17:54:13 -06:00
bindep.txt Add base role tests 2018-03-19 23:01:15 -05:00
manual-test.rc Initial Commit 2017-05-19 10:24:55 -05:00
run_tests.sh Updated from OpenStack Ansible Tests 2018-09-29 04:57:52 +00:00
setup.cfg Update home-page 2019-01-12 09:50:17 +00:00
setup.py Initial Commit 2017-05-19 10:24:55 -05:00
tox.ini fix tox python3 overrides 2018-11-05 06:42:26 +00:00

README.md

Ansible systemd_service

This Ansible role that installs and configures systemd unit files and all of its corresponding services. This role requires the openstack-ansible-plugins repository to be available on your local system. The Ansible galaxy resolver will not retrieve this role for you. To get this role in place clone the plugins repository before installing this role.

# git clone https://github.com/openstack/openstack-ansible-plugins /etc/ansible/roles/plugins

Release notes for the project can be found at: https://docs.openstack.org/releasenotes/ansible-role-systemd_service

You can also use the ansible-galaxy command on the ansible-role-requirements.yml file.

# ansible-galaxy install -r ansible-role-requirements.yml

Example playbook
- name: Create a systemd unit file for ServiceX
  hosts: localhost
  become: true
  roles:
    - role: "systemd_service"
      systemd_services:
        # Normal Service
        - service_name: ServiceX
          execstarts:
            - /path/ServiceX --flag1

        # Timer Service (AKA CRON)
        - service_name: TimerServiceX
          execstarts:
            - /path/TimerServiceX --flag1
          timer:
            state: "started"
            options:
              OnBootSec: 30min
              OnUnitActiveSec: 1h
              Persistent: true
      tags:
        - servicex-init