put custom fact collection in own role "collect-facts"
so it is not necessary to run yavdr-common every time we use an autoinstall-* role
This commit is contained in:
parent
3e8e077164
commit
052b46ee34
1129
Manual.html
1129
Manual.html
File diff suppressed because it is too large
Load Diff
145
Manual.org
145
Manual.org
@ -166,6 +166,7 @@ The ~yavdr07.yml~ playbook sets up a fully-featured yaVDR installation:
|
|||||||
become: true
|
become: true
|
||||||
roles:
|
roles:
|
||||||
- yavdr-common # install and configure the basic system
|
- yavdr-common # install and configure the basic system
|
||||||
|
- collect-facts # query system facts
|
||||||
- autoinstall-ubuntu-drivers # use ubuntu-drivers to install proprietary dirvers
|
- autoinstall-ubuntu-drivers # use ubuntu-drivers to install proprietary dirvers
|
||||||
# (e.g. nvidia, virtualbox)
|
# (e.g. nvidia, virtualbox)
|
||||||
# - nvidia-387 # install very recent nvidia-387 from ppa:graphics-drivers/ppa
|
# - nvidia-387 # install very recent nvidia-387 from ppa:graphics-drivers/ppa
|
||||||
@ -207,6 +208,7 @@ For a headless server installation ~yavdr07-headless.yml~ is a good choice
|
|||||||
become: true
|
become: true
|
||||||
roles:
|
roles:
|
||||||
- yavdr-common
|
- yavdr-common
|
||||||
|
- collect-facts # query system facts
|
||||||
- vdr
|
- vdr
|
||||||
- yavdr-network
|
- yavdr-network
|
||||||
- samba-server
|
- samba-server
|
||||||
@ -413,9 +415,20 @@ vdr:
|
|||||||
*** tasks
|
*** tasks
|
||||||
yavdr-common executes the following tasks:
|
yavdr-common executes the following tasks:
|
||||||
**** main.yml
|
**** main.yml
|
||||||
|
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/main.yml :mkdirp yes :padline no
|
||||||
|
---
|
||||||
|
# file: roles/yavdr-common/tasks/main.yml
|
||||||
|
|
||||||
|
- name: basic installation
|
||||||
|
block:
|
||||||
|
- import_tasks: configure_apt.yml
|
||||||
|
- import_tasks: configure_system.yml
|
||||||
|
- import_tasks: create_directories.yml
|
||||||
|
tags: [install]
|
||||||
|
#+END_SRC
|
||||||
***** Disable default installation of recommended packages
|
***** Disable default installation of recommended packages
|
||||||
This task prevents apt to automatically install all recommended dependencies for packages:
|
This task prevents apt to automatically install all recommended dependencies for packages:
|
||||||
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/main.yml :mkdirp yes :padline no
|
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/configure_apt.yml :mkdirp yes :padline no
|
||||||
---
|
---
|
||||||
|
|
||||||
- name: apt | prevent automatic installation of recommended packages
|
- name: apt | prevent automatic installation of recommended packages
|
||||||
@ -424,8 +437,22 @@ yavdr-common executes the following tasks:
|
|||||||
dest: /etc/apt/apt.conf.d/90norecommends
|
dest: /etc/apt/apt.conf.d/90norecommends
|
||||||
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
***** Set up package repositories
|
||||||
|
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/configure_apt.yml :mkdirp yes
|
||||||
|
- name: add PPAs
|
||||||
|
apt_repository:
|
||||||
|
repo: '{{ item }}'
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
|
with_items: '{{ repositories }}'
|
||||||
|
|
||||||
|
- name: run apt-get dist-upgrade
|
||||||
|
apt:
|
||||||
|
upgrade: dist
|
||||||
|
update_cache: yes
|
||||||
|
#+END_SRC
|
||||||
***** Use bash instead of dash
|
***** Use bash instead of dash
|
||||||
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/main.yml :mkdirp yes
|
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/configure_system.yml :mkdirp yes
|
||||||
- name: use bash instead of dash
|
- name: use bash instead of dash
|
||||||
shell: |
|
shell: |
|
||||||
echo "set dash/sh false" | debconf-communicate
|
echo "set dash/sh false" | debconf-communicate
|
||||||
@ -433,7 +460,7 @@ yavdr-common executes the following tasks:
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
***** create user vdr
|
***** create user vdr
|
||||||
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/main.yml :exports none :mkdirp yes
|
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/configure_system.yml :exports none :mkdirp yes
|
||||||
- name: create vdr group
|
- name: create vdr group
|
||||||
group:
|
group:
|
||||||
gid: '{{ vdr.gid }}'
|
gid: '{{ vdr.gid }}'
|
||||||
@ -452,7 +479,7 @@ yavdr-common executes the following tasks:
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
***** Disable release-upgrade notifications
|
***** Disable release-upgrade notifications
|
||||||
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/main.yml :mkdirp yes
|
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/configure_system.yml :mkdirp yes
|
||||||
- name: disable release-upgrade notifications
|
- name: disable release-upgrade notifications
|
||||||
lineinfile:
|
lineinfile:
|
||||||
dest: /etc/update-manager/release-upgrades
|
dest: /etc/update-manager/release-upgrades
|
||||||
@ -461,22 +488,8 @@ yavdr-common executes the following tasks:
|
|||||||
regexp: '^(Prompt=).*$'
|
regexp: '^(Prompt=).*$'
|
||||||
line: '\1never'
|
line: '\1never'
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
***** Set up package repositories
|
|
||||||
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/main.yml :mkdirp yes
|
|
||||||
- name: add PPAs
|
|
||||||
apt_repository:
|
|
||||||
repo: '{{ item }}'
|
|
||||||
state: present
|
|
||||||
update_cache: yes
|
|
||||||
with_items: '{{ repositories }}'
|
|
||||||
|
|
||||||
- name: run apt-get dist-upgrade
|
|
||||||
apt:
|
|
||||||
upgrade: dist
|
|
||||||
update_cache: yes
|
|
||||||
#+END_SRC
|
|
||||||
***** Install essential packages
|
***** Install essential packages
|
||||||
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/main.yml :mkdirp yes
|
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/configure_system.yml :mkdirp yes
|
||||||
- name: apt | install basic packages
|
- name: apt | install basic packages
|
||||||
apt:
|
apt:
|
||||||
name: '{{ item }}'
|
name: '{{ item }}'
|
||||||
@ -504,7 +517,7 @@ yavdr-common executes the following tasks:
|
|||||||
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
***** Install additional packages (user defined)
|
***** Install additional packages (user defined)
|
||||||
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/main.yml
|
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/configure_system.yml
|
||||||
- name: apt | install extra packages
|
- name: apt | install extra packages
|
||||||
apt:
|
apt:
|
||||||
name: '{{ item }}'
|
name: '{{ item }}'
|
||||||
@ -513,26 +526,8 @@ yavdr-common executes the following tasks:
|
|||||||
with_items:
|
with_items:
|
||||||
'{{ extra_packages }}'
|
'{{ extra_packages }}'
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
***** Gather facts with custom modules
|
|
||||||
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/main.yml :mkdirp yes
|
|
||||||
- name: get information about usb and pci hardware and loaded kernel modules
|
|
||||||
hardware_facts:
|
|
||||||
usb: True
|
|
||||||
pci: True
|
|
||||||
modules: True
|
|
||||||
gpus: True
|
|
||||||
|
|
||||||
- debug:
|
|
||||||
var: '{{ item }}'
|
|
||||||
verbosity: 1
|
|
||||||
with_items:
|
|
||||||
- usb
|
|
||||||
- pci
|
|
||||||
- gpus
|
|
||||||
- modules
|
|
||||||
#+END_SRC
|
|
||||||
***** create media directories
|
***** create media directories
|
||||||
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/main.yml :exports none :mkdirp yes
|
#+BEGIN_SRC yaml :tangle roles/yavdr-common/tasks/create_directories.yml :exports none :mkdirp yes
|
||||||
- name: create media directories
|
- name: create media directories
|
||||||
file:
|
file:
|
||||||
dest: '{{ item.value }}'
|
dest: '{{ item.value }}'
|
||||||
@ -549,6 +544,28 @@ yavdr-common executes the following tasks:
|
|||||||
APT::Install-Recommends "0";
|
APT::Install-Recommends "0";
|
||||||
APT::Install-Suggests "0";
|
APT::Install-Suggests "0";
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
** collect facts about the system with custom modules
|
||||||
|
*** tasks
|
||||||
|
***** main.yml
|
||||||
|
#+BEGIN_SRC yaml :tangle roles/collect-facts/tasks/main.yml :mkdirp yes
|
||||||
|
- name: get information about usb and pci hardware and loaded kernel modules
|
||||||
|
hardware_facts:
|
||||||
|
usb: True
|
||||||
|
pci: True
|
||||||
|
modules: True
|
||||||
|
gpus: True
|
||||||
|
acpi_power_modes: True
|
||||||
|
|
||||||
|
- debug:
|
||||||
|
var: '{{ item }}'
|
||||||
|
verbosity: 1
|
||||||
|
with_items:
|
||||||
|
- usb
|
||||||
|
- pci
|
||||||
|
- gpus
|
||||||
|
- modules
|
||||||
|
- acpi_power_modes
|
||||||
|
#+END_SRC
|
||||||
** vdr
|
** vdr
|
||||||
*** tasks
|
*** tasks
|
||||||
**** install the basic vdr packages
|
**** install the basic vdr packages
|
||||||
@ -3226,6 +3243,11 @@ If a Sat>IP Server responds to a discovery request, the package vdr-plugin-satip
|
|||||||
when: '"0070:4000" in pci or "4444:0016" in pci'
|
when: '"0070:4000" in pci or "4444:0016" in pci'
|
||||||
notify: [ 'Restart VDR' ]
|
notify: [ 'Restart VDR' ]
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
** autoinstall-dvbsky-firmware
|
||||||
|
*** defaults
|
||||||
|
#+INCLUDE: "roles/autoinstall-dvbsky-firmware/defaults/main.yml" src yaml
|
||||||
|
*** tasks
|
||||||
|
#+INCLUDE: "roles/autoinstall-dvbsky-firmware/tasks/main.yml" src yaml
|
||||||
** TODO autoinstall-dvbhddevice
|
** TODO autoinstall-dvbhddevice
|
||||||
Problem: woher kommt der Treiber (AFAIK noch nicht im Kernel)? Die Firmware sollte in yavdr-firmware stecken
|
Problem: woher kommt der Treiber (AFAIK noch nicht im Kernel)? Die Firmware sollte in yavdr-firmware stecken
|
||||||
*** tasks
|
*** tasks
|
||||||
@ -3253,7 +3275,7 @@ Problem: woher kommt der Treiber (AFAIK noch nicht im Kernel)? Die Firmware soll
|
|||||||
notify: [ 'Restart VDR' ]
|
notify: [ 'Restart VDR' ]
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
** autoinstall-hardware-irmp
|
** autoinstall-hardware-irmp
|
||||||
*** tasks
|
*** sasks
|
||||||
#+BEGIN_SRC yaml :tangle roles/autoinstall-hardware-irmp/tasks/main.yml :padline no
|
#+BEGIN_SRC yaml :tangle roles/autoinstall-hardware-irmp/tasks/main.yml :padline no
|
||||||
---
|
---
|
||||||
# file roles/autoinstall-hardware-irmp/tasks/main.yml
|
# file roles/autoinstall-hardware-irmp/tasks/main.yml
|
||||||
@ -3634,6 +3656,12 @@ DOCUMENTATION = '''
|
|||||||
default: True
|
default: True
|
||||||
description:
|
description:
|
||||||
- return a list of devices of the pci gpu class (0x030000)
|
- return a list of devices of the pci gpu class (0x030000)
|
||||||
|
|
||||||
|
acpi_power_modes:
|
||||||
|
required: False
|
||||||
|
default: True
|
||||||
|
description:
|
||||||
|
- return a list of supported acpi power saving modes
|
||||||
notes:
|
notes:
|
||||||
- requres python-pyusb and python-kmodpy
|
- requres python-pyusb and python-kmodpy
|
||||||
requirements: [ ]
|
requirements: [ ]
|
||||||
@ -3646,6 +3674,7 @@ EXAMPLES = '''
|
|||||||
usb: True
|
usb: True
|
||||||
pci: True
|
pci: True
|
||||||
modules: True
|
modules: True
|
||||||
|
acpi_power_modes: True
|
||||||
- debug:
|
- debug:
|
||||||
var: usb
|
var: usb
|
||||||
- debug
|
- debug
|
||||||
@ -3700,11 +3729,21 @@ def format_gpu_device_list(iterator):
|
|||||||
"VendorID": d.idVendor, "ProductID": d.idProduct}
|
"VendorID": d.idVendor, "ProductID": d.idProduct}
|
||||||
return [entry for entry in get_entries(iterator)]
|
return [entry for entry in get_entries(iterator)]
|
||||||
|
|
||||||
|
def list_acpi_power_modes():
|
||||||
|
acpi_power_modes = []
|
||||||
|
try:
|
||||||
|
with open('/sys/power/state') as f:
|
||||||
|
acpi_power_modes = [l for l in f.readline().split()]
|
||||||
|
except IOError:
|
||||||
|
pass
|
||||||
|
return acpi_power_modes
|
||||||
|
|
||||||
arg_specs = {
|
arg_specs = {
|
||||||
'usb': dict(default=True, type='bool', required=False),
|
'usb': dict(default=True, type='bool', required=False),
|
||||||
'pci': dict(default=True, type='bool', required=False),
|
'pci': dict(default=True, type='bool', required=False),
|
||||||
'modules': dict(default=True, type='bool', required=False),
|
'modules': dict(default=True, type='bool', required=False),
|
||||||
'gpus': dict(default=True, type='bool', required=False),
|
'gpus': dict(default=True, type='bool', required=False),
|
||||||
|
'acpi_power_modes': dict(default=True, type='bool', required=False),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3714,24 +3753,32 @@ def main():
|
|||||||
collect_pci = module.params['pci']
|
collect_pci = module.params['pci']
|
||||||
collect_modules = module.params['modules']
|
collect_modules = module.params['modules']
|
||||||
collect_gpus = module.params['gpus']
|
collect_gpus = module.params['gpus']
|
||||||
|
collect_acpi_power_modes = module.params['acpi_power_modes']
|
||||||
|
|
||||||
|
usb_devices = []
|
||||||
|
pci_devices = []
|
||||||
|
modules = []
|
||||||
|
gpus = []
|
||||||
|
acpi_power_modes = []
|
||||||
|
|
||||||
if collect_usb:
|
if collect_usb:
|
||||||
usb_devices = format_device_list(usb.core.find(find_all=True))
|
usb_devices = format_device_list(usb.core.find(find_all=True))
|
||||||
else:
|
|
||||||
usb_device = []
|
|
||||||
if collect_pci:
|
if collect_pci:
|
||||||
pci_devices = format_device_list(get_pci_devices())
|
pci_devices = format_device_list(get_pci_devices())
|
||||||
else:
|
|
||||||
pci_devices = []
|
|
||||||
if collect_modules:
|
if collect_modules:
|
||||||
k = kmodpy.Kmod()
|
k = kmodpy.Kmod()
|
||||||
modules = [m[0] for m in k.loaded()]
|
modules = [m[0] for m in k.loaded()]
|
||||||
else:
|
|
||||||
modules = []
|
|
||||||
if collect_gpus:
|
if collect_gpus:
|
||||||
gpus = format_gpu_device_list(get_pci_devices())
|
gpus = format_gpu_device_list(get_pci_devices())
|
||||||
else:
|
|
||||||
gpus = []
|
if collect_acpi_power_modes:
|
||||||
data = {'usb': usb_devices, 'pci': pci_devices, 'modules': modules, 'gpus': gpus}
|
acpi_power_modes = list_acpi_power_modes()
|
||||||
|
|
||||||
|
data = {'usb': usb_devices, 'pci': pci_devices, 'modules': modules, 'gpus': gpus,
|
||||||
|
'acpi_power_modes': acpi_power_modes}
|
||||||
module.exit_json(changed=False, ansible_facts=data, msg=data)
|
module.exit_json(changed=False, ansible_facts=data, msg=data)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
---
|
---
|
||||||
dependencies:
|
dependencies:
|
||||||
- { role: yavdr-common }
|
- { role: collect-facts }
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
pci: True
|
pci: True
|
||||||
modules: True
|
modules: True
|
||||||
gpus: True
|
gpus: True
|
||||||
|
acpi_power_modes: True
|
||||||
|
|
||||||
- debug:
|
- debug:
|
||||||
var: '{{ item }}'
|
var: '{{ item }}'
|
||||||
@ -13,3 +14,4 @@
|
|||||||
- pci
|
- pci
|
||||||
- gpus
|
- gpus
|
||||||
- modules
|
- modules
|
||||||
|
- acpi_power_modes
|
@ -1,97 +1,12 @@
|
|||||||
---
|
---
|
||||||
|
# file: roles/yavdr-common/tasks/main.yml
|
||||||
|
|
||||||
- name: apt | prevent automatic installation of recommended packages
|
- name: basic installation
|
||||||
template:
|
block:
|
||||||
src: templates/90-norecommends.j2
|
- import_tasks: configure_apt.yml
|
||||||
dest: /etc/apt/apt.conf.d/90norecommends
|
- import_tasks: configure_system.yml
|
||||||
- name: use bash instead of dash
|
- import_tasks: create_directories.yml
|
||||||
shell: |
|
tags: [install]
|
||||||
echo "set dash/sh false" | debconf-communicate
|
|
||||||
dpkg-reconfigure -f noninteractive dash
|
|
||||||
- name: create vdr group
|
|
||||||
group:
|
|
||||||
gid: '{{ vdr.gid }}'
|
|
||||||
state: present
|
|
||||||
name: '{{ vdr.group }}'
|
|
||||||
|
|
||||||
- name: create vdr user
|
- import_tasks: gather_facts.yml
|
||||||
user:
|
tags: [install, autodetect]
|
||||||
name: '{{ vdr.user }}'
|
|
||||||
group: '{{ vdr.group }}'
|
|
||||||
uid: '{{ vdr.uid }}'
|
|
||||||
home: '{{ vdr.home }}'
|
|
||||||
shell: '/bin/bash'
|
|
||||||
state: present
|
|
||||||
append: true
|
|
||||||
- name: disable release-upgrade notifications
|
|
||||||
lineinfile:
|
|
||||||
dest: /etc/update-manager/release-upgrades
|
|
||||||
backrefs: yes
|
|
||||||
state: present
|
|
||||||
regexp: '^(Prompt=).*$'
|
|
||||||
line: '\1never'
|
|
||||||
- name: add PPAs
|
|
||||||
apt_repository:
|
|
||||||
repo: '{{ item }}'
|
|
||||||
state: present
|
|
||||||
update_cache: yes
|
|
||||||
with_items: '{{ repositories }}'
|
|
||||||
|
|
||||||
- name: run apt-get dist-upgrade
|
|
||||||
apt:
|
|
||||||
upgrade: dist
|
|
||||||
update_cache: yes
|
|
||||||
- name: apt | install basic packages
|
|
||||||
apt:
|
|
||||||
name: '{{ item }}'
|
|
||||||
state: present
|
|
||||||
install_recommends: no
|
|
||||||
with_items:
|
|
||||||
- anacron
|
|
||||||
- acl
|
|
||||||
- at
|
|
||||||
- bash-completion
|
|
||||||
#- biosdevname # caution: may change device names after a minimal installation!
|
|
||||||
- debconf-utils
|
|
||||||
- linux-firmware
|
|
||||||
- psmisc
|
|
||||||
- python-kmodpy
|
|
||||||
- python-requests
|
|
||||||
- python-usb
|
|
||||||
- python3-usb
|
|
||||||
- software-properties-common
|
|
||||||
- ssh
|
|
||||||
- wget
|
|
||||||
- wpasupplicant
|
|
||||||
- usbutils
|
|
||||||
- xfsprogs
|
|
||||||
- name: apt | install extra packages
|
|
||||||
apt:
|
|
||||||
name: '{{ item }}'
|
|
||||||
state: present
|
|
||||||
install_recommends: no
|
|
||||||
with_items:
|
|
||||||
'{{ extra_packages }}'
|
|
||||||
- name: get information about usb and pci hardware and loaded kernel modules
|
|
||||||
hardware_facts:
|
|
||||||
usb: True
|
|
||||||
pci: True
|
|
||||||
modules: True
|
|
||||||
gpus: True
|
|
||||||
|
|
||||||
- debug:
|
|
||||||
var: '{{ item }}'
|
|
||||||
verbosity: 1
|
|
||||||
with_items:
|
|
||||||
- usb
|
|
||||||
- pci
|
|
||||||
- gpus
|
|
||||||
- modules
|
|
||||||
- name: create media directories
|
|
||||||
file:
|
|
||||||
dest: '{{ item.value }}'
|
|
||||||
owner: '{{ vdr.user }}'
|
|
||||||
group: '{{ vdr.group }}'
|
|
||||||
state: directory
|
|
||||||
mode: '0777'
|
|
||||||
with_dict: '{{ media_dirs }}'
|
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
become: true
|
become: true
|
||||||
roles:
|
roles:
|
||||||
- yavdr-common
|
- yavdr-common
|
||||||
|
- collect-facts # query system facts
|
||||||
- vdr
|
- vdr
|
||||||
- yavdr-network
|
- yavdr-network
|
||||||
- samba-server
|
- samba-server
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
become: true
|
become: true
|
||||||
roles:
|
roles:
|
||||||
- yavdr-common # install and configure the basic system
|
- yavdr-common # install and configure the basic system
|
||||||
|
- collect-facts # query system facts
|
||||||
- autoinstall-ubuntu-drivers # use ubuntu-drivers to install proprietary dirvers
|
- autoinstall-ubuntu-drivers # use ubuntu-drivers to install proprietary dirvers
|
||||||
# (e.g. nvidia, virtualbox)
|
# (e.g. nvidia, virtualbox)
|
||||||
# - nvidia-387 # install very recent nvidia-387 from ppa:graphics-drivers/ppa
|
# - nvidia-387 # install very recent nvidia-387 from ppa:graphics-drivers/ppa
|
||||||
|
Loading…
Reference in New Issue
Block a user