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?
- Konfiguro makinën e kontrollit Ansible
- Përcaktoni përdoruesin dhe çelësin SSH
- Krijoni skedarin e inventarit
- Krijo Libër Play Ansible
- Vendosni serverin duke përdorur Playbook
- 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 provisionTani 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 rsaTani 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.iniNgjitni konfigurimin e mëposhtëm atje.
[webserver]
ansi01 ansible_host=10.0.15.21
ansi02 ansible_host=10.0.15.22Ruaje 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.iniRuaje 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_hostsGjurmë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
doneMë 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=restartedRuaje 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 idTani 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.22Dhe 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