176 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
---
 | 
						|
 | 
						|
 - name: Geth-Hub packages
 | 
						|
   become: yes
 | 
						|
   package:
 | 
						|
     name:
 | 
						|
       - motion
 | 
						|
       - lirc
 | 
						|
       - snmpd
 | 
						|
       - libcamera-apps
 | 
						|
       - ir-keytable
 | 
						|
     state: present
 | 
						|
     update_cache: yes
 | 
						|
 | 
						|
 - name: Copy the SSH key
 | 
						|
   authorized_key:
 | 
						|
     user: "{{ ansible_user_id }}"
 | 
						|
     state: present
 | 
						|
     key: "{{ lookup('file', lookup('env','HOME') + '/.ssh/geth.pub') }}"
 | 
						|
 | 
						|
 - name: Copy the motion config
 | 
						|
   become: yes
 | 
						|
   register: motion_config
 | 
						|
   template:
 | 
						|
     src: "motion.conf.j2"
 | 
						|
     dest: "/etc/motion/motion.conf"
 | 
						|
 | 
						|
 - name: Create motion log folder
 | 
						|
   become: yes
 | 
						|
   file:
 | 
						|
     path: "{{ item }}"
 | 
						|
     state: directory
 | 
						|
     owner: motion
 | 
						|
     group: motion
 | 
						|
     mode: 0750
 | 
						|
   loop:
 | 
						|
     - "/var/log/motion"
 | 
						|
     - "/var/run/motion"
 | 
						|
 | 
						|
 - name: Restart the motion service
 | 
						|
   become: yes
 | 
						|
   when: motion_config.changed and motion_enabled
 | 
						|
   service:
 | 
						|
     name: motion
 | 
						|
     state: started
 | 
						|
     enabled: yes
 | 
						|
 | 
						|
 - name: Allow override of motion service
 | 
						|
   become: yes
 | 
						|
   when: not motion_enabled
 | 
						|
   service:
 | 
						|
     name: motion
 | 
						|
     state: stopped
 | 
						|
     enabled: no
 | 
						|
 | 
						|
 | 
						|
 # Thanks to https://wiki.geekworm.com/Raspberry_Pi_IR_Control_Expansion_Board for instructions setting up lirc
 | 
						|
 - name: Set the dtoverlay
 | 
						|
   become: yes
 | 
						|
   register: dtoverlay
 | 
						|
   when: ansible_distribution_major_version == 11
 | 
						|
   blockinfile:
 | 
						|
     path: "/boot/config.txt"
 | 
						|
     insertafter: EOF
 | 
						|
     marker: "# {mark} Ubiqtorate Managed Block"
 | 
						|
     block: |
 | 
						|
         dtoverlay=gpio-ir,gpio_pin={{ gpio_in_pin | default('18') }}
 | 
						|
         dtoverlay=gpio-ir-tx,gpio_pin={{ gpio_out_pin | default('17') }}
 | 
						|
         start_x=1
 | 
						|
 | 
						|
 - name: Unset camera autodetect
 | 
						|
   become: yes
 | 
						|
   register: camera_autodetect
 | 
						|
   when: ansible_distribution_major_version == 11
 | 
						|
   lineinfile:
 | 
						|
     path: "/boot/config.txt"
 | 
						|
     regexp: "camera_auto_detect"
 | 
						|
     line: "# camera_auto_detect=1"
 | 
						|
 | 
						|
# Thanks to https://wiki.geekworm.com/Raspberry_Pi_IR_Control_Expansion_Board for instructions setting up lirc
 | 
						|
 - name: Set the dtoverlay
 | 
						|
   become: yes
 | 
						|
   register: dtoverlay
 | 
						|
   when: ansible_distribution_major_version == 12
 | 
						|
   blockinfile:
 | 
						|
     path: "/boot/firmware/config.txt"
 | 
						|
     insertafter: EOF
 | 
						|
     marker: "# {mark} Ubiqtorate Managed Block"
 | 
						|
     block: |
 | 
						|
         dtoverlay=gpio-ir,gpio_pin={{ gpio_in_pin | default('18') }}
 | 
						|
         dtoverlay=gpio-ir-tx,gpio_pin={{ gpio_out_pin | default('17') }}
 | 
						|
         start_x=1
 | 
						|
 | 
						|
 - name: Unset camera autodetect
 | 
						|
   become: yes
 | 
						|
   register: camera_autodetect
 | 
						|
   when: ansible_distribution_major_version == 12
 | 
						|
   lineinfile:
 | 
						|
     path: "/boot/firmware/config.txt"
 | 
						|
     regexp: "camera_auto_detect"
 | 
						|
     line: "# camera_auto_detect=1"
 | 
						|
 | 
						|
 - name: Set the dtparam
 | 
						|
   become: yes
 | 
						|
   register: dtparam
 | 
						|
   lineinfile:
 | 
						|
     path: "/boot/firmware/config.txt"
 | 
						|
     path: "/boot/config.txt"
 | 
						|
     regexp: "^dtparam="
 | 
						|
     line: "dtparam=gpio_in_pull={{ gpio_in_pull | default('down') }}"
 | 
						|
 | 
						|
 - name: Copy the modules config
 | 
						|
   become: yes
 | 
						|
   register: modules_config
 | 
						|
   template:
 | 
						|
     src: "modules.j2"
 | 
						|
     dest: "/etc/modules"
 | 
						|
 | 
						|
 - name: Copy the modules config, part 2
 | 
						|
   become: yes
 | 
						|
   register: modules_config_2
 | 
						|
   template:
 | 
						|
     src: "lirc_rpi.conf.j2"
 | 
						|
     dest: "/etc/modprobe.d/lirc_rpi.conf"
 | 
						|
 | 
						|
 - name: Reboot if needed
 | 
						|
   become: yes
 | 
						|
   when: modules_config.changed or dtparam.changed or dtoverlay.changed or modules_config_2.changed or camera_autodetect.changed
 | 
						|
   reboot:
 | 
						|
 | 
						|
 - name: Wait if needed
 | 
						|
   become: yes
 | 
						|
   when: modules_config.changed or dtparam.changed or dtoverlay.changed or modules_config_2.changed
 | 
						|
   wait_for_connection:
 | 
						|
 | 
						|
 - name: Copy lircd supplemental config
 | 
						|
   register: lircd_supp_config
 | 
						|
   become: yes
 | 
						|
   copy:
 | 
						|
     src: "{{ item }}"
 | 
						|
     dest: "/etc/lirc/{{ item }}"
 | 
						|
     force: no
 | 
						|
     # TODO: -- need a switch on the version of the RPi image
 | 
						|
   loop:
 | 
						|
     - hardware.conf
 | 
						|
     - lirc_options.conf
 | 
						|
 | 
						|
 - name: Copy lircd remote config
 | 
						|
   register: lircd_remote_config
 | 
						|
   become: yes
 | 
						|
   copy:
 | 
						|
     src: "lircd.conf/{{ remote }}"
 | 
						|
     dest: /etc/lirc/lircd.conf
 | 
						|
 | 
						|
 - name: Start the services
 | 
						|
   when: lircd_supp_config.changed or lircd_remote_config.changed
 | 
						|
   become: yes
 | 
						|
   service:
 | 
						|
     name: lircd
 | 
						|
     state: restarted
 | 
						|
     enabled: yes
 | 
						|
 | 
						|
 | 
						|
 - name: SNMPD config
 | 
						|
   become: yes
 | 
						|
   template:
 | 
						|
     src: snmpd.conf.j2
 | 
						|
     dest: /etc/snmp/snmpd.conf
 | 
						|
 | 
						|
 - name: SNMPD service
 | 
						|
   become: yes
 | 
						|
   service:
 | 
						|
     name: snmpd
 | 
						|
     state: restarted
 | 
						|
     enabled: yes
 |