我正在尝试自动化以下操作:
- 应用物理卷
- kubectl应用-f食品-pv.yaml
- kubectl应用-f bar-pv.yaml
- 应用物理量声明
- kubectl apply-f foo.yaml
- kubectl应用-f bar.yaml
- 应用服务
- kubectl应用-f this-service.yaml
- kubectl应用-f that-nodeport.yaml
- 应用展开
- kubectl应用-f something.yaml
现在我可以将cmds作为shell命令运行,但我认为这不是正确的方法。我一直在阅读Ansible文档,但我不知道我需要做什么。有没有更好的方法可以在不使用一系列shell cmd的情况下应用这些yaml文件?
提前感谢
最好的方法是使用ansible kubernetes.core collection
文件示例:
- name: Create a Deployment by reading the definition from a local file
kubernetes.core.k8s:
state: present
src: /testing/deployment.yml
因此,您可以使用state: present
从包含对象的yaml定义的不同文件夹进行循环
我目前没有一个正在运行的kube集群来测试这一点,但您基本上应该能够使用kubernetes.core.k8s
模块在一个循环的单个任务中运行所有这些
以下是我认为应该满足您要求的内容(前提是您对kube实例的访问权限已在您的环境中配置并正常,并且您已按照文档中的描述安装了上述集合(
- name: install my kube objects
hosts: localhost
gather_facts: false
vars:
obj_def_path: /path/to/your/obj_def_dir/
obj_def_list:
- food-pv.yaml
- bar-pv.yaml
- foo.yaml
- bar.yaml
- this-service.yaml
- that-nodeport.yaml
- something.yaml
tasks:
- name: Install all objects from def files
k8s:
src: "{{ obj_def_path }}/{{ item }}"
state: present
apply: true
loop: "{{ obj_def_list }}"