我正在编写一个ansible playbook,用于在kubernetes中部署docker化的应用程序。 但出于模块化目的,我宁愿不硬编码需要在运行kompose convert -f docker-compose.yaml --volumes hostPath
后应用的文件。是否有一种方法可以应用目录中的所有文件?
我正在编写一个ansible playbook,用于在kubernetes中部署docker化的应用程序。 但出于模块化目的,我宁愿不硬编码需要在运行kompose convert -f docker-compose.yaml --volumes hostPath
后应用的文件。是否有一种方法可以应用目录中的所有文件?
您可以使用以下方法应用文件夹中的所有文件:
kubectl apply -f <folder>
您可能也对使用Kustomize 对清单文件进行参数化感兴趣,例如在生产命名空间中使用比测试命名空间中更多的副本。您可以使用 Kustomize 应用参数化的清单文件。
kubectl apply -k <folder>
--recursive
将会递归地对所有子文件夹中的文件应用相同的操作。 - Rashack如果你想将给定目录中的所有文件应用程序,则将上述命令将目录作为"-f"选项的一个选项传递是完美的。
以下内容应用于当前目录中与给定条件匹配的yaml文件(例如,这里是以test开头的所有yaml文件)。
kubectl apply $(ls test*.yaml | awk ' { print " -f " $1 } ')
kubectl apply -f .
k8s
模块,如下所示: - name: Apply all manifests in a given folder
k8s:
state: present
definition: "{{ lookup('template', '{{ item }}') }}"
namespace: default
with_fileglob:
- "manifests/*.yaml"
- "manifests/*.j2"
这也会使您能够对清单进行模板化,并在应用整个文件夹时动态解析它们。
请注意,此Ansible任务期望 manifests
文件夹与运行的playbook位于相同路径下。
kubectl apply -f {{folder}}
? - James Ukilin