GNU/Linux >> Znalost Linux >  >> Linux

4 kroky k vytvoření uživatelů Linuxu ze souboru csv pomocí Ansible

Ansible zjednodušil automatizaci a stal se univerzálním automatizačním jazykem. V současnosti jsou výhody v IT komunitě dobře známé. Stejně jako u všech dobrých technologií však mohou existovat výzvy, kterým je třeba čelit, nebo přístupy, které lze kombinovat. Zvažte použití souborů CSV (comma-separated value) a Ansible k vytvoření uživatelských účtů Linuxu.

V tomto článku je cílem zautomatizovat vytváření uživatelů pomocí Ansible. Seznam uživatelů lze předat prostřednictvím externího souboru proměnných pomocí vars_files nebo přímo do playbooku pomocí smyčky. Problém nastává, když je seznam uživatelů, kteří mají být vytvořeni, dostupný pouze ve formátu jako CSV, zatímco pro vývojáře Ansible je pohodlnější používat seznam YAML. Osobně jsem zažil situace, kdy je seznam uživatelů včetně hesel poskytnut v souboru CSV s požadavkem vytvořit tyto uživatele na více počítačích s Linuxem pomocí automatizačního nástroje, jako je Ansible.

[ Také by se vám mohlo líbit: Automatizujte nasazení virtuálních strojů pomocí Ansible:Design ]

Jaké je řešení?

Naštěstí se Ansible dodává s více než tisíci moduly, včetně jednoho pro čtení souborů CSV. Tento modul může poskytnout přesně to, co je pro tento úkol potřeba. Níže uvidíte modul v akci.

Zvažte soubor CSV, který obsahuje více polí, například Uživatelské jméno , UID , Křestní jména , Příjmení , Skupiny a Heslo je uvedeno níže. Požadavkem je vytvořit všechny tyto uživatele s jejich relevantními informacemi na více linuxových serverech.

Username,UID,First_name,Last_name,Groups,Password
booker12,9012,Rachel,Booker,Operations,iambooker
grey07,2070,Laura,Grey,Developers,iamgrey
johnson81,4081,Craig,Johnson,Operations,iamjohnson
jenkins46,9346,Mary,Jenkins,Developers,iamjenkins
smith79,5079,Jamie,Smith,Operations,iamsmith

Krok 1

Nyní, když máte soubor CSV, dalším krokem je přimět Ansible ke čtení tohoto souboru CSV. K tomu použijte read_csv modul. Chcete-li vytisknout, jak Ansible analyzoval CSV, použijte ladění modul. Všimněte si použití delegate_to:localhost v prvním úkolu. Důvodem je soubor username.csv je přítomen na řídicím uzlu a nikoli na spravovaných hostitelích. Ansible analyzuje tento CSV ve formátu seznamu s více slovníky uvnitř. Proto je potřeba přidat seznam podproměnných na konec vaší původní registrované proměnné user_list .

---
- name: create users from csv file
  hosts: all
  tasks:
   - name: reading the csv file
     read_csv:
      path: username.csv
     register: user_list
     delegate_to: localhost

   - name: display user_list data
     debug:
      var: user_list.list

Krok 2

Při spuštění této příručky uvidíte, že výstup obsahuje seznam, jak je naznačeno dvojicí hranatých závorek. Tento seznam dále obsahuje slovník, který je označen složenými závorkami. Každý řádek v souboru CSV byl převeden do slovníku na základě čárky mezi nimi. Slovník se používá k ukládání dat do dvojice klíčů a hodnot. Klíč je například First_name a hodnota je Rachel .

ok: [192.168.0.3] => {
    "user_list.list": [
        {
            "First_name": "Rachel",
            "Groups": "Operations",
            "Last_name": "Booker",
            "Password": "iambooker",
            "UID": "9012",
            "Username": "booker12"
        },
        {
            "First_name": "Laura",
            "Groups": "Developers",
            "Last_name": "Grey",
            "Password": "iamgrey",
            "UID": "2070",
            "Username": "grey07"
        },
        {
            "First_name": "Craig",
            "Groups": "Operations",
            "Last_name": "Johnson",
            "Password": "iamjohnson",
            "UID": "4081",
            "Username": "johnson81"
        },
      -------OUTPUT OMITTED-------
        }
    ]
}

Krok 3

Pomocí Ansible jste úspěšně schopni číst a tisknout soubor CSV. Nyní je čas zkusit extrahovat jednu z těchto hodnot, abyste zjistili, zda můžete manipulovat s tímto slovníkem tak, aby vyhovoval potřebám uživatele modul v Ansible. Zkuste něco základního, jako je extrahování hodnoty Uživatelského jména klíč pro všechny slovníky v tomto seznamu. K tomu použijete Uživatelské jméno slovníku klíč jako podproměnná pro vaši smyčku Ansible.

----OUTPUT OMITTED----
- name: extract Username from all dictionaries
  debug:
    msg: "{{ item.Username }}"
    loop: "{{ user_list.list }}"

ok: [192.168.0.3] => (item={'Username': 'booker12', 'UID': '9012', 'First_name': 'Rachel', 'Last_name': 'Booker', 'Groups': 'Operations', 'Password': 'iambooker'}) => {
    "msg": "booker12"
}
ok: [192.168.0.3] => (item={'Username': 'grey07', 'UID': '2070', 'First_name': 'Laura', 'Last_name': 'Grey', 'Groups': 'Developers', 'Password': 'iamgrey'}) => {
    "msg": "grey07"
}
----OUTPUT OMITTED----

Jak můžete vidět zde, extrahovali jste Uživatelské jméno hodnoty ze slovníků. Pomocí stejného konceptu můžete tyto hodnoty vložit do name pole uživatele modul k vytvoření uživatelů.

Krok 4

Nyní, když jste extrahovali hodnotu požadovaného klíče, měli byste být schopni pracovat se všemi páry klíče a hodnoty. Vložte je do uživatele modul pro vytvoření vašich uživatelů se všemi požadovanými informacemi. Všimněte si hesla možnost uživatelského modulu. Obsahuje filtr pro zašifrování Hesla hodnotu pomocí algoritmu SHA-512. To je způsobeno tím, že RHEL8 používá SHA-512 k šifrování uživatelských hesel. Toto heslo je uloženo v zašifrovaném formátu v /etc/shadow soubor na spravovaných hostitelích. Také komentář obsahuje dvě proměnné, protože chcete GECOS (Uživatelské komentáře) uživatele, kde bude uvedeno jeho křestní jméno a příjmení. Například uživatel booker12 budou mít své GECOS jako "Rachel Booker." Kromě toho v této úloze používáte eskalace oprávnění, protože vytvoření uživatele vyžaduje oprávnění root.

-----OUTPUT OMITTED-----  
- name: create users from the csv
  user:
    name: "{{ item.Username }}"
    uid: "{{ item.UID }}"
    groups: "{{ item.Groups }}"
    append: true
    password: "{{ item.Password | password_hash('sha512') }}"
    comment: "{{ item.First_Name }} {{ item.Last_Name }}"
    state: present
  loop: "{{ user_list.list }}"
  become: true

[ Bezplatný kurz pro vás:Technický přehled virtualizace a migrace infrastruktury. ] 

Sbalit

Úspěšně jste vytvořili dané uživatele s jejich UID , Skupiny , Heslo a GECOS extrahováním požadovaných hodnot ze souboru CSV. To se hodí, protože většina organizací používá k ukládání a správě dat formáty, jako je CSV. Vývojář Ansible, který dokáže manipulovat se soubory CSV, může efektivně spravovat své prostředí, aniž by vše od začátku zapisoval přímo do playbooku nebo do externího proměnného souboru YAML. Pro další efektivní správu vašeho prostředí bych doporučil používat Ansible Tower, což je podnikové řešení Ansible nabízené společností Red Hat. Možná také využijte nabídku školení DO447 - Advanced Automation:Ansible Best Practices.


Linux
  1. Oprávnění souborů v Linuxu s příkladem

  2. Jak vytvořit systém souborů ZFS pomocí komprese souborů v systému Linux

  3. Jak vytvořit soubor v Linuxu z okna terminálu?

  1. Vytvořte šifrovanou úschovnu v systému Linux

  2. Čtení souboru CSV s SQL dotazy z linuxového shellu

  3. Jak mohu vytvořit soubor s určitou velikostí z příkazového řádku?

  1. Jak vytvořit swap v Linuxu

  2. Jak vytvořit odkládací soubor v Linuxu

  3. Vytvořte odkládací soubor Linuxu