Konfiguro përdoruesin e ri dhe vërtetimin e çelësit SSH. duke përdorur Ansible në Ubuntu 18.04


Ansible është një mjet i thjeshtë automatizimi që automatizon vendosjen e aplikacioneve softuerike, sigurimin e cloud dhe menaxhimin e konfigurimit. Është një mjet orkestrimi i serverit që ju ndihmon të menaxhoni dhe kontrolloni një numër të madh nyjesh serveri nga vende të vetme të quajtura Makinat e Kontrollit. Ansible u krijua nga Michael DeHaan në 2012 dhe është shkruar në Python dhe Powershell.

Në këtë tutorial, ne do të mësojmë se si të vendosim një përdorues të ri dhe të aktivizojmë vërtetimin e bazuar në çelësat SSH duke përdorur mjetin e automatizimit Ansible. Do të mësojmë gjithashtu se si të konfigurojmë makinën e kontrollit Ansible, si dhe si të shkruajmë libër të thjeshtë ansible.

Parakushtet

  • 2 ose më shumë serverë Ubuntu 18.04
    • 10.0.15.10      makineri kontrolli
    • 10.0.15.21      ansi01
    • 10.0.15.22      ansi02

    Çfarë do të bëjmë ne?

    1. Konfiguro makinën e kontrollit Ansible
    2. Përcaktoni përdoruesin dhe çelësin SSH
    3. Krijoni skedarin e inventarit
    4. Krijo Libër Play Ansible
    5. Vendosni serverin duke përdorur Playbook
    6. Testimi

    Hapi 1 - Konfiguroni makinën e kontrollit Ansible

    Në këtë tutorial, ne do të përdorim serverët Ubuntu 16.04 si kontrollues të makinës ansible dhe hoste ansible. Hapi i parë që duhet të bëjmë është të konfigurojmë makinën e kontrollit.

    Ne do të instalojmë python dhe ansible në makinën e kontrollit ansible duke ekzekutuar komandën e mëposhtme.

    sudo apt install python ansible -y

    Pas përfundimit të instalimit, ne do të shtojmë një përdorues të ri të sistemit.

    Ne do të shtojmë një përdorues të ri me emrin provision për të kryer provizionimin e serverit duke përdorur Ansible.

    Shto dispozitë të re të përdoruesit dhe jepi përdoruesit një fjalëkalim.

    useradd -m -s /bin/bash provision
    passwd provision

    Tani shtoni përdoruesin e provizionit për sudo pa fjalëkalim duke krijuar skedar të ri konfigurimi nën /etc/sudoers.d/ duke përdorur komandën më poshtë.

    echo  -e 'provision\tALL=(ALL)\tNOPASSWD:\tALL' > /etc/sudoers.d/provision

    Është krijuar një përdorues i ri dhe tani ai mund të përdorë sudo pa një fjalëkalim.

    Hapi 2 - Përcaktoni përdoruesin dhe çelësin SSH

    Në këtë hap, ne do të përcaktojmë përdoruesin për hostet ansible. Ky përdorues do të krijohet automatikisht nga ansible, kështu që ne vetëm duhet të përcaktojmë emrin e përdoruesit, fjalëkalimin dhe çelësin publik ssh.

    Për çdo server (ansi01 dhe ansi02), ne do të krijojmë një përdorues të ri të quajtur provision me fjalëkalim sekret01. Dhe ne duhet të kodojmë fjalëkalimin sekret01 duke përdorur komandën mkpasswd.

    Enkriptoni fjalëkalimin sekret01 duke përdorur komandën e mëposhtme.

    mkpasswd --method=SHA-512
    TYPE THE PASSWORD 'secret01'

    Shënim:

    Sigurohuni që paketa whois të jetë e instaluar në sistem, ose mund ta instaloni duke përdorur komandën e mëposhtme.

    sudo apt install whois -y

    Dhe do të merrni fjalëkalimin e koduar SHA-512.

    Më pas, ne do të gjenerojmë një çelës të ri ssh.

    Hyni në përdoruesin e provizionit dhe gjeneroni çelësin ssh duke përdorur komandën ssh-keygen.

    su - provision
    ssh-keygen -t rsa

    Tani përdoruesi dhe fjalëkalimi janë përcaktuar, dhe çelësi ssh është krijuar l (i vendosur në drejtorinë .ssh).

    Hapi 3 - Krijoni inventar të ri

    Në këtë hap, ne do të përcaktojmë skedarët e inventarit për të gjithë hostet e serverëve.

    Identifikohu si përdorues i provizionit dhe krijoni një drejtori të re për projektin.

    su - provision
    mkdir -p ansible01/

    Shkoni te drejtoria ansible01 dhe krijoni një skedar të ri inventar inventory.ini duke përdorur vim.

    cd ansible01/
    vim inventory.ini

    Ngjitni konfigurimin e mëposhtëm atje.

    [webserver]
    ansi01 ansible_host=10.0.15.21
    ansi02 ansible_host=10.0.15.22

    Ruaje dhe dil.

    Tani krijoni një skedar të ri konfigurimi ansible ansible.cfg.

    vim ansible.cfg

    Ngjitni konfigurimin e mëposhtëm atje.

    [defaults]
    inventory = /home/provision/ansible01/inventory.ini

    Ruaje dhe dil.

    Skedari i inventarit ansible është krijuar dhe skriptet tona ansible do të vendosen nën përdoruesin e provizionit, brenda drejtorisë ansible01.

    Hapi 4 - Krijo Libër Play Ansible

    Ansible Playbook është një grup instruksionesh që dërgoni për t'u ekzekutuar në një ose grup hostesh të serverëve. Ai përfaqëson sigurimin ansible, ku automatizimi përcaktohet si detyra, dhe të gjitha punët si instalimi i paketave, redaktimi i skedarëve, do të kryhen nga module ansible.

    Në këtë hap, ne do të krijojmë një libër të ri ansible për të vendosur një përdorues të ri, për të vendosur çelësin ssh dhe për të konfiguruar shërbimin ssh.

    Përpara se të krijojmë një libër të ri ansible playbook, ne do të skanojmë të gjithë gjurmët e gishtave të serverit duke përdorur komandën ssh-keyscan si më poshtë.

    ssh-keyscan 10.0.15.21 >> ~/.ssh/known_hosts
    ssh-keyscan 10.0.15.22 >> ~/.ssh/known_hosts

    Gjurmët e gishtave të këtyre serverëve do të ruhen në skedarin .ssh/known_hosts.

    Shënim:

    Nëse keni shumë nyje serveri, mund të ruani listën tuaj të hosteve dhe më pas të skanoni manualisht gjurmën e gishtit të çelësit ssh duke përdorur skriptin bash siç tregohet më poshtë.

    for i in $(cat list-hosts.txt)
    do
    ssh-keyscan $i >> ~/.ssh/known_hosts
    done

    Më pas, krijoni librin e lojërave ansible të quajtur deploy-ssh.yml duke përdorur vim.

    vim deploy-ssh.yml

    Ngjit duke ndjekur librin e lojërave ansible atje.

    ---
    - hosts: all
      vars:
        - provision_password: '$6$w9S3t7x1kRtmG0u$6nVU9KZsC12Q8DYI4FtgKPy.e/cq/jseB/.DViTO1SpUnoCy.dxcOf8hyfitGq5V0yhgXccxzlqm2o.I3SlDJ0'
      gather_facts: no
      remote_user: root

      tasks:

      - name: Add a new user named provision
        user:
             name=provision
             password={{ provision_password }}

      - name: Add provision user to the sudoers
        copy:
             dest: "/etc/sudoers.d/provision"
             content: "provision  ALL=(ALL)  NOPASSWD: ALL"

      - name: Deploy SSH Key
        authorized_key: user=provision
                        key="{{ lookup('file', '/home/provision/.ssh/id_rsa.pub') }}"
                        state=present

      - name: Disable Password Authentication
        lineinfile:
              dest=/etc/ssh/sshd_config
              regexp='^PasswordAuthentication'
              line="PasswordAuthentication no"
              state=present
              backup=yes
        notify:
          - restart ssh

      - name: Disable Root Login
        lineinfile:
              dest=/etc/ssh/sshd_config
              regexp='^PermitRootLogin'
              line="PermitRootLogin no"
              state=present
              backup=yes
        notify:
          - restart ssh

      handlers:
      - name: restart ssh
        service:
          name=sshd
          state=restarted

    Ruaje dhe dil.

    Në skenarin e librit të luajtjes:

    • ne krijojmë skriptin e librit të luajtjes deploy-ssh.yml për t'u aplikuar në të gjithë serverët e përcaktuar në skedarin inventory.ini.
    • Ne krijojmë variablin ansible provision_password, që përmban fjalëkalimin e koduar për përdoruesin e ri.
    • Vendosni faktet Ansible në nr.
    • Përcaktoni përdoruesin rrënjë si një përdorues të largët për të kryer automatizimin e detyrave.
    • Ne krijojmë detyra të reja për shtimin e një përdoruesi të ri, shtojmë përdoruesin në sudoers dhe ngarkojmë çelësin ssh.
    • Ne krijojmë detyra të reja për konfigurimin e shërbimeve ssh, çaktivizimin e hyrjes në rrënjë dhe çaktivizimin e vërtetimit të fjalëkalimit. Detyrat për konfigurimin e ssh do të aktivizojnë rinisjen e mbajtësve ssh.
    • Ne krijojmë një mbajtës për të rifilluar shërbimin ssh.

    Hapi 5 - Drejtoni Playbook

    Hyni te përdoruesi i provizionit dhe shkoni te drejtoria ansible01.

    su - provision
    cd ansible01/

    Tani ekzekutoni librin e luajtjes deploy-ssh.yml duke përdorur komandën siç tregohet më poshtë.

    ansible-playbook deploy-ssh.yml --ask-pass

    Shkruani fjalëkalimin tuaj root dhe do të merrni rezultatin si më poshtë.

    Të gjitha detyrat për vendosjen e një përdoruesi të ri dhe një çelës ssh janë përfunduar me sukses.

    Hapi 6 - Testimi

    Testoni duke përdorur komandën ansible.

    ansible webserver -m ping
    ansible webserver -m shell -a id

    Tani do të merrni mesazhet jeshile si më poshtë.

    Tani ne mund t'i menaxhojmë ata serverë ansi01 dhe ansi02 duke përdorur Ansible, dhe përdoruesi i provizionit do të jetë përdoruesi i parazgjedhur për Ansible.

    Testimi i lidhjes me serverët

    ssh 10.0.15.21
    ssh 10.0.15.22

    Dhe do të lidheni me secilin server duke përdorur skedarin e paracaktuar të çelësit .ssh/id_rsa dhe duke përdorur dispozitën e përdoruesit.

    Vendosja e përdoruesit të ri dhe çelësi ssh duke përdorur ansible është përfunduar me sukses.

    Referenca

    • http://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html