Example 1: Automatic management of services

Services in the list lp_service_auto will be automatically set according the below variables

lp_<service_name> ........... included if true (default=false)
lp_<service_name>_service ... Os specific name (see defaults and vars)
lp_<service_name>_enable .... enabled if true (default=false)
lp_<service_name>_state ..... started if true (default=<fn(enabled)>)
lp_<service_name>_module .... module used (default=auto)

For example, given the below variables, the service udev will be set enabled and started by module service

lp_udev: true
lp_udev_service: udev
lp_udev_enable: true
lp_udev_module: service

Create playbook

shell> cat lp.yml
- hosts: test_01
  become: true
  roles:
    - vbotka.linux_postinstall

Create variables

Create the file host_vars/test_01/lp-service.yml and create the list of services lp_service_auto that shall be managed by this task

shell> cat host_vars/test_01/lp-service.yml
lp_service_auto:
  - smart
  - udev

Hint

Use the variable lp_service to set other parameters.

Show variables

shell> ansible-playbook lp.yml -t lp_service_debug -e lp_service_debug=True

  ...

TASK [vbotka.linux_postinstall : service: Debug] ***********************************************
ok: [test_01] => 
  msg: |-
    ansible_os_family: Debian
    ansible_service_mgr: systemd
    lp_service_sanity: False
  
    lp_service_module: auto
    lp_service_module_valid: ['auto', 'service', 'systemd', 'sysvinit']
    lp_service:
      - enabled: true
        name: smartmontools
        state: started
        use: auto
      - enabled: true
        name: udev
        state: started
        use: service
  
    lp_service_auto:
      - smart
      - udev

Manage the services and show the results

shell> ansible-playbook lp.yml -t lp_service_auto -e lp_service_debug=true

  ...

TASK [vbotka.linux_postinstall : service: Automatic management of listed services] *****************
ok: [test_01] => (item=smartmontools enabled: True use: auto)
ok: [test_01] => (item=udev enabled: True use: service)

TASK [vbotka.linux_postinstall : service: Debug] ***************************************************
included: /export/home/admin/.ansible/roles/vbotka.linux_postinstall/tasks/fn/service-debug.yml for test_01

TASK [vbotka.linux_postinstall : service: Debug management full results] ***************************
skipping: [test_01]

TASK [vbotka.linux_postinstall : service: Debug management selected results] ***********************
ok: [test_01] => 
  msg: |-
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    changed: False
    item:
      smart
  
    name: smartmontools
    enabled: True
    state: started
    msg: UNDEFINED
    invocation:
      daemon_reexec: false
      daemon_reload: false
      enabled: true
      force: null
      masked: null
      name: smartmontools
      no_block: false
      scope: system
      state: started
  
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    changed: False
    item:
      udev
  
    name: udev
    enabled: True
    state: started
    msg: UNDEFINED
    invocation:
      arguments: ''
      enabled: true
      name: udev
      pattern: null
      runlevel: default
      sleep: null
      state: started

TASK [vbotka.linux_postinstall : service: Flush handlers] **************************************