notmycloud.podman_systemd
Ansible Podman_systemd
描述
为系统和无特权用户配置 Podman Systemd 单元。
安装
以下角色也是必需的。如果将它们添加为依赖项,它们会执行,但可能会失败。
- linuxhq.sysctl
- notmycloud.yaml2ini
- notmycloud.systemd_unit
重要提示:需要安装 toml
Python 包。可以使用 pip 安装。
使用
提供以下变量以正确操作此角色。
PODMAN_SYSTEMD_INSTALL_COCKPIT
将安装支持 Podman 的 Cockpit。
PODMAN_SYSTEMD_ALLOW_LOWEST_PORT
将指定无特权用户可以绑定的最低端口。对于 1024 或更低的低端口,其安全性存在争议,因此应该限制为受信用户。如果这是一个多租户服务器,建议跳过此变量;但是,如果您完全管理此服务器并为每个服务设置用户,则此选项可以为您省去一些麻烦。在我看来,对于非多租户的服务器可以将其设置为 0。
PODMAN_SYSTEMD_ALLOW_PING
将允许无特权用户进行 ping 操作。
PODMAN_SYSTEMD_DEPLOY
包含大量 Podman 配置。为每个将设置 Systemd 单元的用户创建一个键。
PODMAN_SYSTEMD_DEPLOY:
root:
等等...
user1:
等等...
user2:
等等...
用户配置
Root 将在默认的 /etc/systemd/system
目录下配置,而用户将配置在 ~/.config/system/user
目录下。在这个例子中,我们将为一个无特权用户配置。
debug_log: bool # 设置为 true 以启用任务和调试日志记录
PODMAN_SYSTEMD_DEPLOY:
myuser:
config:
storage:
storage:
driver: "overlay"
# 以 INI 格式写入的键值对,存储在用户或 root 的 /etc 配置目录中。
# 键值对应遵循 notmycloud.yaml2ini 角色所指定的格式。
containers:
engine:
network_cmd_options:
- "allow_host_loopback=true"
- "enable_ipv6=true"
env:
- "TMPDIR=$HOME/.cache/tmp/"
# 以 TOML 格式写入的键值对,存储在用户或 root 的 /etc 配置目录中。
registries:
unqualified-search-registries:
- "docker.io"
# - "quay.io"
# - "registry.access.redhat.com"
registry:
# - prefix: "docker.io"
# location: "127.0.0.1:5000"
# insecure: true
# 在 2020 年 11 月,Docker 限制镜像拉取。在测试时为避免触及这些限制,始终使用 Google 镜像。
# 参考:https://cloud.google.com/container-registry/docs/pulling-cached-images
registry.mirror:
- location: "https://mirror.gcr.io"
# 以 TOML 格式写入的键值对,存储在用户或 root 的 /etc 配置目录中。
login: # 请参见 containers.podman.podman_login 模块的文档
- registry: registry.mydomain.com
username: registryuser
password: super$3(r37Password
systemd:
enable_socket: # 默认值为 False,启用用户 Podman API 套接字或在 root 下启用系统范围。
containers:
CONTAINERNAME: # 用您想要的容器名称替换,将用于 Systemd 单元文件。
podman_options:
image:
network: # 网络字符串,默认为 slirp4netns:allow_host_loopback=true,enable_ipv6=true
replace: # bool
restart: # "always"|"no"|"on-failure"|"unless-stopped" 默认值为 no
remove: # 默认值为 yes
stop_timeout: # 默认值为 60 秒
log_driver: # 默认为 Passthrough,因此您可以在日志中查看日志
healthcheck:
cmd:
interval:
retries:
delay:
timeout:
environment: # 键值对数组
key: "value"
ports: # 0.0.0.0:主机端口:容器端口
volumes:
- host:
container:
options:
type: # file/directory
labels: # 键值对数组
key: "value"
other_options: # 传递给 podman run 的其他选项的字符串或数组
service_options: # 请参见 notmycloud.systemd_unit 变量的深度,与 UNIT_NAME 相同
pods:
PODNAME: # 用您想要的 Pod 名称替换,这将用于前缀关联的容器。
pod_service_options: # 请参见 notmycloud.systemd_unit 变量的深度,与 UNIT_NAME 相同
CONTAINERNAME:
# 遵循上述 PODMAN_SYSTEMD_DEPLOY.USERNAME.systemd.containers.CONTAINERNAME 语法
其他说明
Podman 套接字
Root 套接字将启用在:/run/podman/podman.sock
无特权套接字将启用在 : /run/user/$UID/podman/podman.sock
容器配置目录
我建议您使用 %E/%N/
作为您的配置根目录。
这将把配置存储在 ~/.config/{service_name}/
或 /etc/{service_name}/
中。
对于需要多个配置目录的容器,我将使用 %E/%N/config1/
、%E/%N/config2/
等等...
推荐的其他选项
--init
在容器内运行一个 init,用于转发信号和回收进程。有关更多信息,请参见 containers/podman#1670--cap-drop=all
删除所有能力,您可能需要添加能力才能使容器正常工作。--security-opt=no-new-privileges
禁止容器进程获得额外权限。有关更多信息,请参见 文档。--userns=keep-id
将容器用户映射到主机用户 ID。
支持
如需支持,请提出问题并提供以下内容
- 示例任务/剧本以复制您的问题
- 创建的结果文件。
ansible-galaxy install notmycloud.podman_systemd