Portál AbcLinuxu, 9. května 2025 06:32

Dotaz: Ansible - co dělám špatně ?

2.2.2022 13:22 Pavel
Ansible - co dělám špatně ?
Přečteno: 581×
Odpovědět | Admin
Dobrý den.
Snažím se o první kroky s Ansiblem.
Řekl jsem si, že si udělám dva testovací servery a pomocí ansiblu se na nich pokusím vykonat dva příkazy "apt update && apt upgrade".
Bohužel, po spuštění playbooku dostávám tyto chyby a nedokážu si s tím jako absolutní začátečník poradit :(
cat ~/Work/ansible/test/inventory
[test_servers]
test1 ansible_host=192.168.1.11
test2 ansible_host=192.168.1.12

[test_servers:vars]
ansible_port=2222
ansible_user=root
ansible_ssh_private_key_file=~/.ssh/id_ed25519
ansible_python_interpreter=/usr/bin/python
cat ~/Work/ansible/test/apt.yml
---

- name: Update repositories cache
  apt:
    update_cache: yes
    cache_valid_time: 3600

- name: Update all packages to their latest version
  apt:
    name: "*"
    state: latest
No a když spustím playbook, dostávám toto...
ansible-playbook -i inventory apt.yml --check

ERROR! 'apt' is not a valid attribute for a Play

The error appears to be in '/home/pavel/Work/ansible/test/apt.yml': line 3, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


- name: Update repositories cache
  ^ here
Už opravdu nevím :(

Za každou radu děkuji.
Pavel
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.2.2022 14:06 David Spudich
Rozbalit Rozbalit vše Re: Ansible - co dělám špatně ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příloha:
Nemas tam vubec definovanu tu play jako takovou. Mrkni do prilohy na priklad.

David
2.2.2022 16:48 Pavel
Rozbalit Rozbalit vše Re: Ansible - co dělám špatně ?
Díky za nakopnutí. Bylo to ono :-)
2.2.2022 16:58 Pavel
Rozbalit Rozbalit vše Re: Ansible - co dělám špatně ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Díky Davidovi se mi to podařilo rozjet.
Výsledek mé první tvorby viz. níže. Na první pohled bych řekl, že mi to funguje. Jediné, s čím bojuju, tak je to, že moje "inventory" obsahuje 8 serverů a mě přijde vždy 8 emailů s notifikacemi, co všechno se aktualizovalo. Tedy, účel je splněn. Teď už by to ale chtělo jenom lehkou kosmetiku a to aby mi přišel pouze jeden souhrný email se servery 1 až 8 na místo 8 separátních emailů. To, jak jsem koukal, bude nejspíš takový překladatelský oříšek, tak kdyby náhodou někdo věděl.....tak sem s tím :)

Tady je můj výsledek celodenního hraní a testování...
Znovu říkám, dnes vidím ansible poprvé v živote...

Proto budu rád za veškeré připomínky k tomu, co případně pozměnit, jak a proč.

Děkuju :-)
Pavel
---
- name: Update all Debian packages to their latest versions
  hosts: all
  serial: 1

  tasks:
  - name: Update repositories cache
    apt:
      update_cache: yes
      cache_valid_time: 3600

  - name: Install python-apt if not installed
    apt:
      name: python-apt
      state: present
    register: result

  - name: Update all packages to their latest version
    apt:
      name: "*"
      state: latest
    register: result

  - name: Check if reboot required
    stat:
      path: /var/run/reboot-required
    register: reboot_required_file

  - name: Reboot if required
    reboot:
    when: reboot_required_file.stat.exists == true

  - name: Wait for the machine to come back online
    wait_for_connection:
      connect_timeout: 60
      sleep: 5
      delay: 5
      timeout: 300

  - name: Remove useless packages from the cache
    apt:
      autoclean: yes
    register: result

  - name: Remove dependencies that are no longer required
    apt:
      autoremove: yes
    register: result

  - name: List installed and updated packages
    shell: grep -E "^$(date +%Y-%m-%d).+ (install|upgrade) " /var/log/dpkg.log |cut -d " " -f 1-4
    register: result

  - name: Show Output
    debug: msg="{{ result.stdout_lines }}"

  - name: Send result to email recipients
    mail:
      host: mail.mojedomena.cz
      port: 587
      username: ansible@mojedomena.cz
      password: mojeheslo123
      from: ansible@mojedomena.cz
      to:
      - Pavel Novák pavel.novak at mojedomena.cz
      - Petr Novák petr.novak at mojedomena.cz
      subject: report aktualizací
      body:  |
        Na serveru {{ ansible_hostname }} byly nainstalovány níže uvedené aktualizace:
        
              {% for line in result.stdout_lines %}
              {{ line }}
              {% endfor %}


2.2.2022 18:22 X
Rozbalit Rozbalit vše Re: Ansible - co dělám špatně ?
Neco ve smyslu:
...
register: update_result
...
mail:
      host: mail.mojedomena.cz
      from: ansible@mojedomena.cz
      to:
      - Pavel Novák pavel.novak at mojedomena.cz
      - Petr Novák petr.novak at mojedomena.cz
      subject: report aktualizací
      body:  |
        {% for host in ansible_play_hosts %}       
        {% if hostvars[host]['result'].stdout is defined %}

        Na serveru {{ hostvars[host]['inventory_hostname'] }}
        byly nainstalovány níže uvedené aktualizace:
        {{ hostvars[host]['update_result'].stdout }}

        {% endif %}
        {% endfor %}
pls. nikam nedavej zadna hesla.. oK?
2.2.2022 18:51 Pavel
Rozbalit Rozbalit vše Re: Ansible - co dělám špatně ?
Parááááda :)
Díky moc, funguje, jen jsem na konec musel přidat "run_once: True"
...bez toho přiházel souhrnný email 8x.

Ještě jednou velké Ď :-)

Děkuju,
Pavel
3.2.2022 09:07 Pael
Rozbalit Rozbalit vše Re: Ansible - co dělám špatně ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ještě se zeptám, nemám tam ten "register: result" až zbytečně moc často ?

Je pravda, že původně jsem zamýšlel abych..
- se dozvěděl, že na koncovém stroji byla provedena instalace python-apt
- že se čekalo na reboot serveru, protože po aktualizaci bylo potřeba server rebootovat (kernel)
- a i o těchto stavech aby jsem se dozveděl v závěrečném mejl reportu

Mohl bych poprosit pana "X" a Davida, zda-li by mi to ještě jednou neprošel a nedal doporučení ? Taky pan "X" píše abych nikde nikam nepsal hesla. V tom případě nevím, jak to mám udělat, protože na SMTP serveru se potřebuju autorizovat. Tak bylo tím myšleno udělat include na authentifikaci a tu mít hozenou někde bezpečně bokem ? Nebo do toho nějak "zakomponovat" ansible-vault ?

Dnes je to druhý den, co se snažím si s Ansiblem hrát a zatím se mi to líbí :-)

Děkuju,
Pavel
3.2.2022 19:48 X
Rozbalit Rozbalit vše Re: Ansible - co dělám špatně ?
Par poznamek. Ten 'register:' vraci pojmenovany vystup. Takze si jednotlive operace muzes rozdelit 'register: output_upgrade', register: output_disk_check' a vystup dale zpracovat podle potreby. Zadruhe pri posilani mailu se v bezne praxi nikdy nepouzivaji prihlasovaci udaje, protoze mas SMTP server pod kontrolou. Jestli se hlasis z domova na Seznam tak je to samozrejme rozdil a spatny napad.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.