Add 'cloudbox' configuration.
This commit is contained in:
		
							parent
							
								
									d203da49c2
								
							
						
					
					
						commit
						b1af7d31ec
					
				
					 16 changed files with 200 additions and 0 deletions
				
			
		
							
								
								
									
										35
									
								
								cloudbox.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								cloudbox.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
---
 | 
			
		||||
# This playbook deploys the cloudbox on a minimal installation.
 | 
			
		||||
 | 
			
		||||
- name: apply configuration to the cloudbox
 | 
			
		||||
  hosts: cloudboxes
 | 
			
		||||
  remote_user: ansible
 | 
			
		||||
  become: yes
 | 
			
		||||
  vars:
 | 
			
		||||
    if_lan: "enp1s0"
 | 
			
		||||
    ipaddr: "192.168.2.50/24"
 | 
			
		||||
    gateway: "192.168.2.1"
 | 
			
		||||
    DNS: "192.168.2.1"
 | 
			
		||||
    #ddns_domain: "something.ddnss.de"
 | 
			
		||||
    ddns_domain: !vault |
 | 
			
		||||
          $ANSIBLE_VAULT;1.1;AES256
 | 
			
		||||
          30653335326332666539326461623064383432653133383832313065386231663366383862393961
 | 
			
		||||
          3339356432643139653939323832633839626631396431340a623438333335333765383035666133
 | 
			
		||||
          34313631663938386432326665313331383865616361633465336333613534626262633864613133
 | 
			
		||||
          3934376631343736380a353337303937656638633035666331646563326562363130633534376335
 | 
			
		||||
          6636
 | 
			
		||||
    #ddns_updkey: "138638.some.key.here.635620"
 | 
			
		||||
    ddns_updkey: !vault |
 | 
			
		||||
          $ANSIBLE_VAULT;1.1;AES256
 | 
			
		||||
          35333062366532643235343839313962393038313631663239336138393566643433326535313132
 | 
			
		||||
          3761303730653339616333623534343131333838303036310a343634623739623663623566336233
 | 
			
		||||
          37666466356363646464323335643261346563643564333631626432323963396136643039336531
 | 
			
		||||
          3662653436373564310a663061613032343332373031613831343365643039313034353636613938
 | 
			
		||||
          31663437393564656334663336633234666237386662323661623266396166616235306531333861
 | 
			
		||||
          3831656434613434333337376262396631363336643766323932
 | 
			
		||||
  roles:
 | 
			
		||||
    - up2date-debian
 | 
			
		||||
    - systemd-networkd
 | 
			
		||||
    - web-server
 | 
			
		||||
    - ddns-update
 | 
			
		||||
    - low-power
 | 
			
		||||
							
								
								
									
										30
									
								
								roles/ddns-update/files/ddns-update
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								roles/ddns-update/files/ddns-update
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
set -eu
 | 
			
		||||
 | 
			
		||||
. /etc/ddns-update/ddns-update.conf
 | 
			
		||||
 | 
			
		||||
DDHOST="https://www.ddnss.de/upd.php"
 | 
			
		||||
 | 
			
		||||
if ! DNSRESULT="$(host $DDNSNAME)" ; then
 | 
			
		||||
    echo "Could not resolve IP address for '$DDNSNAME', no update."
 | 
			
		||||
    exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
DNSIP4="$(echo \\"$DNSRESULT\\" | grep -m 1 -oE '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$' || true )"
 | 
			
		||||
DNSIP6="$(echo \\"$DNSRESULT\\" | grep -m 1 -oE '[0-9a-f]{1,4}:.+:[0-9a-f]{1,4}' || true )"
 | 
			
		||||
 | 
			
		||||
REALIP4="$(wget -q -O - https://ip4.ddnss.de/meineip.php | \
 | 
			
		||||
               grep -m 1 -oE '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' || true )"
 | 
			
		||||
REALIP6="$(wget -q -O - https://ip6.ddnss.de/meineip.php | \
 | 
			
		||||
                grep -m 1 -oE '[0-9a-f]{1,4}:.+:[0-9a-f]{1,4}' || true )"
 | 
			
		||||
 | 
			
		||||
echo "Current DNS: IPv4=$DNSIP4, IPv6=$DNSIP6."
 | 
			
		||||
echo "Detected:    IPv4=$REALIP4, IPv6=$REALIP6."
 | 
			
		||||
 | 
			
		||||
if [ "$REALIP4" == "$DNSIP4" -a "$REALIP6" == "$DNSIP6" ] ; then
 | 
			
		||||
    echo "IP address unchanged, no update."
 | 
			
		||||
else
 | 
			
		||||
    echo "IP address changed: $DNSIP4 → ${REALIP4}, $DNSIP6 → ${REALIP6}, updating ddns."
 | 
			
		||||
    wget -q -O - $DDHOST'?key='$KEYAUTH'&host='$DDNSNAME'&ip='$REALIP4'&ip6='$REALIP6 \
 | 
			
		||||
        | grep -oE "Updated .+ hostname." || echo "Update not confirmed, it might have failed."
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										6
									
								
								roles/ddns-update/files/ddns-update.service
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								roles/ddns-update/files/ddns-update.service
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
[Unit]
 | 
			
		||||
Description=Update ddns
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=oneshot
 | 
			
		||||
ExecStart=/usr/local/bin/ddns-update
 | 
			
		||||
							
								
								
									
										11
									
								
								roles/ddns-update/files/ddns-update.timer
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								roles/ddns-update/files/ddns-update.timer
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
[Unit]
 | 
			
		||||
Description=Update ddns IP-address
 | 
			
		||||
 | 
			
		||||
[Timer]
 | 
			
		||||
OnBootSec=0
 | 
			
		||||
OnUnitActiveSec=15min
 | 
			
		||||
AccuracySec=3min
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=timers.target
 | 
			
		||||
							
								
								
									
										7
									
								
								roles/ddns-update/handlers/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								roles/ddns-update/handlers/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
- name: enable ddns-update timer
 | 
			
		||||
  systemd:
 | 
			
		||||
    name: ddns-update.timer
 | 
			
		||||
    state: restarted
 | 
			
		||||
    daemon_reload: yes
 | 
			
		||||
    enabled: yes
 | 
			
		||||
  listen: "enable ddns-update timer"
 | 
			
		||||
							
								
								
									
										24
									
								
								roles/ddns-update/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								roles/ddns-update/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
- name: make sure /etc/ddns-update/ exists
 | 
			
		||||
  file: path=/etc/ddns-update/ state=directory recurse=yes
 | 
			
		||||
 | 
			
		||||
- name: install ddns-update config
 | 
			
		||||
  template:
 | 
			
		||||
    src: ddns-update.conf.j2
 | 
			
		||||
    dest: /etc/ddns-update/ddns-update.conf
 | 
			
		||||
 | 
			
		||||
- name: install ddns-update script
 | 
			
		||||
  copy:
 | 
			
		||||
    src: ddns-update
 | 
			
		||||
    dest: /usr/local/bin/ddns-update
 | 
			
		||||
    mode: 0755
 | 
			
		||||
 | 
			
		||||
- name: install ddns-update.service
 | 
			
		||||
  copy:
 | 
			
		||||
    src: ddns-update.service
 | 
			
		||||
    dest: /etc/systemd/system/ddns-update.service
 | 
			
		||||
 | 
			
		||||
- name: install ddns-update.timer
 | 
			
		||||
  copy:
 | 
			
		||||
    src: ddns-update.timer
 | 
			
		||||
    dest: /etc/systemd/system/ddns-update.timer
 | 
			
		||||
  notify: enable ddns-update timer
 | 
			
		||||
							
								
								
									
										2
									
								
								roles/ddns-update/templates/ddns-update.conf.j2
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								roles/ddns-update/templates/ddns-update.conf.j2
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
DDNSNAME="{{ ddns_domain }}"
 | 
			
		||||
KEYAUTH="{{ ddns_updkey }}"
 | 
			
		||||
							
								
								
									
										6
									
								
								roles/low-power/files/powertop.service
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								roles/low-power/files/powertop.service
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
[Unit]
 | 
			
		||||
Description=Run powertop --auto-tune
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=oneshot
 | 
			
		||||
ExecStart=/usr/sbin/powertop --auto-tune
 | 
			
		||||
							
								
								
									
										9
									
								
								roles/low-power/files/powertop.timer
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								roles/low-power/files/powertop.timer
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
[Unit]
 | 
			
		||||
Description=Run powertop --auto-tune after boot
 | 
			
		||||
 | 
			
		||||
[Timer]
 | 
			
		||||
OnBootSec=1min
 | 
			
		||||
AccuracySec=1min
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=timers.target
 | 
			
		||||
							
								
								
									
										5
									
								
								roles/low-power/handlers/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								roles/low-power/handlers/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
- name: enable powertop timer
 | 
			
		||||
  systemd:
 | 
			
		||||
    name: powertop.timer
 | 
			
		||||
    enabled: yes
 | 
			
		||||
  listen: "enable powertop timer"
 | 
			
		||||
							
								
								
									
										15
									
								
								roles/low-power/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								roles/low-power/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
- name: install some packages
 | 
			
		||||
  apt: name={{ item }} state=latest
 | 
			
		||||
  with_items:
 | 
			
		||||
    - powertop
 | 
			
		||||
 | 
			
		||||
- name: install powertop.service
 | 
			
		||||
  copy:
 | 
			
		||||
    src: powertop.service
 | 
			
		||||
    dest: /etc/systemd/system/powertop.service
 | 
			
		||||
 | 
			
		||||
- name: install powertop.timer
 | 
			
		||||
  copy:
 | 
			
		||||
    src: powertop.timer
 | 
			
		||||
    dest: /etc/systemd/system/powertop.timer
 | 
			
		||||
  notify: enable powertop timer
 | 
			
		||||
							
								
								
									
										5
									
								
								roles/systemd-networkd/files/10-dhcp.network
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								roles/systemd-networkd/files/10-dhcp.network
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
[Match]
 | 
			
		||||
Name=en*
 | 
			
		||||
 | 
			
		||||
[Network]
 | 
			
		||||
DHCP=yes
 | 
			
		||||
							
								
								
									
										13
									
								
								roles/systemd-networkd/handlers/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								roles/systemd-networkd/handlers/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
- name: enable systemd-networkd
 | 
			
		||||
  systemd:
 | 
			
		||||
    name: systemd-networkd
 | 
			
		||||
    enabled: yes
 | 
			
		||||
    daemon_reload: yes
 | 
			
		||||
  listen: "enable systemd-networkd"
 | 
			
		||||
 | 
			
		||||
- name: enable systemd-resolved
 | 
			
		||||
  systemd:
 | 
			
		||||
    name: systemd-resolved
 | 
			
		||||
    enabled: yes
 | 
			
		||||
    daemon_reload: yes
 | 
			
		||||
  listen: "enable systemd-resolved"
 | 
			
		||||
							
								
								
									
										19
									
								
								roles/systemd-networkd/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								roles/systemd-networkd/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
- name: install dynamic configuration for networkd
 | 
			
		||||
  copy:
 | 
			
		||||
    src: 10-dhcp.network
 | 
			
		||||
    dest: /etc/systemd/network/10-dhcp.network
 | 
			
		||||
  notify: "enable systemd-networkd"
 | 
			
		||||
 | 
			
		||||
#- name: install static configuration for networkd
 | 
			
		||||
#  template:
 | 
			
		||||
#    src: 20-static.network.j2
 | 
			
		||||
#    dest: /etc/systemd/network/20-static.network
 | 
			
		||||
#  notify: "enable systemd-networkd"
 | 
			
		||||
 | 
			
		||||
- name: prepare systemd-resolved
 | 
			
		||||
  file:
 | 
			
		||||
    src: /run/systemd/resolve/resolv.conf
 | 
			
		||||
    dest: /etc/resolv.conf
 | 
			
		||||
    state: link
 | 
			
		||||
    force: yes
 | 
			
		||||
  notify: "enable systemd-resolved"
 | 
			
		||||
							
								
								
									
										7
									
								
								roles/systemd-networkd/templates/20-static.network.j2
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								roles/systemd-networkd/templates/20-static.network.j2
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
[Match]
 | 
			
		||||
Name={{ if_lan }}
 | 
			
		||||
 | 
			
		||||
[Network]
 | 
			
		||||
Address={{ ipaddr }}
 | 
			
		||||
Gateway={{ gateway }}
 | 
			
		||||
DNS={{ DNS }}
 | 
			
		||||
							
								
								
									
										6
									
								
								roles/web-server/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								roles/web-server/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
- name: install some packages
 | 
			
		||||
  apt: name={{ item }} state=latest
 | 
			
		||||
  with_items:
 | 
			
		||||
    - unattended-upgrades
 | 
			
		||||
    - screen
 | 
			
		||||
    - python-certbot-apache
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue