2017-03-29 5 views
0

Ich schreibe ein Ansible-Playbook, das die Kubernetes-Version auf den Minions aktualisiert.Ansible-Playbook für zwei Gruppen

- 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 

Meine Inventardatei sieht aus wie ::

[kubernetes-masters] 
172.29.219.102 

[kubernetes-minions] 
172.29.219.105 
172.29.219.106 
172.29.219.107 

Jetzt habe ich die Zielgruppe tp sein hosts: kubernetes-minions definiert, wo die eigentliche yum update geschehen soll, aber bevor dieser Schritt auf jedem Untergebener laufen, ich Ich muss diese Knoten auf der kubernetes-master

cordon Jetzt ist das Problem, wie anselsible, dass für den Schritt der cordon/uncordon, tun Sie es auf der Kubernetes-Master-Knoten und nicht die Günstling. Ich habe versucht, delegate_to: kubernetes-master zu verwenden, aber es scheint, als ob es den Schritt auf dem Diener selbst ausgeführt hat.

EDITIEREN :: Das Upgrade auf die Minions wird sequentiell und nicht parallel durchgeführt, um Ausfallzeiten zu minimieren.

+0

@techraf Für die Im Interesse der Automatisierung möchte ich die Dinge so einfach wie möglich halten. Wenn du zwei Spiele erwähnst, meinst du ein Spiel zum Kordon/Uncordon auf dem Meister und das andere Spiel, um das Paket zu aktualisieren? –

Antwort

1

Correct delegate_to Vertiefung (sollte als Aufgabe auf gleicher Höhe sein) und Single-Master aus Ihrer Gruppe auswählen:

Gastgeber:

[kubernetes-masters] 
ku1 

[kubernetes-minions] 
ku2 
ku3 

Textbuch:

--- 
- 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 }}" 
+0

Danke. Das ist, was ich gesucht habe. Da ich relativ neu zu Ansible bin, lerne ich verschiedene Strategien kennen. Gibt es einen Link zu einer Dokumentation, die angibt, wie IPs/Gruppen in einem Playbook verwendet werden? Ich meine, wie kann ich bestimmte Werte in einem Playbook aufrufen, die unter Gruppen in meiner Inventardatei definiert sind. –

+1

Die relevantesten Dokumente zu diesem Thema sind [hier] (http://docs.ansible.com/ansible/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts). –

Verwandte Themen