第 20 章 使用 podman RHEL 系统角色管理容器
使用 podman
RHEL 系统角色,您可以管理 Podman 配置、容器以及运行 Podman 容器的 systemd
服务。
20.1. 创建一个带有绑定挂载的无根容器
您可以通过运行 Ansible playbook 并使用它来管理应用程序配置,使用 podman
RHEL 系统角色创建带有绑定挂载的无根容器。
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。
步骤
创建包含以下内容的 playbook 文件,如
~/playbook.yml
:- hosts: managed-node-01.example.com vars: podman_create_host_directories: true podman_firewall: - port: 8080-8081/tcp state: enabled - port: 12340/tcp state: enabled podman_selinux_ports: - ports: 8080-8081 setype: http_port_t podman_kube_specs: - state: started run_as_user: dbuser run_as_group: dbgroup kube_file_content: apiVersion: v1 kind: Pod metadata: name: db spec: containers: - name: db image: quay.io/db/db:stable ports: - containerPort: 1234 hostPort: 12340 volumeMounts: - mountPath: /var/lib/db:Z name: db volumes: - name: db hostPath: path: /var/lib/db - state: started run_as_user: webapp run_as_group: webapp kube_file_src: /path/to/webapp.yml roles: - linux-system-roles.podma
此流程创建一个有两个容器的 pod。
podman_kube_specs
角色变量描述了 pod。-
run_as_user
和run_as_group
字段指定容器是无根的。 包含 Kubernetes YAML 文件的
kube_file_content
字段定义了名为db
的第一个容器。您可以使用podman kube generate
命令生成 Kubernetes YAML 文件。-
db
容器是基于quay.io/db/db:stable
容器镜像。 -
db
绑定挂载将主机上的/var/lib/db
目录映射到容器中的/var/lib/db
目录。Z
标志使用私有的 unshared 标签标记内容,因此只有db
容器才能访问内容。
-
-
kube_file_src
字段定义第二个容器。控制器节点上/path/to/webapp.yml
文件的内容将复制到受管节点上的kube_file
字段中。 -
设置
podman_create_host_directories: true
以在主机上创建目录。这指示角色检查hostPath
卷的 kube 规格,并在主机上创建这些目录。如果您需要对所有权和权限有更多的控制,请使用podman_host_directories
。
-
验证 playbook 语法:
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook --ask-vault-pass ~/playbook.yml
其他资源
-
/usr/share/ansible/roles/rhel-system-roles.podman/README.md
文件 -
/usr/share/doc/rhel-system-roles/podman/
directory