Evolution of deployment
This commit is contained in:
parent
8392a3fe46
commit
69e2bcc966
@ -1,4 +1,14 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
curl -s https://raw.githubusercontent.com/archlinux/svntogit-packages/packages/pacman-mirrorlist/trunk/mirrorlist | awk '/^## United States$/{f=1; next}f==0{next}/^$/{exit}{print substr($0, 1);}' | sed 's/^#Server/Server/' > /tmp/candidates
|
curl -s https://raw.githubusercontent.com/archlinux/svntogit-packages/packages/pacman-mirrorlist/trunk/mirrorlist | awk '/^## United States$/{f=1; next}f==0{next}/^$/{exit}{print substr($0, 1);}' | sed 's/^#Server/Server/' > /tmp/candidates
|
||||||
rankmirrors -n 6 /tmp/candidates > ../roles/ShadowArch/files/mirrorlist
|
cat <<EOM > ../roles/Maat/files/pacoloco.yaml
|
||||||
|
port: 9129
|
||||||
|
download_timeout: 3600 # download will timeout after 3600 seconds
|
||||||
|
cache_dir: /var/cache/pacoloco
|
||||||
|
purge_files_after: 360000 # 360000 seconds or 100 hours, 0 to disable
|
||||||
|
repos:
|
||||||
|
archlinux:
|
||||||
|
urls:
|
||||||
|
$(rankmirrors -n 6 /tmp/candidates | sed 's/^Server = / - /' | grep -v generated\ by | cut -f 1 -d \$)
|
||||||
|
user_agent: Pacoloco
|
||||||
|
EOM
|
||||||
|
@ -12,6 +12,7 @@ all:
|
|||||||
dns: "10.0.1.2"
|
dns: "10.0.1.2"
|
||||||
logserver: "10.0.1.16"
|
logserver: "10.0.1.16"
|
||||||
webfront: "10.0.1.3"
|
webfront: "10.0.1.3"
|
||||||
|
mirroruri: "http://Maat.MSN0.AniNIX.net:9129/repo/archlinux/$repo/os/$arch"
|
||||||
# Standards
|
# Standards
|
||||||
daemon_shell: /sbin/nologin
|
daemon_shell: /sbin/nologin
|
||||||
user_shell: /bin/bash
|
user_shell: /bin/bash
|
||||||
|
@ -6,5 +6,9 @@ For the camera, we use the [motion](https://motion-project.github.io/motion_conf
|
|||||||
|
|
||||||
For the IR control we use an [IR shield](https://www.amazon.com/s?k=Raspberry+pi+infrared+expansion+board+IR+transmitter&ref=nb_sb_noss) controlled by the [lircd](https://www.lirc.org/) service. As a note, in order for this to work, you have to set the pinout in the `/boot/config.txt` -- we try to default this in, but you may need to set `gpio_in_pin` and `gpio_out_pin` attributes for your particular board and shield.
|
For the IR control we use an [IR shield](https://www.amazon.com/s?k=Raspberry+pi+infrared+expansion+board+IR+transmitter&ref=nb_sb_noss) controlled by the [lircd](https://www.lirc.org/) service. As a note, in order for this to work, you have to set the pinout in the `/boot/config.txt` -- we try to default this in, but you may need to set `gpio_in_pin` and `gpio_out_pin` attributes for your particular board and shield.
|
||||||
|
|
||||||
We also pass in an SSH key to integrate with the [Geth](../Geth/) command service, so that users don't have to connect to the boards directly.
|
We also set up an SNMPv3 daemon service on the hubs, to work with their IR control. This snmpd requires the Geth OVA to add snmpget using `apk update && apk add net-snmp-tools` from the `Terminal & SSH` add-on. Covers can then be added from the [command-line integration](https://www.home-assistant.io/integrations/command_line/). They'll look something like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
@ -1,17 +1,3 @@
|
|||||||
|
|
||||||
# Please make this file available to others
|
|
||||||
# by sending it to <lirc@bartelmus.de>
|
|
||||||
#
|
|
||||||
# this config file was automatically generated
|
|
||||||
# using lirc-0.9.0-pre1(default) on Thu Jun 29 00:24:26 2017
|
|
||||||
#
|
|
||||||
# contributed by darkfeather@aninix.net
|
|
||||||
#
|
|
||||||
# brand: LG.conf
|
|
||||||
# model no. of remote control: AKB73715608
|
|
||||||
# devices being controlled by this remote: TV
|
|
||||||
#
|
|
||||||
|
|
||||||
begin remote
|
begin remote
|
||||||
|
|
||||||
name LG-AKB73715608
|
name LG-AKB73715608
|
||||||
@ -40,5 +26,3 @@ begin remote
|
|||||||
end codes
|
end codes
|
||||||
|
|
||||||
end remote
|
end remote
|
||||||
|
|
||||||
|
|
||||||
|
28
roles/Geth-Hub/files/lircd.conf/LG-AKB73715608
Normal file
28
roles/Geth-Hub/files/lircd.conf/LG-AKB73715608
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
begin remote
|
||||||
|
|
||||||
|
name LG-AKB73715608
|
||||||
|
bits 16
|
||||||
|
flags SPACE_ENC|CONST_LENGTH
|
||||||
|
eps 30
|
||||||
|
aeps 100
|
||||||
|
|
||||||
|
header 9063 4496
|
||||||
|
one 579 1673
|
||||||
|
zero 579 546
|
||||||
|
ptrail 580
|
||||||
|
repeat 9066 2248
|
||||||
|
pre_data_bits 16
|
||||||
|
pre_data 0x20DF
|
||||||
|
gap 108528
|
||||||
|
toggle_bit_mask 0x0
|
||||||
|
|
||||||
|
begin codes
|
||||||
|
KEY_POWER 0x10EF
|
||||||
|
KEY_VOLUMEUP 0x40BF
|
||||||
|
KEY_VOLUMEDOWN 0xC03F
|
||||||
|
KEY_CONFIG 0xD02F
|
||||||
|
KEY_ENTER 0x22DD
|
||||||
|
KEY_MUTE 0x906F
|
||||||
|
end codes
|
||||||
|
|
||||||
|
end remote
|
28
roles/Geth-Hub/files/lircd.conf/NS-RC4NA-14
Normal file
28
roles/Geth-Hub/files/lircd.conf/NS-RC4NA-14
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
begin remote
|
||||||
|
|
||||||
|
name NS-RC4NA-14
|
||||||
|
bits 16
|
||||||
|
flags SPACE_ENC|CONST_LENGTH
|
||||||
|
eps 30
|
||||||
|
aeps 100
|
||||||
|
|
||||||
|
header 9102 4441
|
||||||
|
one 640 1623
|
||||||
|
zero 640 496
|
||||||
|
ptrail 639
|
||||||
|
repeat 9103 2189
|
||||||
|
pre_data_bits 16
|
||||||
|
pre_data 0x61A0
|
||||||
|
gap 108350
|
||||||
|
toggle_bit_mask 0x0
|
||||||
|
|
||||||
|
begin codes
|
||||||
|
KEY_POWER 0xF00F
|
||||||
|
KEY_CONFIG 0xB847
|
||||||
|
KEY_VOLUMEUP 0x30CF
|
||||||
|
KEY_VOLUMEDOWN 0xB04F
|
||||||
|
KEY_MUTE 0x708F
|
||||||
|
KEY_ENTER 0x18E7
|
||||||
|
end codes
|
||||||
|
|
||||||
|
end remote
|
@ -6,6 +6,7 @@
|
|||||||
name:
|
name:
|
||||||
- motion
|
- motion
|
||||||
- lirc
|
- lirc
|
||||||
|
- snmpd
|
||||||
- libcamera-apps
|
- libcamera-apps
|
||||||
- ir-keytable
|
- ir-keytable
|
||||||
state: present
|
state: present
|
||||||
@ -120,7 +121,7 @@
|
|||||||
register: lircd_remote_config
|
register: lircd_remote_config
|
||||||
become: yes
|
become: yes
|
||||||
copy:
|
copy:
|
||||||
src: "lircd.conf/{{ inventory_hostname }}"
|
src: "lircd.conf/{{ remote }}"
|
||||||
dest: /etc/lirc/lircd.conf
|
dest: /etc/lirc/lircd.conf
|
||||||
|
|
||||||
- name: Start the services
|
- name: Start the services
|
||||||
@ -130,3 +131,17 @@
|
|||||||
name: lircd
|
name: lircd
|
||||||
state: restarted
|
state: restarted
|
||||||
enabled: yes
|
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
|
||||||
|
23
roles/Geth-Hub/templates/snmpd.conf.j2
Normal file
23
roles/Geth-Hub/templates/snmpd.conf.j2
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
sysLocation {{ inventory_hostname }}
|
||||||
|
sysContact {{ organization['admin'] }} <{{ organization['email'] }}>
|
||||||
|
|
||||||
|
sysServices 72
|
||||||
|
|
||||||
|
master agentx
|
||||||
|
|
||||||
|
agentaddress {{ ip }}:161
|
||||||
|
|
||||||
|
view systemonly included .1.3.6.1.2.1.1
|
||||||
|
view systemonly included .1.3.6.1.2.1.25.1
|
||||||
|
view remotecmds included .1
|
||||||
|
|
||||||
|
CreateUser remote SHA {{ passwords[inventory_hostname] }} AES {{ passwords[inventory_hostname] }}
|
||||||
|
|
||||||
|
rouser remote priv .1
|
||||||
|
|
||||||
|
extend -cacheTime 1 power /usr/bin/irsend SEND_ONCE {{ remote }} KEY_POWER
|
||||||
|
extend -cacheTime 1 mute /usr/bin/irsend SEND_ONCE {{ remote }} KEY_MUTE
|
||||||
|
extend -cacheTime 1 volumeup /usr/bin/irsend SEND_ONCE {{ remote }} KEY_VOLUMEUP
|
||||||
|
extend -cacheTime 1 volumedown /usr/bin/irsend SEND_ONCE {{ remote }} KEY_VOLUMEDOWN
|
||||||
|
extend -cacheTime 1 config /usr/bin/irsend SEND_ONCE {{ remote }} KEY_CONFIG
|
||||||
|
extend -cacheTime 1 enter /usr/bin/irsend SEND_ONCE {{ remote }} KEY_ENTER
|
@ -28,6 +28,17 @@ The following entities can be messaged personally (PM'ed) for help with `/msg <e
|
|||||||
* ChanServ will manage IRC channels -- new channels can be registered on the network here.
|
* ChanServ will manage IRC channels -- new channels can be registered on the network here.
|
||||||
* MemoServ will manage IRC memos (short text-message-like messages between users).
|
* MemoServ will manage IRC memos (short text-message-like messages between users).
|
||||||
|
|
||||||
|
### Bots
|
||||||
|
|
||||||
|
#### Bitbot
|
||||||
|
|
||||||
|
BitBot is a webhook engine -- we tie it into AniNIX/Yggdrasil and AniNIX/Foundation.
|
||||||
|
|
||||||
|
|
||||||
|
### discord-irc
|
||||||
|
|
||||||
|
Discord-IRC acts as a bridge between our IRC network and Discord -- this lets us integrate with mobile push notifications & lowers the barrier to entry to the network.
|
||||||
|
|
||||||
# Available Clients
|
# Available Clients
|
||||||
A [simple web client](https://irc.aninix.net) is hosted.
|
A [simple web client](https://irc.aninix.net) is hosted.
|
||||||
|
|
||||||
|
14
roles/Maat/files/pacoloco.yaml
Normal file
14
roles/Maat/files/pacoloco.yaml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
port: 9129
|
||||||
|
download_timeout: 3600 # download will timeout after 3600 seconds
|
||||||
|
cache_dir: /var/cache/pacoloco
|
||||||
|
purge_files_after: 360000 # 360000 seconds or 100 hours, 0 to disable
|
||||||
|
repos:
|
||||||
|
archlinux:
|
||||||
|
urls:
|
||||||
|
- http://mirrors.gigenet.com/archlinux/
|
||||||
|
- http://mnvoip.mm.fcix.net/archlinux/
|
||||||
|
- http://mirrors.kernel.org/archlinux/
|
||||||
|
- http://ftp.osuosl.org/pub/archlinux/
|
||||||
|
- https://mnvoip.mm.fcix.net/archlinux/
|
||||||
|
- http://southfront.mm.fcix.net/archlinux/
|
||||||
|
user_agent: Pacoloco
|
@ -4,6 +4,7 @@
|
|||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
- Maat
|
- Maat
|
||||||
|
- pacoloco
|
||||||
|
|
||||||
- name: makepkg.conf configuration
|
- name: makepkg.conf configuration
|
||||||
become: yes
|
become: yes
|
||||||
@ -26,3 +27,24 @@
|
|||||||
name: maat.timer
|
name: maat.timer
|
||||||
state: restarted
|
state: restarted
|
||||||
enabled: yes
|
enabled: yes
|
||||||
|
|
||||||
|
- name: Generate mirrorlist
|
||||||
|
delegate_to: localhost
|
||||||
|
run_once: yes
|
||||||
|
command: "bash ../bin/generate-mirrorlist"
|
||||||
|
|
||||||
|
- name: Copy pacoloco config
|
||||||
|
become: yes
|
||||||
|
copy:
|
||||||
|
src: pacoloco.yaml
|
||||||
|
dest: /etc/pacoloco.yaml
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0755
|
||||||
|
|
||||||
|
- name: Start pacoloco service
|
||||||
|
become: yes
|
||||||
|
service:
|
||||||
|
name: pacoloco
|
||||||
|
state: restarted
|
||||||
|
enabled: yes
|
||||||
|
6
roles/ShadowArch/files/motd/Node1
Normal file
6
roles/ShadowArch/files/motd/Node1
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
################################################################################
|
||||||
|
# AniNIX/Node0 #
|
||||||
|
# #
|
||||||
|
# This is the network virtualization platform. VMs can be found with this: #
|
||||||
|
# cd /usr/lib/systemd/system; ls -1 *vm.service | xargs -n 1 systemctl status #
|
||||||
|
################################################################################
|
6
roles/ShadowArch/files/motd/Node2
Normal file
6
roles/ShadowArch/files/motd/Node2
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
################################################################################
|
||||||
|
# AniNIX/Node0 #
|
||||||
|
# #
|
||||||
|
# This is the network virtualization platform. VMs can be found with this: #
|
||||||
|
# cd /usr/lib/systemd/system; ls -1 *vm.service | xargs -n 1 systemctl status #
|
||||||
|
################################################################################
|
6
roles/ShadowArch/files/motd/Node3
Normal file
6
roles/ShadowArch/files/motd/Node3
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
################################################################################
|
||||||
|
# AniNIX/Node0 #
|
||||||
|
# #
|
||||||
|
# This is the network virtualization platform. VMs can be found with this: #
|
||||||
|
# cd /usr/lib/systemd/system; ls -1 *vm.service | xargs -n 1 systemctl status #
|
||||||
|
################################################################################
|
@ -94,16 +94,12 @@
|
|||||||
mode: 0644
|
mode: 0644
|
||||||
when: ansible_os_family == "Archlinux"
|
when: ansible_os_family == "Archlinux"
|
||||||
|
|
||||||
- name: Generate mirrorlist
|
- name: Set mirror
|
||||||
delegate_to: localhost
|
|
||||||
run_once: yes
|
|
||||||
command: "bash ../bin/generate-mirrorlist"
|
|
||||||
|
|
||||||
- name: Copy mirrorlist
|
|
||||||
become: yes
|
become: yes
|
||||||
when: ansible_os_family == "Archlinux"
|
when: ansible_os_family == "Archlinux"
|
||||||
copy:
|
copy:
|
||||||
src: mirrorlist
|
content: |
|
||||||
|
Server = {{ mirroruri }}
|
||||||
dest: /etc/pacman.d/mirrorlist.shadowarch
|
dest: /etc/pacman.d/mirrorlist.shadowarch
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
@ -160,7 +156,7 @@
|
|||||||
become: yes
|
become: yes
|
||||||
command:
|
command:
|
||||||
chdir: '/opt/aninix/ShadowArch'
|
chdir: '/opt/aninix/ShadowArch'
|
||||||
cmd: '/bin/bash -c "make install; /usr/local/sbin/shadowarch-sync"'
|
cmd: '/bin/bash -c "make install"'
|
||||||
when: ansible_os_family != "Archlinux"
|
when: ansible_os_family != "Archlinux"
|
||||||
|
|
||||||
- name: Set up hostname
|
- name: Set up hostname
|
||||||
|
@ -41,3 +41,7 @@
|
|||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: 0600
|
mode: 0600
|
||||||
|
|
||||||
|
- name: Ensure keys
|
||||||
|
become: yes
|
||||||
|
command: /bin/bash -c 'chmod go-rwx /etc/ssh/*key'
|
||||||
|
1
roles/Sharingan/files/monit/hostdefs/Node1
Normal file
1
roles/Sharingan/files/monit/hostdefs/Node1
Normal file
@ -0,0 +1 @@
|
|||||||
|
include "/etc/monit.d/checks/system"
|
1
roles/Sharingan/files/monit/hostdefs/Node2
Normal file
1
roles/Sharingan/files/monit/hostdefs/Node2
Normal file
@ -0,0 +1 @@
|
|||||||
|
include "/etc/monit.d/checks/system"
|
1
roles/Sharingan/files/monit/hostdefs/Node3
Normal file
1
roles/Sharingan/files/monit/hostdefs/Node3
Normal file
@ -0,0 +1 @@
|
|||||||
|
include "/etc/monit.d/checks/system"
|
@ -2,7 +2,7 @@
|
|||||||
Description=AniNIX/Sharingan | Heartbeat service
|
Description=AniNIX/Sharingan | Heartbeat service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=/bin/bash -c 'systemd-cat -t sharingan-heartbeat echo `systemctl is-system-running`'
|
ExecStart=/bin/bash -c 'systemd-cat -t sharingan-heartbeat echo `systemctl is-system-running` - `systemctl is-active sharingan-eval.service`'
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
RemainAfterExit=no
|
RemainAfterExit=no
|
||||||
User=root
|
User=root
|
||||||
|
7
roles/common/service_account.yml
Normal file
7
roles/common/service_account.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Ensure service account is set up.
|
||||||
|
become: true
|
||||||
|
user:
|
||||||
|
name: "{{ service_account }}"
|
||||||
|
shell: /sbin/nologin
|
Loading…
Reference in New Issue
Block a user