forked from CCCHH/ansible-infra
		
	Add ola and foobazdmx role and add playbook for light.z9
This commit is contained in:
		
					parent
					
						
							
								35217737ce
							
						
					
				
			
			
				commit
				
					
						aefdd123a4
					
				
			
		
					 16 changed files with 168 additions and 0 deletions
				
			
		
							
								
								
									
										2
									
								
								ansible.cfg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								ansible.cfg
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
[defaults]
 | 
			
		||||
inventory = ./inventories/thinkcccentre
 | 
			
		||||
							
								
								
									
										3
									
								
								collections/requirements.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								collections/requirements.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
---
 | 
			
		||||
collections:
 | 
			
		||||
 - community.general
 | 
			
		||||
							
								
								
									
										8
									
								
								inventories/thinkcccentre
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								inventories/thinkcccentre
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
all:
 | 
			
		||||
  children:
 | 
			
		||||
    debian_11:
 | 
			
		||||
      hosts:
 | 
			
		||||
        light:
 | 
			
		||||
          ansible_host: light.z9
 | 
			
		||||
        automation:
 | 
			
		||||
          ansible_host: automation.z9
 | 
			
		||||
							
								
								
									
										10
									
								
								playbooks/deploy_light.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								playbooks/deploy_light.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
---
 | 
			
		||||
- name: Deploy ola and foobazdmx on light.z9
 | 
			
		||||
  become: true
 | 
			
		||||
  hosts: light
 | 
			
		||||
  roles:
 | 
			
		||||
    - ola
 | 
			
		||||
    - foobazdmx
 | 
			
		||||
  vars:
 | 
			
		||||
    ola__enable_ftdi: true
 | 
			
		||||
    foobazdmx__art_net_host: localhost
 | 
			
		||||
							
								
								
									
										18
									
								
								playbooks/roles/distribution_check/meta/argument_specs.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								playbooks/roles/distribution_check/meta/argument_specs.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
argument_specs:
 | 
			
		||||
  main:
 | 
			
		||||
    options:
 | 
			
		||||
      distribution_check__supported_distributions:
 | 
			
		||||
        description: A spec specifying the supported distribution.
 | 
			
		||||
        type: list
 | 
			
		||||
        elements: dict
 | 
			
		||||
        required: true
 | 
			
		||||
        options:
 | 
			
		||||
          name:
 | 
			
		||||
            description: The name of the supported distribution.
 | 
			
		||||
            type: str
 | 
			
		||||
            required: true
 | 
			
		||||
          versions:
 | 
			
		||||
            description: The supported versions of the supported distribution.
 | 
			
		||||
            type: list
 | 
			
		||||
            elements: str
 | 
			
		||||
            required: true
 | 
			
		||||
							
								
								
									
										20
									
								
								playbooks/roles/distribution_check/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								playbooks/roles/distribution_check/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
- name: Set fact holding list of supported distribution names
 | 
			
		||||
  ansible.builtin.set_fact:
 | 
			
		||||
    distribution_check__supported_distribution_names: "{{ distribution_check__supported_distributions | community.general.json_query('[].name') }}"
 | 
			
		||||
 | 
			
		||||
- name: Fail on unsupported distribution (name)
 | 
			
		||||
  ansible.builtin.fail:
 | 
			
		||||
    msg: The hosts distribution (name) isn't supported.
 | 
			
		||||
  when: ansible_facts.distribution not in distribution_check__supported_distribution_names
 | 
			
		||||
 | 
			
		||||
- name: Set fact holding list of supported distribution versions
 | 
			
		||||
  ansible.builtin.set_fact:
 | 
			
		||||
    distribution_check__supported_distribution_versions: "{{ distribution_check__supported_distributions
 | 
			
		||||
      | community.general.json_query(distribution_check__supported_distribution_versions_query) }}"
 | 
			
		||||
  vars:
 | 
			
		||||
    distribution_check__supported_distribution_versions_query: "[?name=='{{ ansible_facts.distribution }}'].versions | [].to_string(@)"
 | 
			
		||||
 | 
			
		||||
- name: Fail on unsupported distribution version
 | 
			
		||||
  ansible.builtin.fail:
 | 
			
		||||
    msg: The hosts distribution version isn't supported.
 | 
			
		||||
  when: ansible_facts.distribution_version not in distribution_check__supported_distribution_versions
 | 
			
		||||
							
								
								
									
										5
									
								
								playbooks/roles/foobazdmx/handlers/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								playbooks/roles/foobazdmx/handlers/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
- name: Restart foobazdmx
 | 
			
		||||
  ansible.builtin.systemd:
 | 
			
		||||
    service: foobazdmx.service
 | 
			
		||||
    state: restarted
 | 
			
		||||
    daemon-reload: true
 | 
			
		||||
							
								
								
									
										8
									
								
								playbooks/roles/foobazdmx/meta/argument_specs.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								playbooks/roles/foobazdmx/meta/argument_specs.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
---
 | 
			
		||||
argument_specs:
 | 
			
		||||
  main:
 | 
			
		||||
    options:
 | 
			
		||||
      foobazdmx__art_net_host:
 | 
			
		||||
        description: IP oder hostname of the Art-Net server
 | 
			
		||||
        type: str
 | 
			
		||||
        required: true
 | 
			
		||||
							
								
								
									
										8
									
								
								playbooks/roles/foobazdmx/meta/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								playbooks/roles/foobazdmx/meta/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
---
 | 
			
		||||
dependencies:
 | 
			
		||||
  - role: distribution_check
 | 
			
		||||
    vars:
 | 
			
		||||
      distribution_check__supported_distributions:
 | 
			
		||||
        - name: Debian
 | 
			
		||||
          versions:
 | 
			
		||||
            - "11"
 | 
			
		||||
							
								
								
									
										38
									
								
								playbooks/roles/foobazdmx/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								playbooks/roles/foobazdmx/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,38 @@
 | 
			
		|||
- name: Ensure apt dependencies are installed
 | 
			
		||||
  ansible.builtin.apt:
 | 
			
		||||
    name:
 | 
			
		||||
      - acl
 | 
			
		||||
      - git
 | 
			
		||||
      - python3
 | 
			
		||||
      - python3-pip
 | 
			
		||||
      - python3-setuptools
 | 
			
		||||
- name: Ensure python peotry is installed
 | 
			
		||||
  ansible.builtin.pip:
 | 
			
		||||
    name: poetry
 | 
			
		||||
- name: Ensure foobazdmx user exists
 | 
			
		||||
  ansible.builtin.user:
 | 
			
		||||
    name: foobazdmx
 | 
			
		||||
- name: Install foobazdmx
 | 
			
		||||
  notify: Restart foobazdmx
 | 
			
		||||
  block:
 | 
			
		||||
    - name: Clone foobazdmx repository
 | 
			
		||||
      ansible.builtin.git:
 | 
			
		||||
        repo: https://thinkcccentre-ansible:glpat-VegCzyjuDjB19SggAqm1@gitlab.hamburg.ccc.de/yuri/foobazdmx.git
 | 
			
		||||
        dest: /opt/foobazdmx
 | 
			
		||||
        version: f0cbb639e8574c48b777ffe5a30db4298daf54c7
 | 
			
		||||
    - name: Install python dependencies
 | 
			
		||||
      become_user: foobazdmx
 | 
			
		||||
      ansible.builtin.command:
 | 
			
		||||
        cmd: poetry install
 | 
			
		||||
        chdir: /opt/foobazdmx
 | 
			
		||||
      changed_when: false
 | 
			
		||||
    - name: Generate foobazdmx service file
 | 
			
		||||
      ansible.builtin.template:
 | 
			
		||||
        src: foobazdmx.service.j2
 | 
			
		||||
        dest: /etc/systemd/system/foobazdmx.service
 | 
			
		||||
        mode: "0755"
 | 
			
		||||
    - name: Enable and start foobazdmx service
 | 
			
		||||
      ansible.builtin.systemd:
 | 
			
		||||
        service: foobazdmx.service
 | 
			
		||||
        state: started
 | 
			
		||||
        enabled: true
 | 
			
		||||
							
								
								
									
										10
									
								
								playbooks/roles/foobazdmx/templates/foobazdmx.service.j2
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								playbooks/roles/foobazdmx/templates/foobazdmx.service.j2
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
[Unit]
 | 
			
		||||
Description=Foobaz DMX
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
ExecStart=poetry run python foobaz.py -a {{ foobazdmx__art_net_host }} -r big
 | 
			
		||||
WorkingDirectory=/opt/foobazdmx
 | 
			
		||||
User=foobazdmx
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
							
								
								
									
										5
									
								
								playbooks/roles/ola/handlers/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								playbooks/roles/ola/handlers/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
- name: Restart olad
 | 
			
		||||
  ansible.builtin.systemd:
 | 
			
		||||
    service: olad.service
 | 
			
		||||
    state: restarted
 | 
			
		||||
    daemon-reload: true
 | 
			
		||||
							
								
								
									
										8
									
								
								playbooks/roles/ola/meta/argument_specs.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								playbooks/roles/ola/meta/argument_specs.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
---
 | 
			
		||||
argument_specs:
 | 
			
		||||
  main:
 | 
			
		||||
    options:
 | 
			
		||||
      ola__enable_ftdi:
 | 
			
		||||
        description: Enable FTDI USB DMX support
 | 
			
		||||
        type: bool
 | 
			
		||||
        required: true
 | 
			
		||||
							
								
								
									
										8
									
								
								playbooks/roles/ola/meta/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								playbooks/roles/ola/meta/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
---
 | 
			
		||||
dependencies:
 | 
			
		||||
  - role: distribution_check
 | 
			
		||||
    vars:
 | 
			
		||||
      distribution_check__supported_distributions:
 | 
			
		||||
        - name: Debian
 | 
			
		||||
          versions:
 | 
			
		||||
            - "11"
 | 
			
		||||
							
								
								
									
										15
									
								
								playbooks/roles/ola/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								playbooks/roles/ola/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
- name: Install ola
 | 
			
		||||
  ansible.builtin.apt:
 | 
			
		||||
    name: ola
 | 
			
		||||
- name: Generate ola-ftdidmx.conf
 | 
			
		||||
  ansible.builtin.template:
 | 
			
		||||
    src: ola-ftdidmx.conf.j2
 | 
			
		||||
    dest: /etc/ola/ola-ftdidmx.conf
 | 
			
		||||
    mode: "0664"
 | 
			
		||||
    owner: olad
 | 
			
		||||
    group: olad
 | 
			
		||||
- name: Enable and start ola service
 | 
			
		||||
  ansible.builtin.systemd:
 | 
			
		||||
    name: olad.service
 | 
			
		||||
    state: started
 | 
			
		||||
    enabled: true
 | 
			
		||||
							
								
								
									
										2
									
								
								playbooks/roles/ola/templates/ola-ftdidmx.conf.j2
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								playbooks/roles/ola/templates/ola-ftdidmx.conf.j2
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
enabled = {{ ola__enable_ftdi | string | lower }}
 | 
			
		||||
frequency = 30
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue