Skip to main content

Serial

Serial används för att utföra ett jobb på enbart ett visst antal enheter i en grupp åt gången.

Serial definieras .yml-filen som kör jobbet, ex:

---
- name: Ladda upp IOS-XE mjukvara till routrar
  hosts: routers
  serial: 20

Har man 1000 routrar kommer då enbart 20 köras åt gången.

Det går att använda serial på flera sätt:

# Med nedan så körs först 1 host, sedan 5 och för resterande som finns kvar körs 10 i taget
  serial:
    - 1
    - 5
    - 10

# Med nedan körs först 1, sedan 10% av de som finns kvar och sedan 25% av de som finns kvar tills allt är klart
  serial:
    - 1          # First: 1 host (canary)
    - "10%"      # Second: 10% of remaining
    - "25%"      # Third+: 25% of remaining

# Kombinera med max_fail_Percentage för att avsluta jobbet om för många misslyckas

  serial: 5
  # Stop if more than 20% of hosts fail
  max_fail_percentage: 20

# Avsluta jobbet om 1 fel uppstår

  serial: 1
  # Stop on first failure
  any_errors_fatal: true

I mitt exempel så använder jag serial för att uppgradera routrar. Då är det bra med en check om rätt mjukvara redan finns så att det inte sker på nytt, jobbet avslutas med meta för den här hosten om den redan finns:

  tasks:

    - name: Kontrollera nuvarande mjukvara
      cisco.ios.ios_command:
        commands:
          - "show install active | include {{ image_version }}"
      register: current_firmware

    - name: Stoppa om version redan är installerad
      meta: end_host 
      when: image_version in current_firmware.stdout[0]