add: docker_server role
This commit is contained in:
parent
5076e9429b
commit
8b627ca6c6
3
roles/docker_server/README.md
Normal file
3
roles/docker_server/README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Install docker deamon on debian
|
||||||
|
|
||||||
|
|
||||||
1
roles/docker_server/defaults/main.yml
Normal file
1
roles/docker_server/defaults/main.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
docker_install_extra_scripts: True
|
||||||
8
roles/docker_server/files/ddu
Executable file
8
roles/docker_server/files/ddu
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
docker ps --format '{{ .Size }}\t{{ .ID }}\t{{.Image}}\t{{ .Names }}' | sort -h | column -t
|
||||||
|
|
||||||
|
# Ways to clean disk space:
|
||||||
|
# docker system prune -a
|
||||||
|
# docker volume rm $(docker volume ls -qf dangling=true)
|
||||||
34
roles/docker_server/files/dip
Executable file
34
roles/docker_server/files/dip
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# From: https://gist.github.com/ipedrazas/2c93f6e74737d1f8a791?permalink_comment_id=3704504#gistcomment-3704504
|
||||||
|
|
||||||
|
function dip() {
|
||||||
|
local cols='%-13s %-48s %-40s %-80s'
|
||||||
|
_print_container_info() {
|
||||||
|
local container_id
|
||||||
|
local container_ports
|
||||||
|
local container_ip
|
||||||
|
local container_name
|
||||||
|
container_id="${1}"
|
||||||
|
|
||||||
|
container_ports=( $(docker port "$container_id" | grep -o "0.0.0.0:.*" | cut -f2 -d:) )
|
||||||
|
container_name="$(docker inspect --format "{{ .Name }}" "$container_id" | sed 's/\///')"
|
||||||
|
container_ip="$(docker inspect --format "{{range .NetworkSettings.Networks}}{{.IPAddress}} {{end}}" "$container_id" )"
|
||||||
|
printf "$cols\n" "$container_id" "$container_name" "$container_ip" "${container_ports[*]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
local container_id
|
||||||
|
container_id="$1"
|
||||||
|
printf "$cols\n" 'Container Id' 'Container Name' 'Container IP' 'Container Ports'
|
||||||
|
if [ -z "$container_id" ]; then
|
||||||
|
local container_id
|
||||||
|
docker ps -a --format "{{.ID}}" | while read -r container_id ; do
|
||||||
|
_print_container_info "$container_id"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
_print_container_info "$container_id"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
dip
|
||||||
25
roles/docker_server/files/netshoot
Executable file
25
roles/docker_server/files/netshoot
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Start a docker netshoot container
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
local container=${1-}
|
||||||
|
local img=${2:-nicolaka/netshoot}
|
||||||
|
local args=
|
||||||
|
local opts=
|
||||||
|
|
||||||
|
if [[ -n "$container" ]]; then
|
||||||
|
opts="--network container:$container"
|
||||||
|
fi
|
||||||
|
if [[ "$container" == "$img" ]]; then
|
||||||
|
img=$(docker inspect --format='{{.Image}}' "$container")
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker run --rm -ti -v "$HOME/.cache/netshoot:/root" $opts $img /bin/bash
|
||||||
|
}
|
||||||
|
|
||||||
|
main $@
|
||||||
|
|
||||||
26
roles/docker_server/files/nip
Executable file
26
roles/docker_server/files/nip
Executable file
@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
# List all Docker networks
|
||||||
|
networks=$(docker network ls -q --format '{{.Name}},{{.ID}}' | sort | cut -d, -f 2)
|
||||||
|
|
||||||
|
# Loop through the networks and display the details
|
||||||
|
for network in $networks; do
|
||||||
|
local containers=$(docker network inspect --format='{{range $k, $v := .Containers}}{{$k}} {{end}}' "$network")
|
||||||
|
local net_name=$(docker network inspect --format '{{ .Name }}' $network)
|
||||||
|
|
||||||
|
printf "%-30s %s\n" "$net_name" "$network"
|
||||||
|
for container in $containers; do
|
||||||
|
local cont=$(docker network inspect --format="{{ index .Containers \"$container\" | json }}" "$network" )
|
||||||
|
local name=$(jq -r ".Name" <<< "$cont")
|
||||||
|
local ip=$(jq -r ".IPv4Address" <<< "$cont")
|
||||||
|
printf " %-30s %s\n" "$ip" "$name"
|
||||||
|
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
main $@
|
||||||
|
|
||||||
40
roles/docker_server/tasks/main.yml
Normal file
40
roles/docker_server/tasks/main.yml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
|
||||||
|
|
||||||
|
# Use of apt_key plugin is deprecated, see: https://www.jeffgeerling.com/blog/2022/aptkey-deprecated-debianubuntu-how-fix-ansible
|
||||||
|
- name: Add Docker apt repository key
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: https://download.docker.com/linux/debian/gpg
|
||||||
|
dest: /etc/apt/trusted.gpg.d/docker.asc
|
||||||
|
mode: '0644'
|
||||||
|
|
||||||
|
- name: Add Docker Repository
|
||||||
|
apt_repository:
|
||||||
|
filename: docker
|
||||||
|
repo: deb https://download.docker.com/linux/debian {{ ansible_distribution_release }} stable
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Ensure docker packages are installed
|
||||||
|
apt:
|
||||||
|
state: present
|
||||||
|
name:
|
||||||
|
- docker-ce
|
||||||
|
- docker-ce-cli
|
||||||
|
- containerd.io
|
||||||
|
- docker-buildx-plugin
|
||||||
|
- docker-compose-plugin
|
||||||
|
|
||||||
|
- name: "Copy docker helper scripts to /usr/local/bin: ({{ docker_install_extra_scripts | ternary('present', 'absent') }})"
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "{{ item }}"
|
||||||
|
dest: /usr/local/bin/
|
||||||
|
mode: '0755'
|
||||||
|
with_fileglob:
|
||||||
|
- files/*
|
||||||
|
when: "docker_install_extra_scripts"
|
||||||
|
|
||||||
|
- name: Ensure extra packages are installed
|
||||||
|
apt:
|
||||||
|
state: present
|
||||||
|
name:
|
||||||
|
- jq # For nip support
|
||||||
|
when: "docker_install_extra_scripts"
|
||||||
Loading…
x
Reference in New Issue
Block a user