我想使用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')}}"
也许您可以给我提示要看的地方。 提前致谢。
答案 0 :(得分:0)
尝试将apply: yes
添加到您的k8s参数中,如果我正确的话,则应忽略已经创建的资源,并在发生任何更改时对其进行更新。
默认行为就像在CLI中使用oc create
一样,无论出于何种原因都可能使Ansible麻烦