Add roampi (pi) configuration

This commit is contained in:
Adriano Caloiaro 2021-08-31 21:42:21 -07:00
parent c97464d068
commit 13a5970cfb
No known key found for this signature in database
GPG key ID: C2BC56DE73CE3F75
13 changed files with 912 additions and 2 deletions

View file

@ -4,6 +4,16 @@
```bash
$ sudo apt install ansible
$ ansible-playbook desktop.yml --limit localhost -v -K
```
# Machines
## Zenity
ansible-playbook desktop.yml --limit localhost -v -K
## Roampi
### Deploy
ansible-playbook roampi.yml

3
local
View file

@ -3,3 +3,6 @@ localhost ansible_connection=local
[local:vars]
ansible_python_interpreter=/usr/bin/python3
[roampi]
pi@raspberrypi.local

27
roampi.yml Normal file
View file

@ -0,0 +1,27 @@
---
- name: Provision roampi
hosts: roampi
gather_facts: yes
pre_tasks:
- name: What is this?
tags: pre_tasks
debug:
msg: "{{ ansible_distribution }}"
- name: Update all packages
tags: pre_tasks
apt:
upgrade: dist
update_cache: yes
become: true
roles:
- {role: roampi/base, tags: base, become: true}
handlers:
- name: saveiptables
listen: saveiptables
shell: iptables-save > /etc/iptables/rules.v4
become: yes
become_user: root

View file

@ -0,0 +1,5 @@
[Match]
Name=eth0
[Network]
Bridge=br0

View file

@ -0,0 +1,3 @@
[NetDev]
Name=br0
Kind=bridge

View file

@ -0,0 +1,33 @@
# Inform the DHCP server of our hostname for DDNS.
hostname
# Use the hardware address of the interface for the Client ID.
#clientid
# Persist interface configuration when dhcpcd exits.
persistent
# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit
# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu
# A ServerID is required by RFC2131.
require dhcp_server_identifier
# Generate SLAAC address using the Hardware Address of the interface
#slaac hwaddr
# OR generate Stable Private IPv6 Addresses based from the DUID
slaac private
interface br0
interface wlan0
static ip_address=192.168.4.1/24
nohook wpa_supplicant

View file

@ -0,0 +1,4 @@
interface=wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
domain=wlan
address=/gw.wlan/192.168.4.1

View file

@ -0,0 +1,13 @@
country_code=US
interface=wlan0
ssid=roampi
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=RoamWithMe1
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

View file

@ -0,0 +1,708 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file contains the mapping of remote keys to actions within Kodi. -->
<!-- -->
<!-- The format is: -->
<!-- <window> -->
<!-- <device> -->
<!-- <button>action</button> -->
<!-- </device> -->
<!-- </window> -->
<!-- -->
<!-- The <global> section is a fall through - they will only be used if the button is -->
<!-- not used in the current window's section. -->
<!-- -->
<!-- Actions can be built-in functions. -->
<!-- eg <B>ActivateWindow(Music)</B> -->
<!-- would automatically go to Music on the press of the B button. -->
<!-- -->
<!-- An empty action removes the corresponding mapping from default and parent keymaps. -->
<!-- This is different from a "noop" action, which disables a button. -->
<!-- -->
<!-- More documentation on keymaps can be found on http://kodi.wiki/view/keymaps -->
<keymap>
<global>
<remote>
<play>PlayPause</play>
<pause>Pause</pause>
<stop>Stop</stop>
<forward>FastForward</forward>
<reverse>Back</reverse>
<info>Back</info>
<left>Left</left>
<right>Right</right>
<up>Up</up>
<down>Down</down>
<select>Select</select>
<enter>FullScreen</enter>
<pageplus>PageUp</pageplus>
<pageminus>PageDown</pageminus>
<one>Back</one>
<menu>ContextMenu</menu>
<contentsmenu>PreviousMenu</contentsmenu>
<rootmenu>PreviousMenu</rootmenu>
<title>ContextMenu</title>
<info>Info</info>
<skipplus>SkipNext</skipplus>
<skipminus>SkipPrevious</skipminus>
<display>FullScreen</display>
<start>PreviousMenu</start>
<record>Record</record>
<eject>EjectTray()</eject>
<volumeplus>VolumeUp</volumeplus>
<volumeminus>VolumeDown</volumeminus>
<mute>Mute</mute>
<power>ShutDown()</power>
<myvideo>ActivateWindow(Videos)</myvideo>
<mymusic>ActivateWindow(Music)</mymusic>
<mypictures>ActivateWindow(Pictures)</mypictures>
<mytv>ActivateWindow(Videos,TvShows)</mytv>
<guide>ActivateWindow(TVGuide)</guide>
<livetv>ActivateWindow(TVChannels)</livetv>
<liveradio>ActivateWindow(RadioChannels)</liveradio>
<recordedtv>ActivateWindow(TVRecordings)</recordedtv>
<epgsearch>ActivateWindow(TVSearch)</epgsearch>
<red>ActivateWindow(TVChannels)</red>
<green>ActivateWindow(Videos)</green>
<yellow>ActivateWindow(Music)</yellow>
<blue>ActivateWindow(Pictures)</blue>
<zero>Number0</zero>
<two>JumpSMS2</two>
<three>JumpSMS3</three>
<four>JumpSMS4</four>
<five>JumpSMS5</five>
<six>JumpSMS6</six>
<seven>JumpSMS7</seven>
<eight>JumpSMS8</eight>
<nine>JumpSMS9</nine>
<print>Screenshot</print>
</remote>
</global>
<Home>
<remote>
<clear>ActivateWindow(Weather)</clear>
<hash>ActivateWindow(Settings)</hash>
</remote>
</Home>
<TVRecordings>
<remote>
<clear>Delete</clear>
<red>Red</red>
<green>Green</green>
<yellow>Yellow</yellow>
<blue>Blue</blue>
</remote>
</TVRecordings>
<TVTimers>
<remote>
<clear>Delete</clear>
<red>Red</red>
<green>Green</green>
<yellow>Yellow</yellow>
<blue>Blue</blue>
</remote>
</TVTimers>
<TVTimerRules>
<remote>
<clear>Delete</clear>
<red>Red</red>
<green>Green</green>
<yellow>Yellow</yellow>
<blue>Blue</blue>
</remote>
</TVTimerRules>
<RadioRecordings>
<remote>
<clear>Delete</clear>
<red>Red</red>
<green>Green</green>
<yellow>Yellow</yellow>
<blue>Blue</blue>
</remote>
</RadioRecordings>
<RadioTimers>
<remote>
<clear>Delete</clear>
<red>Red</red>
<green>Green</green>
<yellow>Yellow</yellow>
<blue>Blue</blue>
</remote>
</RadioTimers>
<RadioTimerRules>
<remote>
<clear>Delete</clear>
<red>Red</red>
<green>Green</green>
<yellow>Yellow</yellow>
<blue>Blue</blue>
</remote>
</RadioTimerRules>
<FileManager>
<remote>
<clear>Delete</clear>
<zero>Highlight</zero>
<star>Move</star>
<hash>Rename</hash>
</remote>
</FileManager>
<FileBrowser>
<remote>
<zero>Highlight</zero>
</remote>
</FileBrowser>
<MusicPlaylist>
<remote>
<clear>Delete</clear>
<zero>Delete</zero>
</remote>
</MusicPlaylist>
<MusicPlaylistEditor>
<remote>
<zero>Queue</zero>
</remote>
</MusicPlaylistEditor>
<Music>
<remote>
<zero>Queue</zero>
<star>Queue</star>
</remote>
</Music>
<Pictures>
<remote>
<clear>Delete</clear>
</remote>
</Pictures>
<FullscreenVideo>
<remote>
<zero>Number0</zero>
<one>Back</one>
<two>Number2</two>
<three>Number3</three>
<four>Number4</four>
<five>Number5</five>
<six>Number6</six>
<seven>Number7</seven>
<eight>Number8</eight>
<nine>Number9</nine>
<left>StepBack</left>
<right>StepForward</right>
<up>ChapterOrBigStepForward</up>
<down>ChapterOrBigStepBack</down>
<back>Back</back>
<menu>OSD</menu>
<contentsmenu>OSD</contentsmenu>
<rootmenu>OSD</rootmenu>
<start>OSD</start>
<select>OSD</select>
<title>PlayerProcessInfo</title>
<info>Info</info>
<guide>ActivateWindow(TVGuide)</guide>
<teletext>ActivateWindow(Teletext)</teletext>
<subtitle>NextSubtitle</subtitle>
<star>NextSubtitle</star>
<language>AudioNextLanguage</language>
<playlist>Playlist</playlist>
<hash>AudioNextLanguage</hash>
<pageplus>SkipNext</pageplus>
<pageminus>SkipPrevious</pageminus>
</remote>
</FullscreenVideo>
<FullscreenGame>
<remote>
<left>StepBack</left>
<right>StepForward</right>
<back>Back</back>
<menu>OSD</menu>
<contentsmenu>OSD</contentsmenu>
<rootmenu>OSD</rootmenu>
<start>OSD</start>
<select>OSD</select>
<title>CodecInfo</title>
<info>Info</info>
</remote>
</FullscreenGame>
<VideoTimeSeek>
<remote>
<select>Select</select>
<enter>Select</enter>
</remote>
</VideoTimeSeek>
<FullscreenInfo>
<remote>
<title>PlayerProcessInfo</title>
<info>Back</info>
<menu>OSD</menu>
<contentsmenu>OSD</contentsmenu>
<rootmenu>OSD</rootmenu>
</remote>
</FullscreenInfo>
<PlayerControls>
<remote>
<menu>Back</menu>
<contentsmenu>Back</contentsmenu>
<rootmenu>Back</rootmenu>
</remote>
</PlayerControls>
<Visualisation>
<remote>
<left>StepBack</left>
<right>StepForward</right>
<up>SkipNext</up>
<down>SkipPrevious</down>
<pageplus>IncreaseRating</pageplus>
<pageminus>DecreaseRating</pageminus>
<back>Back</back>
<title>PlayerProcessInfo</title>
<select>OSD</select>
<menu>OSD</menu>
<contentsmenu>OSD</contentsmenu>
<rootmenu>OSD</rootmenu>
<start>OSD</start>
<info>Info</info>
<guide>ActivateWindow(TVGuide)</guide>
<playlist>ActivateWindow(PVROSDChannels)</playlist>
<zero>Number0</zero>
<two>Number2</two>
<three>Number3</three>
<four>Number4</four>
<five>Number5</five>
<six>Number6</six>
<seven>Number7</seven>
<eight>Number8</eight>
<nine>Number9</nine>
</remote>
</Visualisation>
<MusicOSD>
<remote>
<menu>Back</menu>
<contentsmenu>Back</contentsmenu>
<rootmenu>Back</rootmenu>
<title>Info</title>
<info>PlayerProcessInfo</info>
</remote>
</MusicOSD>
<VisualisationPresetList>
<remote>
<menu>Back</menu>
<contentsmenu>Back</contentsmenu>
<rootmenu>Back</rootmenu>
</remote>
</VisualisationPresetList>
<SlideShow>
<remote>
<zero>ZoomNormal</zero>
<two>ZoomLevel2</two>
<three>ZoomLevel3</three>
<four>ZoomLevel4</four>
<five>ZoomLevel5</five>
<six>ZoomLevel6</six>
<seven>ZoomLevel7</seven>
<eight>ZoomLevel8</eight>
<nine>ZoomLevel9</nine>
<info>Info</info>
<skipplus>NextPicture</skipplus>
<skipminus>PreviousPicture</skipminus>
<title>Info</title>
<select>Rotate</select>
</remote>
</SlideShow>
<ScreenCalibration>
<remote>
<select>NextCalibration</select>
<zero>ResetCalibration</zero>
<display>NextResolution</display>
<xbox>NextResolution</xbox>
</remote>
</ScreenCalibration>
<ScreenCalibration>
<remote>
<select>NextCalibration</select>
<zero>ResetCalibration</zero>
</remote>
</ScreenCalibration>
<VideoOSD>
<remote>
<menu>Back</menu>
<contentsmenu>Back</contentsmenu>
<rootmenu>Back</rootmenu>
<start>Back</start>
</remote>
</VideoOSD>
<VideoMenu>
<remote>
<menu>OSD</menu>
<contentsmenu>OSD</contentsmenu>
<rootmenu>OSD</rootmenu>
<info>Info</info>
<title>PlayerProcessInfo</title>
<zero>Number0</zero>
<two>Number2</two>
<three>Number3</three>
<four>Number4</four>
<five>Number5</five>
<six>Number6</six>
<seven>Number7</seven>
<eight>Number8</eight>
<nine>Number9</nine>
<play>Select</play>
<pageplus>SkipNext</pageplus>
<pageminus>SkipPrevious</pageminus>
</remote>
</VideoMenu>
<OSDVideoSettings>
<remote>
<menu>Back</menu>
<contentsmenu>Back</contentsmenu>
<rootmenu>Back</rootmenu>
<start>Back</start>
</remote>
</OSDVideoSettings>
<OSDAudioSettings>
<remote>
<menu>Back</menu>
<contentsmenu>Back</contentsmenu>
<rootmenu>Back</rootmenu>
<start>Back</start>
</remote>
</OSDAudioSettings>
<VideoBookmarks>
<remote>
<menu>Back</menu>
<contentsmenu>Back</contentsmenu>
<rootmenu>Back</rootmenu>
<start>Back</start>
<zero>Delete</zero>
</remote>
</VideoBookmarks>
<Videos>
<remote>
<zero>Queue</zero>
<clear>Delete</clear>
</remote>
</Videos>
<VideoPlaylist>
<remote>
<clear>Delete</clear>
<zero>Delete</zero>
</remote>
</VideoPlaylist>
<VirtualKeyboard>
<remote>
<back>Back</back>
<star>Shift</star>
<hash>Symbols</hash>
<zero>Number0</zero>
<two>Number2</two>
<three>Number3</three>
<four>Number4</four>
<five>Number5</five>
<six>Number6</six>
<seven>Number7</seven>
<eight>Number8</eight>
<nine>Number9</nine>
<enter>Enter</enter>
<pageminus>CursorLeft</pageminus>
<pageplus>CursorRight</pageplus>
</remote>
</VirtualKeyboard>
<ContextMenu>
<remote>
<title>Back</title>
</remote>
</ContextMenu>
<Programs>
<remote>
<info>info</info>
</remote>
</Programs>
<NumericInput>
<remote>
<zero>Number0</zero>
<two>Number2</two>
<three>Number3</three>
<four>Number4</four>
<five>Number5</five>
<six>Number6</six>
<seven>Number7</seven>
<eight>Number8</eight>
<nine>Number9</nine>
<enter>Enter</enter>
<back>Back</back>
</remote>
</NumericInput>
<Weather>
<remote>
<back>PreviousMenu</back>
</remote>
</Weather>
<Settings>
<remote>
<back>PreviousMenu</back>
</remote>
</Settings>
<AddonBrowser>
<remote>
</remote>
</AddonBrowser>
<AddonInformation>
<remote>
<back>Close</back>
</remote>
</AddonInformation>
<AddonSettings>
<remote>
<back>Close</back>
</remote>
</AddonSettings>
<TextViewer>
<remote>
<back>Close</back>
</remote>
</TextViewer>
<PlayerSettings>
<remote>
<back>PreviousMenu</back>
</remote>
</PlayerSettings>
<MediaSettings>
<remote>
<back>PreviousMenu</back>
</remote>
</MediaSettings>
<SystemSettings>
<remote>
<back>PreviousMenu</back>
</remote>
</SystemSettings>
<ServiceSettings>
<remote>
<back>PreviousMenu</back>
</remote>
</ServiceSettings>
<InterfaceSettings>
<remote>
<back>PreviousMenu</back>
</remote>
</InterfaceSettings>
<Profiles>
<remote>
<back>PreviousMenu</back>
</remote>
</Profiles>
<systeminfo>
<remote>
<back>PreviousMenu</back>
</remote>
</systeminfo>
<shutdownmenu>
<remote>
<back>PreviousMenu</back>
</remote>
</shutdownmenu>
<submenu>
<remote>
<back>PreviousMenu</back>
</remote>
</submenu>
<MusicInformation>
<remote>
<info>Back</info>
</remote>
</MusicInformation>
<MovieInformation>
<remote>
<info>Back</info>
</remote>
</MovieInformation>
<LockSettings>
<remote>
<menu>Back</menu>
<contentsmenu>Back</contentsmenu>
<rootmenu>Back</rootmenu>
</remote>
</LockSettings>
<ProfileSettings>
<remote>
<menu>Back</menu>
<contentsmenu>Back</contentsmenu>
<rootmenu>Back</rootmenu>
</remote>
</ProfileSettings>
<PictureInfo>
<remote>
<skipplus>NextPicture</skipplus>
<skipminus>PreviousPicture</skipminus>
<info>Back</info>
</remote>
</PictureInfo>
<Teletext>
<remote>
<zero>number0</zero>
<two>number2</two>
<three>number3</three>
<four>number4</four>
<five>number5</five>
<six>number6</six>
<seven>number7</seven>
<eight>number8</eight>
<nine>number9</nine>
<red>Red</red>
<green>Green</green>
<yellow>Yellow</yellow>
<blue>Blue</blue>
<info>Info</info>
<menu>Back</menu>
<contentsmenu>Back</contentsmenu>
<rootmenu>Back</rootmenu>
<start>Back</start>
<teletext>Back</teletext>
</remote>
</Teletext>
<Favourites>
<remote>
<back>Close</back>
</remote>
</Favourites>
<FullscreenLiveTV>
<remote>
<left>StepBack</left>
<right>StepForward</right>
<up>Up</up>
<down>Down</down>
<pageplus>ChannelUp</pageplus>
<pageminus>ChannelDown</pageminus>
</remote>
</FullscreenLiveTV>
<FullscreenRadio>
<remote>
<left>StepBack</left>
<right>StepForward</right>
<up>Up</up>
<down>Down</down>
<pageplus>ChannelUp</pageplus>
<pageminus>ChannelDown</pageminus>
</remote>
</FullscreenRadio>
<FullscreenLiveTvPreview>
<remote>
<select>Select</select>
</remote>
</FullscreenLiveTvPreview>
<FullscreenRadioPreview>
<remote>
<select>Select</select>
</remote>
</FullscreenRadioPreview>
<FullscreenLiveTvInput>
<remote>
<select>Select</select>
</remote>
</FullscreenLiveTvInput>
<FullscreenRadioInput>
<remote>
<select>Select</select>
</remote>
</FullscreenRadioInput>
<PVROSDChannels>
<remote>
<back>Close</back>
<start>Close</start>
<playlist>Close</playlist>
<zero>Number0</zero>
<two>number2</two>
<three>number3</three>
<four>number4</four>
<five>number5</five>
<six>number6</six>
<seven>number7</seven>
<eight>number8</eight>
<nine>number9</nine>
</remote>
</PVROSDChannels>
<PVRChannelGuide>
<remote>
<back>Close</back>
<start>Close</start>
<guide>Close</guide>
<zero>Number0</zero>
<two>number2</two>
<three>number3</three>
<four>number4</four>
<five>number5</five>
<six>number6</six>
<seven>number7</seven>
<eight>number8</eight>
<nine>number9</nine>
</remote>
</PVRChannelGuide>
<TVChannels>
<remote>
<zero>Number0</zero>
<two>number2</two>
<three>number3</three>
<four>number4</four>
<five>number5</five>
<six>number6</six>
<seven>number7</seven>
<eight>number8</eight>
<nine>number9</nine>
</remote>
</TVChannels>
<TVGuide>
<remote>
<zero>Number0</zero>
<two>number2</two>
<three>number3</three>
<four>number4</four>
<five>number5</five>
<six>number6</six>
<seven>number7</seven>
<eight>number8</eight>
<nine>number9</nine>
</remote>
</TVGuide>
<RadioChannels>
<remote>
<zero>Number0</zero>
<two>number2</two>
<three>number3</three>
<four>number4</four>
<five>number5</five>
<six>number6</six>
<seven>number7</seven>
<eight>number8</eight>
<nine>number9</nine>
</remote>
</RadioChannels>
<RadioGuide>
<remote>
<zero>Number0</zero>
<two>number2</two>
<three>number3</three>
<four>number4</four>
<five>number5</five>
<six>number6</six>
<seven>number7</seven>
<eight>number8</eight>
<nine>number9</nine>
</remote>
</RadioGuide>
<PVRSettings>
<remote>
<back>PreviousMenu</back>
</remote>
</PVRSettings>
<Addon>
<remote>
<red>Red</red>
<green>Green</green>
<yellow>Yellow</yellow>
<blue>Blue</blue>
</remote>
</Addon>
<PlayerProcessInfo>
<remote>
<title>PlayerProcessInfo</title>
</remote>
</PlayerProcessInfo>
</keymap>

View file

@ -0,0 +1,2 @@
# Enable IPv4 routing
net.ipv4.ip_forward=1

View file

@ -0,0 +1,86 @@
# vim: set foldmethod=marker nospell:
---
- name: Install packages # {{{
tags: [packages, core]
apt:
name: "{{packages}}"
state: latest
update_cache: true
#- name: Auto-start Kodi
#tags: [kodi]
#ansible.builtin.cron:
#name: "Auto start Kodi on boot"
#special_time: reboot
#job: "kodi-standalone"
#user: pi
- name: Create Kodi keymaps directory
tags: [kodi]
file:
path: /home/pi/.kodi/userdata/keymaps
state: directory
owner: pi
group: pi
recurse: yes
- name: Setup Kodi remote control configuration (for back button)
tags: [kodi]
copy:
src: kodi_remote_keymap.xml
dest: /home/pi/.kodi/userdata/keymaps
mode: 0755
- name: Configure bridge network device
tags: [hostapd]
copy:
src: bridge-br0.netdev
dest: /etc/systemd/network/bridge-br0.netdev
- name: Configure dhcpcd
tags: [network hostapd]
copy:
src: dhcpcd.conf
dest: /etc/dhcpcd.conf
- name: Add eth0 to bridge device
tags: [hostapd]
copy:
src: br0-member-eth0.network
dest: /etc/systemd/network/br0-member-eth0.network
- name: Configure hostapd
tags: [hostapd]
copy:
src: hostapd.conf
dest: /etc/hostapd/hostapd.conf
- name: Unmask/Enable hostapd
tags: [hostapd]
ansible.builtin.systemd:
state: started
masked: no
name: hostapd
#- name: Enable networkd
#tags: [hostapd]
#ansible.builtin.systemd:
#state: started
#name: systemd-networkd
- name: Forward all ipv4
tags: [routing]
copy:
src: routed-ap.conf
dest: /etc/sysctl.d/routed-ap.conf
- name: Iptables nat config
tags: [routing]
iptables:
table: nat
chain: POSTROUTING
jump: MASQUERADE
out_interface: eth0
state: present
notify: saveiptables

View file

@ -0,0 +1,7 @@
packages:
- dnsmasq
- hostapd
- iptables-persistent
- kodi
- vim

View file

@ -0,0 +1,9 @@
$ANSIBLE_VAULT;1.2;AES256;zenity
30343436313536333736376532383966363739346639636236643232616162646463383439333563
6236666239393363663336636262376361313936303636390a643236313161393333386161383462
62316165303632646335663733666661623230353964326234386633326131366163373638393631
3561663138666133350a663432326335303539313362633864663463656262656436633266343261
66623239323965393265636265653136663264353334653365376263633537633062353037333438
39646465346162326163313436343638336636363135653030303031393963396261313830633064
33636437396463643035306436306636363032363537653133353766323164633964346135376162
62653135303736376262