Manage services for the lists var (flexlm__licences)
Also allow to manage several licences on a same host (close #1)
This commit is contained in:
parent
2b531de478
commit
bc5ad21d32
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
* Add a way to provide vendor daemon binaries and licence file.
|
* Add a way to provide vendor daemon binaries and licence file.
|
||||||
|
* Manage services for the lists var (flexlm__licences).
|
||||||
|
* Allow to manage several licences on a same host (close #1).
|
||||||
|
|
||||||
## v1.0
|
## v1.0
|
||||||
|
|
||||||
|
|
37
README.md
37
README.md
|
@ -4,9 +4,10 @@
|
||||||
2. [Role Variables](#role-variables)
|
2. [Role Variables](#role-variables)
|
||||||
3. [Example Playbook](#example-playbook)
|
3. [Example Playbook](#example-playbook)
|
||||||
4. [Configuration](#configuration)
|
4. [Configuration](#configuration)
|
||||||
5. [Development](#development)
|
5. [Known Issues](#known-issues)
|
||||||
6. [License](#license)
|
6. [Development](#development)
|
||||||
7. [Author Information](#author-information)
|
7. [License](#license)
|
||||||
|
8. [Author Information](#author-information)
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
|
@ -27,10 +28,6 @@ A role to manage Flexlm daemon.
|
||||||
* **flexlm__licences** : Lists to manage vendor daemon and licence files [default : `[]`].
|
* **flexlm__licences** : Lists to manage vendor daemon and licence files [default : `[]`].
|
||||||
* **flexlm__service_manage** : If Licence Manager service should be managed with this role [default : `True`].
|
* **flexlm__service_manage** : If Licence Manager service should be managed with this role [default : `True`].
|
||||||
* **flexlm__service_enabled** : If Licence Manager service should be enable at startup [default : `True`].
|
* **flexlm__service_enabled** : If Licence Manager service should be enable at startup [default : `True`].
|
||||||
* **flexlm__service_name** : Service name [default : `flexlm`].
|
|
||||||
* **flexlm__service_description** : Description of the systemd unit [default : `flexlm Licence Manager`].
|
|
||||||
* **flexlm__service_working_directory** : Working directory of the systemd unit [default : `/opt/flexlm/VENDOR`].
|
|
||||||
* **flexlm__service_unit_path** : Systemd unit path [default : `/etc/systemd/system/{{ flexlm__service_name }}.service`].
|
|
||||||
* **flexlm__service_unit_content** : Template used to generate the previous file [default : `etc/systemd/system/flexlm.service.j2`].
|
* **flexlm__service_unit_content** : Template used to generate the previous file [default : `etc/systemd/system/flexlm.service.j2`].
|
||||||
|
|
||||||
## Example Playbook
|
## Example Playbook
|
||||||
|
@ -43,28 +40,28 @@ A role to manage Flexlm daemon.
|
||||||
- role: ipr-cnrs.flexlm
|
- role: ipr-cnrs.flexlm
|
||||||
```
|
```
|
||||||
|
|
||||||
* Manage Flexlm to provide Intel Fortran :
|
* Manage Flexlm to provide Intel Fortran (without binaries) :
|
||||||
|
|
||||||
``` yaml
|
``` yaml
|
||||||
- hosts: intel-lm
|
- hosts: intel-lm
|
||||||
roles:
|
roles:
|
||||||
- role: ipr-cnrs.flexlm
|
- role: ipr-cnrs.flexlm
|
||||||
flexlm__service_working_directory: '/opt/intel/bin'
|
flexlm__licences:
|
||||||
flexlm__licence_file: '/opt/intel/etc/license.lic'
|
- name: intel
|
||||||
flexlm__service_description: 'Licence Manager for Intel Fortran'
|
description: 'flexlm Licence Manager for Matlab'
|
||||||
|
bin_path: '/opt/intel/bin'
|
||||||
|
lic_path: '/opt/matlab/etc/licence.lic' # need to be a file
|
||||||
```
|
```
|
||||||
|
|
||||||
* Manage Flexlm to provide Matlab Licence and vendor daemon :
|
* Manage Flexlm to provide Matlab Licence and vendor daemon binaries :
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- hosts: matlab-lm
|
- hosts: matlab-lm
|
||||||
roles:
|
roles:
|
||||||
- role: ipr-cnrs.flexlm
|
- role: ipr-cnrs.flexlm
|
||||||
flexlm__service_working_directory: '/opt/matlab/bin'
|
|
||||||
flexlm__licence_file: '/opt/matlab/etc/license.lic'
|
|
||||||
flexlm__service_description: 'Licence Manager for Matlab'
|
|
||||||
flexlm__licences:
|
flexlm__licences:
|
||||||
- name: matlab
|
- name: matlab
|
||||||
|
description: 'flexlm Licence Manager for Matlab'
|
||||||
bin_path: '/opt/matlab/bin'
|
bin_path: '/opt/matlab/bin'
|
||||||
bin_src: '{{ inventory_dir + "/../resources/service/matlab-lm/bin/" }}'
|
bin_src: '{{ inventory_dir + "/../resources/service/matlab-lm/bin/" }}'
|
||||||
lic_path: '/opt/matlab/etc/licence.lic' # need to be a file
|
lic_path: '/opt/matlab/etc/licence.lic' # need to be a file
|
||||||
|
@ -76,12 +73,16 @@ A role to manage Flexlm daemon.
|
||||||
This role will :
|
This role will :
|
||||||
* Copy the `lmgrd` and `lmutil` binaries to the client.
|
* Copy the `lmgrd` and `lmutil` binaries to the client.
|
||||||
* Create a specific user to launch daemon.
|
* Create a specific user to launch daemon.
|
||||||
* Set up a systemd service. [Thanks to Kalebo instructions][kalebo instruction flexlm systemd].
|
* Set up a systemd service (flexlm-NAME). [Thanks to Kalebo instructions][kalebo instruction flexlm systemd].
|
||||||
* Copy vendor daemon binaries to the host if specified.
|
* Copy vendor daemon binaries to the host if source is specified.
|
||||||
* Copy licence file to the host if specified.
|
* Copy licence file to the host if source is specified.
|
||||||
|
|
||||||
The `lmgrd` and `lmutil` binaries comes from [Mathworks][mathworks download url] in version **flexlm__lmgrd_version**.
|
The `lmgrd` and `lmutil` binaries comes from [Mathworks][mathworks download url] in version **flexlm__lmgrd_version**.
|
||||||
|
|
||||||
|
## Known Issues
|
||||||
|
|
||||||
|
* If a value of one licence change in **flexlm__licences** var, all services will be restarted.
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
This source code comes from our [Gogs instance][flexlm source] and the [Github repo][flexlm github] exist just to be able to send the role to Ansible Galaxy…
|
This source code comes from our [Gogs instance][flexlm source] and the [Github repo][flexlm github] exist just to be able to send the role to Ansible Galaxy…
|
||||||
|
|
|
@ -16,9 +16,6 @@ flexlm__lmutil_path: '/usr/local/bin/lmutil'
|
||||||
# user
|
# user
|
||||||
flexlm__user_name: 'flexlm'
|
flexlm__user_name: 'flexlm'
|
||||||
|
|
||||||
# licence
|
|
||||||
flexlm__licence_file: '/opt/flexlm/VENDOR/licence.lic'
|
|
||||||
|
|
||||||
# Lists to manage vendor daemon and licence files.
|
# Lists to manage vendor daemon and licence files.
|
||||||
# flexlm_licences:
|
# flexlm_licences:
|
||||||
# - name: matlab
|
# - name: matlab
|
||||||
|
@ -27,14 +24,12 @@ flexlm__licence_file: '/opt/flexlm/VENDOR/licence.lic'
|
||||||
# bin_src: '{{ inventory_dir + "/../resources/service/matlab-lm/bin/" }}'
|
# bin_src: '{{ inventory_dir + "/../resources/service/matlab-lm/bin/" }}'
|
||||||
# lic_path: '/opt/matlab/etc/licence.lic'
|
# lic_path: '/opt/matlab/etc/licence.lic'
|
||||||
# lic_src: '{{ inventory_dir + "/../resources/hosts/matlab-lm/opt/matlab/etc/licence.lic" }}'
|
# lic_src: '{{ inventory_dir + "/../resources/hosts/matlab-lm/opt/matlab/etc/licence.lic" }}'
|
||||||
|
# #service: False
|
||||||
|
# ports: [ '27000', '33188' ] # not used right now
|
||||||
flexlm__licences: []
|
flexlm__licences: []
|
||||||
|
|
||||||
# service
|
# service
|
||||||
flexlm__service_manage: True
|
flexlm__service_manage: True
|
||||||
flexlm__service_enabled: True
|
flexlm__service_enabled: True
|
||||||
flexlm__service_name: 'flexlm'
|
|
||||||
flexlm__service_description: 'flexlm Licence Manager'
|
|
||||||
flexlm__service_working_directory: '/opt/flexlm/VENDOR'
|
|
||||||
flexlm__service_unit_path: '/etc/systemd/system/{{ flexlm__service_name }}.service'
|
|
||||||
flexlm__service_unit_content: 'etc/systemd/system/flexlm.service.j2'
|
flexlm__service_unit_content: 'etc/systemd/system/flexlm.service.j2'
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
---
|
---
|
||||||
# handlers file for flexlm
|
# handlers file for flexlm
|
||||||
- name: restart flexlm service
|
- name: restart flexlm services
|
||||||
service: name={{ flexlm__service_name }} state=restarted
|
service:
|
||||||
when: flexlm__service_manage
|
name: '{{ "flexlm-" + item.name }}'
|
||||||
|
state: restarted
|
||||||
|
with_flattened:
|
||||||
|
- '{{ flexlm__licences }}'
|
||||||
|
when: ( flexlm__service_manage and
|
||||||
|
( item.service | d(True) ))
|
||||||
|
|
|
@ -58,6 +58,7 @@
|
||||||
with_flattened:
|
with_flattened:
|
||||||
- '{{ flexlm__licences }}'
|
- '{{ flexlm__licences }}'
|
||||||
when: (item.bin_src|d())
|
when: (item.bin_src|d())
|
||||||
|
notify: ['restart flexlm services']
|
||||||
|
|
||||||
- name: Add licence file
|
- name: Add licence file
|
||||||
copy:
|
copy:
|
||||||
|
@ -69,33 +70,40 @@
|
||||||
with_flattened:
|
with_flattened:
|
||||||
- '{{ flexlm__licences }}'
|
- '{{ flexlm__licences }}'
|
||||||
when: (item.lic_src|d())
|
when: (item.lic_src|d())
|
||||||
|
notify: ['restart flexlm services']
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# service {{{
|
# service {{{
|
||||||
|
|
||||||
- name: SERVICE '{{ flexlm__service_name }}' systemd unit
|
- name: Add systemd unit
|
||||||
template:
|
template:
|
||||||
src: '{{ flexlm__service_unit_content }}'
|
src: '{{ flexlm__service_unit_content }}'
|
||||||
dest: '{{ flexlm__service_unit_path }}'
|
dest: '{{ "/etc/systemd/system/flexlm-" + item.name + ".service" }}'
|
||||||
owner: 'root'
|
owner: 'root'
|
||||||
group: 'root'
|
group: 'root'
|
||||||
mode: '0644'
|
mode: '0644'
|
||||||
register: flexlm__register_systemd_service
|
register: flexlm__register_systemd_service
|
||||||
notify: ['restart flexlm service']
|
notify: ['restart flexlm services']
|
||||||
when: flexlm__service_manage
|
with_flattened:
|
||||||
|
- '{{ flexlm__licences }}'
|
||||||
|
when: ( flexlm__service_manage and
|
||||||
|
( item.service | d(True) ))
|
||||||
|
|
||||||
- name: Reload systemd daemons
|
- name: Reload systemd daemons
|
||||||
command: systemctl daemon-reload
|
command: systemctl daemon-reload
|
||||||
notify: ['restart flexlm service']
|
notify: ['restart flexlm services']
|
||||||
when: (flexlm__service_manage and
|
when: (flexlm__service_manage and
|
||||||
flexlm__register_systemd_service|changed)
|
flexlm__register_systemd_service|changed)
|
||||||
|
|
||||||
- name: SERVICE manage '{{ flexlm__service_name }}'
|
- name: SERVICE manage services
|
||||||
service:
|
service:
|
||||||
name: '{{ flexlm__service_name }}'
|
name: '{{ "flexlm-" + item.name }}'
|
||||||
state: started
|
state: started
|
||||||
enabled: '{{ flexlm__service_enabled }}'
|
enabled: '{{ flexlm__service_enabled }}'
|
||||||
when: flexlm__service_manage
|
with_flattened:
|
||||||
|
- '{{ flexlm__licences }}'
|
||||||
|
when: ( flexlm__service_manage and
|
||||||
|
( item.service | d(True) ))
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
# {{ ansible_managed }}
|
# {{ ansible_managed }}
|
||||||
[Unit]
|
[Unit]
|
||||||
Description={{ flexlm__service_description }}
|
Description={{ item.description | d("flexlm Licence Manager for " + item.name) }}
|
||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
User={{ flexlm__user_name }}
|
User={{ flexlm__user_name }}
|
||||||
WorkingDirectory={{ flexlm__service_working_directory }}
|
WorkingDirectory={{ item.bin_path | d("/opt/" + item.name + "/bin") }}
|
||||||
ExecStart={{ flexlm__lmgrd_path }} -z -c {{ flexlm__licence_file }}
|
ExecStart={{ flexlm__lmgrd_path }} -z -c {{ item.lic_path | d("/opt/" + item.name + "/etc/licence.lic") }}
|
||||||
SuccessExitStatus=15
|
SuccessExitStatus=15
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=30
|
RestartSec=30
|
||||||
|
|
Loading…
Reference in New Issue