move to project lifecycle structure
This commit is contained in:
91
podman/incubating/README.md
Normal file
91
podman/incubating/README.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# Podman
|
||||
|
||||
- [Podman](#podman)
|
||||
- [Notes](#notes)
|
||||
- [Podman systemd files](#podman-systemd-files)
|
||||
- [iperf3](#iperf3)
|
||||
- [pihole](#pihole)
|
||||
- [Cloudflared](#cloudflared)
|
||||
- [Update yellow quadlets](#update-yellow-quadlets)
|
||||
|
||||
## Notes
|
||||
|
||||
- podman auth is stored in `/run/user/1000/containers`
|
||||
|
||||
## Podman systemd files
|
||||
|
||||
Rather than copying compose files or running podman run as systemd services you can
|
||||
generate quadlet files to define containers that run at boot.
|
||||
|
||||
Podlet generates quadlets - systemd files specifically for containers.
|
||||
|
||||
You generate quadlets from compose files like so:
|
||||
|
||||
```bash
|
||||
podman run \
|
||||
-v ./compose:/compose \
|
||||
-v ./quadlets:/quadlets \
|
||||
quay.io/k9withabone/podlet \
|
||||
-f /quadlets \
|
||||
-i \
|
||||
--overwrite \
|
||||
compose /compose/grafana-compose.yaml
|
||||
```
|
||||
|
||||
Copy these files to `/usr/share/containers/systemd/`
|
||||
|
||||
### iperf3
|
||||
|
||||
```bash
|
||||
podman run \
|
||||
-v ./podman/compose:/compose \
|
||||
-v ./podman/quadlets:/quadlets \
|
||||
quay.io/k9withabone/podlet \
|
||||
-f /quadlets \
|
||||
-i \
|
||||
--overwrite \
|
||||
compose /compose/iperf3-compose.yaml
|
||||
```
|
||||
|
||||
### pihole
|
||||
|
||||
<https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts>
|
||||
|
||||
```bash
|
||||
podman run \
|
||||
-v ./podman/compose:/compose \
|
||||
-v ./podman/quadlets:/quadlets \
|
||||
quay.io/k9withabone/podlet \
|
||||
-f /quadlets \
|
||||
-i \
|
||||
--overwrite \
|
||||
--wants network-online.target \
|
||||
--after network-online.target \
|
||||
compose /compose/pihole-compose.yaml
|
||||
```
|
||||
|
||||
### Cloudflared
|
||||
|
||||
https://docs.pi-hole.net/guides/dns/cloudflared/
|
||||
|
||||
Creates a DOH proxy for pihole. Just set the pihole upstream to `10.1.203.197#5053` (yellow) or
|
||||
`10.1.200.253#5053` (orange).
|
||||
|
||||
```bash
|
||||
podman run \
|
||||
-v ./podman/compose:/compose \
|
||||
-v ./podman/quadlets:/quadlets \
|
||||
quay.io/k9withabone/podlet \
|
||||
-f /quadlets \
|
||||
-i \
|
||||
--overwrite \
|
||||
--wants network-online.target \
|
||||
--after network-online.target \
|
||||
compose /compose/cloudflared-compose.yaml
|
||||
```
|
||||
|
||||
## Update yellow quadlets
|
||||
|
||||
```bash
|
||||
ansible-playbook -i ./ansible/inventory.yaml podman/update-quadlets.yaml
|
||||
```
|
||||
14
podman/incubating/compose/cloudflared-compose.yaml
Normal file
14
podman/incubating/compose/cloudflared-compose.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
version: "3"
|
||||
|
||||
# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
|
||||
services:
|
||||
cloudflared:
|
||||
container_name: cloudflared
|
||||
image: docker.io/cloudflare/cloudflared:2024.5.0
|
||||
command: proxy-dns --address 0.0.0.0 --port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query
|
||||
ports:
|
||||
- "5053:5053/tcp"
|
||||
- "5053:5053/udp"
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- podman1
|
||||
12
podman/incubating/compose/iperf3-compose.yaml
Normal file
12
podman/incubating/compose/iperf3-compose.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
iperf3:
|
||||
container_name: iperf3
|
||||
image: docker.io/networkstatic/iperf3:latest
|
||||
ports:
|
||||
- "5202:5201/tcp"
|
||||
command: -s
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- podman1
|
||||
25
podman/incubating/compose/pihole-compose.yaml
Normal file
25
podman/incubating/compose/pihole-compose.yaml
Normal file
@@ -0,0 +1,25 @@
|
||||
version: "3"
|
||||
|
||||
# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
|
||||
services:
|
||||
pihole:
|
||||
container_name: pihole
|
||||
image: docker.io/pihole/pihole:2024.05.0
|
||||
ports:
|
||||
- "53:53/tcp"
|
||||
- "53:53/udp"
|
||||
- "8081:80/tcp"
|
||||
environment:
|
||||
TZ: "America/Chicago"
|
||||
# WEBPASSWORD: "SET A PASSWORD HERE"
|
||||
# Volumes store your data between container upgrades
|
||||
volumes:
|
||||
- pihole:/etc/pihole
|
||||
- dnsmasq:/etc/dnsmasq.d
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- podman1
|
||||
|
||||
volumes:
|
||||
pihole:
|
||||
dnsmasq:
|
||||
16
podman/incubating/quadlets/cloudflared.container
Normal file
16
podman/incubating/quadlets/cloudflared.container
Normal file
@@ -0,0 +1,16 @@
|
||||
[Unit]
|
||||
Wants=network-online.target
|
||||
|
||||
[Container]
|
||||
ContainerName=cloudflared
|
||||
Exec=proxy-dns --address 0.0.0.0 --port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query
|
||||
Image=docker.io/cloudflare/cloudflared:2024.5.0
|
||||
Network=podman1.network
|
||||
PublishPort=0.0.0.0:5053:5053/tcp
|
||||
PublishPort=0.0.0.0:5053:5053/udp
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
12
podman/incubating/quadlets/iperf3.container
Normal file
12
podman/incubating/quadlets/iperf3.container
Normal file
@@ -0,0 +1,12 @@
|
||||
[Container]
|
||||
ContainerName=iperf3
|
||||
Exec=-s
|
||||
Image=docker.io/networkstatic/iperf3:latest
|
||||
Network=podman1.network
|
||||
PublishPort=0.0.0.0:5202:5201/tcp
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
19
podman/incubating/quadlets/pihole.container
Normal file
19
podman/incubating/quadlets/pihole.container
Normal file
@@ -0,0 +1,19 @@
|
||||
[Unit]
|
||||
Wants=network-online.target
|
||||
|
||||
[Container]
|
||||
ContainerName=pihole
|
||||
Environment=TZ=America/Chicago
|
||||
Image=docker.io/pihole/pihole:2024.05.0
|
||||
Network=podman1.network
|
||||
PublishPort=0.0.0.0:53:53/tcp
|
||||
PublishPort=0.0.0.0:53:53/udp
|
||||
PublishPort=0.0.0.0:8081:80/tcp
|
||||
Volume=pihole:/etc/pihole
|
||||
Volume=dnsmasq:/etc/dnsmasq.d
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
3
podman/incubating/quadlets/podman1.network
Normal file
3
podman/incubating/quadlets/podman1.network
Normal file
@@ -0,0 +1,3 @@
|
||||
# podman1.network
|
||||
[Network]
|
||||
IPv6=true
|
||||
26
podman/incubating/update-quadlets.yaml
Normal file
26
podman/incubating/update-quadlets.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
- name: Update quadlets
|
||||
hosts: colors
|
||||
become: true
|
||||
become_user: root
|
||||
become_method: sudo
|
||||
tasks:
|
||||
- name: Copy quadlets with owner and permissions
|
||||
ansible.builtin.copy:
|
||||
src: "{{ item }}"
|
||||
dest: /usr/share/containers/systemd/
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
loop:
|
||||
- ./quadlets/iperf3.container
|
||||
- ./quadlets/pihole.container
|
||||
- ./quadlets/cloudflared.container
|
||||
- ./quadlets/podman1.network
|
||||
- name: Daemon-reload to trigger re-read of quadlets
|
||||
ansible.builtin.systemd_service:
|
||||
daemon_reload: true
|
||||
- name: Restart all quadlet services
|
||||
ansible.builtin.systemd_service:
|
||||
state: restarted
|
||||
name: "{{ item }}"
|
||||
loop: ["podman1-network", "pihole", "iperf3", "cloudflared"]
|
||||
Reference in New Issue
Block a user