containers.podman.podman_generate_systemd 模块 – 从 Pod 或容器生成 systemd 单元
注意
此模块是 containers.podman 集合(版本 1.16.2)的一部分。
如果您正在使用 ansible
包,您可能已经安装了此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install containers.podman
。您需要更多要求才能使用此模块,请参阅要求 了解详细信息。
要在 playbook 中使用它,请指定:containers.podman.podman_generate_systemd
。
概要
从 Pod 或容器生成 systemd .service 单元文件
支持 Ansible 检查模式
要求
在执行此模块的主机上需要以下要求。
目标主机上安装了 Podman
参数
参数 |
注释 |
---|---|
在列表的依赖项和此服务之间添加 systemd 单元 after ( 此选项可以指定多次。 用户定义的依赖项将附加到生成的单元文件中 但是,任何现有选项(例如默认需要或定义的选项)(例如 仅适用于 Podman 4.0.0 及更高版本 |
|
设置容器的 systemd 单元名称前缀。 如果未设置,则使用 Podman 定义的默认值 有关更多信息,请参阅 podman-generate-systemd(1) 手册页。 |
|
生成的 systemd 单元文件的目标位置。 对于系统范围的 systemd 实例,请使用 对于每个用户的 systemd 实例,请使用 |
|
将环境变量设置为 systemd 单元文件。 键是环境变量名称,值是环境变量值 仅适用于 Podman 4.3.0 及更高版本 |
|
默认值: |
|
即使 systemd 单元文件已存在,也替换它。 这适用于 dest 选项。 选项
|
|
要导出的 Pod 或容器的名称 |
|
生成创建容器和 Pod 的单元文件,而不仅仅是启动它们。 有关更多信息,请参阅 podman-generate-systemd(1) 手册页。 选项
|
|
不生成包含元数据(例如 Podman 版本和时间戳)的标头。 选项
|
|
设置 Pod 的 systemd 单元名称前缀。 如果未设置,则使用 Podman 定义的默认值 有关更多信息,请参阅 podman-generate-systemd(1) 手册页。 |
|
设置 systemd 单元 requires (Requires=) 选项。 类似于 wants,但声明了更强的要求依赖性。 仅适用于 Podman 4.0.0 及更高版本 |
|
服务的重启策略 选项
|
|
配置在重新启动服务之前(使用 restart-policy 配置)休眠的时间。 以秒为单位取值。 仅适用于 Podman 4.0.0 及更高版本 |
|
容器/Pod 的名称/ID 和前缀之间的 Systemd 单元名称分隔符。 如果未设置,则使用 Podman 定义的默认值 有关更多信息,请参阅 podman-generate-systemd(1) 手册页。 |
|
以给定的秒数为单位覆盖容器的默认启动超时。 仅适用于 Podman 4.0.0 及更高版本 |
|
以给定的秒数为单位覆盖容器的默认停止超时。 |
|
在单元文件中使用容器的名称进行启动、停止和描述。 选项
|
|
添加 systemd 单元 wants ( 此选项可以指定多次。 此选项不影响启动或停止服务的顺序。 用户定义的依赖项将附加到生成的单元文件中 但是,任何现有选项(例如默认需要或定义的选项)(例如 仅适用于 Podman 4.0.0 及更高版本 |
注意
注意
如果您指示一个 Pod,将为其及其所有容器生成 systemd 单元
在生成 systemd 文件之前,创建所有 Pod、容器及其依赖项
如果容器或 Pod 在您执行
systemctl daemon-reload
之前已经启动,则 systemd 不会将容器或 Pod 视为已启动在执行
systemctl daemon-reload
之前,请停止您的容器或 pod,然后您可以使用systemctl start my_container.service
启动它们。
示例
# Example of creating a container and systemd unit file.
# When using podman_generate_systemd with new:true then
# the container needs rm:true for idempotence.
- name: Create postgres container
containers.podman.podman_container:
name: postgres
image: docker.io/library/postgres:latest
rm: true
state: created
- name: Generate systemd unit file for postgres container
containers.podman.podman_generate_systemd:
name: postgres
new: true
no_header: true
dest: /etc/systemd/system
- name: Ensure postgres container is started and enabled
ansible.builtin.systemd:
name: container-postgres
daemon_reload: true
state: started
enabled: true
# Example of creating a container and integrate it into systemd
- name: A postgres container must exist, stopped
containers.podman.podman_container:
name: postgres_local
image: docker.io/library/postgres:latest
state: stopped
- name: Systemd unit files for postgres container must exist
containers.podman.podman_generate_systemd:
name: postgres_local
dest: ~/.config/systemd/user/
- name: Postgres container must be started and enabled on systemd
ansible.builtin.systemd:
name: container-postgres_local
scope: user
daemon_reload: true
state: started
enabled: true
# Generate the unit files, but store them on an Ansible variable
# instead of writing them on target host
- name: Systemd unit files for postgres container must be generated
containers.podman.podman_generate_systemd:
name: postgres_local
register: postgres_local_systemd_unit
# Generate the unit files with environment variables sets
- name: Systemd unit files for postgres container must be generated
containers.podman.podman_generate_systemd:
name: postgres_local
env:
POSTGRES_USER: my_app
POSTGRES_PASSWORD: example
register: postgres_local_systemd_unit
返回值
常见的返回值记录在这里,以下是此模块特有的字段
键 |
描述 |
---|---|
用于生成 systemd 单元的 podman 命令的副本 返回: 总是 示例: |
|
生成的 systemd .service 单元的副本 返回: 总是 示例: |