[英]How to pass variables to a Kubernetes YAML file from Ansible?
我正在尝试将变量从Ansible传递到kubernetes YAML文件,但不知何故未填充值。
这是我的剧本:
- hosts: master
gather_facts: no
vars:
logstash_port: 5044
tasks:
- name: Creating kubernetes pod
command: kubectl create -f logstash.yml
logstash.yml
:
apiVersion: v1
kind: Pod
metadata: logstash
spec:
containers:
- name: logstash
image: logstash
ports:
- containerPort: {{ logstash_port }}
是否有更好的方法将参数传递给使用命令任务调用的Kubernetes YAML文件?
您尝试做的事情没有工作的机会。 Kubernetes(该kubectl
命令) 无关 ,与Jinja2的语法,你试图在使用logstash.yml
,并且它必须Ansible对象无权访问(出于多种原因)。
而是使用k8s_raw
模块来管理Kubernetes对象。
您可以将Kubernetes的清单直接包含在definition
声明中,并且可以在其中使用Jinja2模板:
- k8s_raw:
state: present
definition:
apiVersion: v1
kind: Pod
metadata: logstash
spec:
containers:
- name: logstash
image: logstash
ports:
- containerPort: "{{ logstash_port }}"
或者,您可以将您的logstash.yml
保留logstash.yml
,并使用模板查找插件来提供它:
- k8s_raw:
state: present
definition: "{{ lookup('template', 'path/to/logstash.yml') | from_yaml }}"
注意,如果您直接在Ansible代码中使用了Jinja2模板,则必须引用它。 模板插件没有必要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.