• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    INDIANCentralizovaná správa stanic a ostatních prvků v síti - automation/monitoring/alerting a dalsi devops nastroje
    FRANCIMOUR
    FRANCIMOUR --- ---
    ADM: no já jsem to teď zkusil dát s plnou cestou:
    57 14 * * 2 root /usr/bin/find /Users/*/Library/Application\ Support/MobileSync/Backup -type f -mtime +90 -exec rm -f {} \;

    musím tam mít nějakou blbou chybu, že se to ani nechytne
    ADM
    ADM --- ---
    FRANCIMOUR: zkusil bych: plnou cestu napr. /usr/bin/find, do crontabu promennou SHELL="/path/to/shell/idealne/bash", spustit find v shellu neco jako /bin/sh -c "find blabla",
    FRANCIMOUR
    FRANCIMOUR --- ---
    DEFILA: OK tak jsem se podvolil a enabloval roota. crontab -e

    30 14 * * 2 root find /Users/*/Library/Application\ Support/MobileSync/Backup -type f -mtime +90 -exec rm -f {} \;

    ale tam mrcha se v uvedený čas nepustí. system.log mlčí
    FRANCIMOUR
    FRANCIMOUR --- ---
    DEFILA: Od roota se snsžím držet co nejdál, protože MacOS už párkrát měl idsues s rootem. Přepravňocat se mi to pro admina taky nechce.

    Pravda je, že bych mohl mít playbook, který bych pouštěl ručně a ten by to promázl ale chtěl jsem tu udělat automatické. Zkusím se podívat na ten playbook, který by udělal ten cron.

    Ještě dodatečná otázka, na kterou mi pan G nedokázal odpovědět: existuje na MacOSu něco jako na Linuxu /etc/cron.d/cron.daily? (Nebo tak nějak, cestu už si moc nepamatuju)
    DEFILA
    DEFILA --- ---
    FRANCIMOUR:
    pointa je, ze ne tak docela, ten tvuj command

    find /Users/$UserName/Library/Application\ Support/MobileSync/Backup -type f -mtime +90 -exec rm -f {} \;

    nahradi ansible za find /Users/{{ item }}/Library/Application\ Support/MobileSync/Backup -type f -mtime +90 -exec rm -f {} \;

    kdy item, se zmeni na jmeno uzivatele, ktereh vytahe z /etc/passwd a tedy kazdy uzivatel dostane zaznam do cronu (pokud to chces takhle)
    hezci reseni mi prijde, vykaslat se na kazdeho uzivatele/server/cron, proste mit na "master" Ansiblu takovyhle(podobny) - playbook - ten poustet v nejakem casovem intervalu a nemusis mit nic na jednotlivych hostech v cronu, jelikoz si to osahas z master nodu

    a taky se muzes uplne vykaslat na definici uzivatelu, proste prohledas /Users/*/DALSI_CESTA - vsechny soubory, ktere se jmenuji Backup a proste je smazes ... (pokud mas nejakeho super-uzivatele, ktery ma pristup do vsech podadresaru)
    FRANCIMOUR
    FRANCIMOUR --- ---
    DEFILA: no ale pokud to chápu dobře tak bych to musel dělat pro každého uživatele ne?

    Já mám teď plist (txt v příloze).
    a script je:

    #!/bin/bash

    UserName=`whoami`
    find /Users/$UserName/Library/Application\ Support/MobileSync/Backup -type f -mtime +90 -exec rm {} \;

    Ale plist hází stejně chybu exited with abnormal code: 1

    Jde mi to, že se dělají v Itunes backupy, které potřebuji po 90 mazat... na každém kompu je cca 10 uživatelů a já hledám nejvíce smooth cestu.



    DEFILA
    DEFILA --- ---
    DEFILA:
    respektive chytam uzivatele 1000 - 1999 :D
    DEFILA
    DEFILA --- ---
    FRANCIMOUR:
    mno samozrejme nevim, jak to funguje na MACu, ale je to jednodussi nez tohle v Ansiblu?
    (kdy si tim grepem chytam akorat uzivatele, kteri maji ID >= 1000, predpokladam, ze to chces pro custom uzivatele a ne pro vsechny systemovy "demony"

    - hosts: localhost
      become: yes
      tasks:
        - name: chytnu_uzivatele
          shell: 'egrep ":[1][0-9]{3}" /etc/passwd | cut -d: -f1'
          register: moji_uzivatele
    
        - name: a_pustim_cron
          cron:
            name: "cron_update"
            minute: "0"
            hour: "1"
            job: "ls -lt"
            user: "{{ item }}"
          with_items:
            - "{{ moji_uzivatele.stdout_lines }}"
    ...
    
    FRANCIMOUR
    FRANCIMOUR --- ---
    INDIAN: zkouším teď variantu přes LaunchAgents..
    Nejsem si totiž jist jestli bych přes Ansible pochodil s vytvořením cronu pro každého usera
    INDIAN
    INDIAN --- ---
    FRANCIMOUR:
    cron – Manage cron.d and crontab entries — Ansible Documentation
    https://docs.ansible.com/ansible/latest/modules/cron_module.html
    FRANCIMOUR
    FRANCIMOUR --- ---
    Hoj,

    zase dotaz..

    potřebuju vytvořit cron pro každého uživatele na MacOSu .. existuje nějaká jednodušší varianta, než to dělat ručně? Idealně aby se to pouštělo z jednoho místa a bez root?
    MUXX
    MUXX --- ---
    DEFILA: To neznam. Prozkoumam, diky za tip.
    DEFILA
    DEFILA --- ---
    MUXX: tak však se localhost explicitně nevyhodnocuje, ne? Tedy poslat vše na tvé hosty a pokud to je OK, tak v posledním kroku localhost... Nebo jsem něco minul?
    MUXX
    MUXX --- ---
    Udelal jsem si v ansible task na update OS i s rebootem. Ted jsem ale narazil na to, ze bych chtel updatovat i OS linuxu na kterym ten playbook poustim. Tim si ale zabiju ten prave bezici playbook. Task poustim pres Jenkins. Neresil nekdo podobnou vec? Napada me leda udelat to tak, ze pouziju dve VM. Nejdriv updatnu jednu a dozvim se vysledek a z te updatnute pak updatnu druhou a mam vysledek. Prehlizim nejaky jednodussi reseni?
    DRON
    DRON --- ---
    INDIAN: jj, neprijemne je, ze takto lze elegantne klice pridavat, ale pokud nejakeho uzivatele degradujes, klice se neodeberou. V tomto pripade by centralni autentizace mohla byt resenim.
    INDIAN
    INDIAN --- ---
    MUXX:
    si je v inventory zarad do skupin a pro kazdej prislusnej host... neco ve stylu:
    - name: Set authorized key for DEV
      authorized_key:
        state: present
        key: "{{ lookup('file', 'keys/dev_id_rsa.pub') }}"
      when: inventory_hostname in groups['dev']
    
    - name: Set authorized key for QA
      authorized_key:
        state: present
        key: "{{ lookup('file', 'keys/qa_id_rsa.pub') }}"
      when: inventory_hostname in groups['qa']
    


    Anebo si treba v group_vars/all.yml nadefinuj slovnik klicu:
    ssh_keys:
      dev: 'keys/dev_id_rsa.pub'
      qa: 'keys/qa_id_rsa.pub'
    

    a ten play zavolas jen jednou a vytahnes si prislusnej klic dle skupiny:
    
    - name: Get path for key
      set_fact:
        key_path: "{{ ssh_keys[group_names[0]] }}"
    - name: Set authorized key
      authorized_key:
        state: present
        key: "{{ lookup('file', keys_path) }}"
    

    (tohle bude ale fungovat v pripade pouze jedny skupiny)
    MUXX
    MUXX --- ---
    Potreboval bych popostrcit spravnym ansible smerem. Mam cca 25 VM a k tomu cca 6 uzivatelu. Kazdy z techto uzivatelu ma SSH pristup do nekolika VM. Typicky admin vsude, senior dev na polovinu VM, junior dev na tri VM, tester na jine tri VM.
    Jak to poskladat do ansible tak, abych pushnul klice na odpovidajici VM? Nebo se na to mam vykaslat a zkusit to pres AD/LDAP?
    FRANCIMOUR
    FRANCIMOUR --- ---
    RUDOLF: Ansible mám u sebe lokálně, a instalace běží na vzdáleném stroji přes SSH.
    RUDOLF
    RUDOLF --- ---
    FRANCIMOUR: jen drobnost, chápu správně, že to instaluješ přes ansible na stroji, kde ten ansible běží? pak to musí být lokální akce..
    FRANCIMOUR
    FRANCIMOUR --- ---
    DRON: Jsem v tomto smeru amater... pro me je zaklad ze to dela to co chci, ale kouknu na to diky moc :)
    Kliknutím sem můžete změnit nastavení reklam