无法多次运行k8s模块(非幂等)

时间:2019-09-23 14:05:42

标签: python kubernetes ansible openshift

我想使用Ansible在OpenSHift集群中创建一些资源。资源的创建工作良好,但是当我第二次运行相同的脚本时,它声称资源已经存在。我认为,这不应该发生,因为ansible应该是幂等的。我搜索发现该问题应得到解决(https://github.com/CiscoCloud/kubernetes-ansible/issues/69)。我在做什么错了?

错误消息:

  

任务[apply_templates:设置项目在开发测试中显示的项目请求状态] *********************************** ****************************************************** **********************************************   致命的:[本地主机]:失败! => {“ ansible_facts”:{“ discovered_interpreter_python”:“ / usr / bin / python”},“已更改”:false,“错误”:409,“ msg”:“无法创建对象:{\”种类\“ :\“状态\”,\“ apiVersion \”:\“ v1 \”,   \“ metadata \”:{},\“ status \”:\“ Failure \”,\“ message \”:\\ project.project.openshift.io \\“ developtest \\”已经存在\“,\” reason \“:\” AlreadyExists \“,\” details \“:{\” name \“:\” developtest \“,\” group \“:\” project.opens   hift.io \“,\”种类\“:\”项目\“},\”代码\“:409} \ n”,“原因”:“冲突”,“状态”:409}

我的剧本的一部分:

---

# Create projectrequest
- name: Set state of project-request in project {{current_project.name}} to {{state}}
  k8s:
    api_version: "{{apiversion}}"
    state: "{{ state }}"
    resource_definition: "{{ lookup('file', '{{ templating.destination_dir }}/{{current_project.name}}/projectrequest.yaml')}}"

# Create namespace and namespace-quota
- name: Set state of object in project {{current_project.name}} to {{state}}
  k8s:
    api_version: "{{apiversion}}"
    state: "{{ state }}"
    resource_definition: "{{ lookup('file', '{{ templating.destination_dir }}/{{current_project.name}}/namespace.yaml')}}"     

也许您可以给我提示要看的地方。 提前致谢。

1 个答案:

答案 0 :(得分:0)

尝试将apply: yes添加到您的k8s参数中,如果我正确的话,则应忽略已经创建的资源,并在发生任何更改时对其进行更新。

默认行为就像在CLI中使用oc create一样,无论出于何种原因都可能使Ansible麻烦