add Wake on LAN dedicated role

This commit is contained in:
Claudio Maradonna 2023-01-05 16:01:31 +01:00
parent 917a2f074f
commit 6aa6e080dd
Signed by untrusted user who does not match committer: claudiomaradonna
GPG key ID: 0CBA58694C5680D9
13 changed files with 185 additions and 0 deletions

View file

@ -16,6 +16,7 @@
# --- Sysadmin ---
- { role: sysadmin-tools, tags: [sysadmin] }
- { role: wakeonlan, tags: [wol] }
# --- Services ---
# Role relative to services, applications and so on

View file

@ -0,0 +1,29 @@
---
language: python
python: "2.7"
# Use the new container infrastructure
sudo: false
# Install ansible
addons:
apt:
packages:
- python-pip
install:
# Install ansible
- pip install ansible
# Check ansible version
- ansible --version
# Create ansible.cfg with correct roles_path
- printf '[defaults]\nroles_path=../' >ansible.cfg
script:
# Basic role syntax check
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/

37
roles/wakeonlan/README.md Normal file
View file

@ -0,0 +1,37 @@
wakeonlan
=========
This role install/ uninstall Wake on LAN support for target
Requirements
------------
.
Role Variables
--------------
Respond to:
- **wakeonlan_enabled** (boolean): If true install and configure WoL
- **wakeonlan_interface** (string): the interface to setup for WoL
- **wakeonlan_mode** (string): the mode selected for WoL, default to `g`
Dependencies
------------
- ethtool
Example Playbook
----------------
`ansible-playbook -i inventory/example.yml handbook.yml --extra-vars="target=example_target" --tags wol`
License
-------
GPLv3
Author Information
------------------
- [Claudio Maradonna](https://social.unitoo.it/claudio)

View file

@ -0,0 +1,6 @@
---
# defaults file for wakeonlan
wakeonlan_enabled: false
wakeonlan_interface: enp2s0
wakeonlan_mode: g

View file

@ -0,0 +1,2 @@
---
# handlers file for wakeonlan

View file

@ -0,0 +1,52 @@
galaxy_info:
author: your name
description: your role description
company: your company (optional)
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Choose a valid license ID from https://spdx.org - some suggested licenses:
# - BSD-3-Clause (default)
# - MIT
# - GPL-2.0-or-later
# - GPL-3.0-only
# - Apache-2.0
# - CC-BY-4.0
license: license (GPL-2.0-or-later, MIT, etc)
min_ansible_version: 2.1
# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99
galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.
dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

View file

@ -0,0 +1,3 @@
- name: Install ethtool
ansible.builtin.package:
name: ethtool

View file

@ -0,0 +1,19 @@
- name: Setup systemd
when: 'is_docker is not true'
block:
- name: Install systemd files
ansible.builtin.template:
src: '{{ item.src }}'
dest: '/{{ item.path }}'
with_community.general.filetree: '../templates/systemd/'
vars:
interface: "{{ wakeonlan_interface }}"
mode: "{{ wakeonlan_mode }}"
when: item.state == 'file'
- name: Enable service
ansible.builtin.systemd:
name: wol-enable
state: started
enabled: true
daemon_reload: yes

View file

@ -0,0 +1,18 @@
---
# tasks file for wakeonlan
- name: Install and configure wakeonlan
when:
- "wakeonlan_enabled is true"
block:
- name: Gather package facts
package_facts:
manager: auto
- name: Install yggdrasil if not present
when: "'ethtool' not in ansible_facts.packages"
block:
- include_tasks: "install_{{ ansible_os_family }}.yml"
- include_tasks: "install_{{ ansible_service_mgr }}_service.yml"
ignore_errors: true

View file

@ -0,0 +1,9 @@
[Unit]
Description=Enable Wake-up on LAN
[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s {{ interface }} wol {{ mode }}
[Install]
WantedBy=basic.target

View file

@ -0,0 +1,2 @@
localhost

View file

@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- wakeonlan

View file

@ -0,0 +1,2 @@
---
# vars file for wakeonlan