针对两个群体的Ansible剧本

针对两个群体的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

我正在写一本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 /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/组的任何文档的链接。我的意思是如何调用在我的库存文件的组下定义的剧本中的特定值。