针对两个群体的Ansible剧本
我正在写一本ansible的剧本,升级Kubernetes在《奴才》上的版本针对两个群体的Ansible剧本,ansible,Ansible,我正在写一本ansible的剧本,升级Kubernetes在《奴才》上的版本 - name: Configure and start the Kubernetes Nodes hosts: kubernetes-minions serial: 1 tasks: - name: backup K8S master files. shell: "{{item}}" with_items: - cp /etc/kubernetes/config
- name: Configure and start the Kubernetes Nodes
hosts: kubernetes-minions
serial: 1
tasks:
- name: backup K8S master files.
shell: "{{item}}"
with_items:
- cp /etc/kubernetes/config /var/tmp/k8s-backup/
- cp /etc/kubernetes/kubelet /var/tmp/k8s-backup/
- name: cordon the minion.
command: kubectl cordon {{ ansible_default_ipv4.interface }}
delegate_to: kubernetes-master
- name: Install latest version of Docker on Minion.
yum: name=kubernetes-1.3.0-0.3.git86dc49a.el7 state=present
- name: start the kubernetes kubelet
service: name=kubelet state=restarted enabled=yes
- name: start the kubernetes kube-proxy
service: name=kube-proxy state=restarted enabled=yes
- name: uncordon the minion.
command: kubectl uncordon {{ ansible_default_ipv4.interface }}
delegate_to: kubernetes-master
我的清单文件如下所示:
[kubernetes-masters]
172.29.219.102
[kubernetes-minions]
172.29.219.105
172.29.219.106
172.29.219.107
现在,我已经定义了目标组tp be hosts:kubernetes minions,实际的yum更新应该在该组中进行,但是在对每个minion运行此步骤之前,我需要在kubernetes master上封锁这些节点
现在我面临的问题是如何告诉ansible,对于封锁/解除封锁的步骤,在kubernetes主节点上执行,而不是在仆从节点上执行。我试着用delegate_to:kubernetes master,但它似乎是在对仆从本身进行操作
编辑::仆从的升级将按顺序进行,而不是并行进行,以最大限度地减少停机时间 缩进的正确代表应与任务处于同一级别,并从您的组中选择单个主控:
主持人:
[kubernetes-masters]
ku1
[kubernetes-minions]
ku2
ku3
剧本:
---
- hosts: kubernetes-minions
gather_facts: no
connection: local
serial: 1
tasks:
- debug: msg="cordon"
delegate_to: "{{ groups['kubernetes-masters'] | first }}"
- debug: msg="update minion"
- debug: msg="uncordon"
delegate_to: "{{ groups['kubernetes-masters'] | first }}"
@为了实现自动化,我希望事情尽可能简单。当你提到两个剧本时,你的意思是一个剧本要封锁/解禁大师,另一个剧本要更新软件包吗?谢谢。这就是我要找的。因为我对Ansible比较陌生,所以我在学习各种策略。是否有指向指定如何在剧本中使用IP/组的任何文档的链接。我的意思是如何调用在我的库存文件的组下定义的剧本中的特定值。