Bevezetés
Napjainkban a szervereket nagyon gyakran kell létrehozni és megsemmisíteni. Ez azért van, mert időnként a szerverek nagy végrehajtási terhelést kapnak, míg máskor a terhelés csökken, ezáltal pazarolva a rendszererőforrásokat. Gyakori példa erre az eCommerce weboldalak esete az ünnepi időszakokban, amelyek nagy forgalmat vonzanak. Ha az alkalmazás jellege megköveteli a skálázhatóságot, mindig szükség van konfigurációkezelő eszközökre, hogy a szerverek létrehozásának teljes folyamata egyszerűbbé váljon. Ansible egy nagyszerű konfigurációkezelő eszköz, amely szabványos eljárások használatával automatizálja a szerverek létrehozását, csökkentve az emberi hibákat.
Az Ansible nem igényel speciális szoftver telepítését a szerverek csomópontjaira. Rendelkezik minden olyan eszközzel, amely a szkriptek írásához, összeállításához és automatizálásának megkönnyítéséhez szükséges. Ez az útmutató részletesen bemutatja, hogyan használható az Ansible a Hogyan állítsa be Ubuntu szerverét című útmutatónkban szereplő lépések automatizálására..
Előfeltételek
Az útmutató elvégzéséhez a következő rendszert fogjuk használni: Ubuntu 20.04. Ezenkívül a következőkre is szüksége lesz:
-
Egy Ansible vezérlőcsomópont: Egy Ubuntu gép, amely a legújabb Ubuntu verziót futtatja. Az Ansible master binárisának telepítve kell lennie és futnia kell ezen a gépen. Ennek a gépnek képesnek kell lennie kapcsolódni az Ansible csomópontokhoz. Ezekhez a kapcsolatokhoz SSH-kulcsokat kell használnia. A csatlakozási problémák elkerülése érdekében győződjön meg arról, hogy az Ansible vezérlőcsomópontján engedélyezve van a tűzfal. Ha segítségre van szüksége, tekintse meg a Az Ansible telepítése és konfigurálása Ubuntu 20.04-en blogunkat.
-
Ansible gazdagépek: Egy vagy több gazdagépre van szükség a kapcsolódáshoz. A gazdagépek lényegében az Ansible felügyelt csomópontjai. Ezeknek Ubuntu szervereknek kell lenniük.
Az Ansible Playbook funkciói
Manuálisan is beállíthatja az összes alább említett lépést. Mi azonban automatizáljuk ezt a végrehajtást. Amikor futtatja ezt a playbookot, az alábbi műveleteket fogja végrehajtani a gépén:
-
Telepíti a(z) aptitude csomagkezelőt, amelyet az Ansible előnyben részesít.
-
Létrehoz egy adminisztratív csoportot wheel jelszó nélküli sudo jogosultságokkal.
-
Létrehoz egy új sudo felhasználót.
-
Lemásol egy helyi SSH-kulcsot a(z) authorized_keys fájlba. Ezt egy távoli gazdagépen lévő új adminisztratív felhasználóhoz fogja használni.
-
Letiltja a jelszóalapú hitelesítést a root felhasználó számára.
-
Telepíteni fogja a szükséges csomagokat.
-
Beállítja az UFW tűzfalat úgy, hogy csak az SSH-kapcsolatokat engedélyezze. Minden más kapcsolat blokkolva lesz.
Amint a Playbook végrehajtása befejeződik, egy új felhasználó válik elérhetővé. Ezzel a felhasználóval tud majd bejelentkezni a rendszerbe.
Az Ansible Playbook használata
A szerver beállításához szüksége lesz a kezdeti szerverbeállító playbookra és annak függőségeire. Ha először használja, akkor klónoznia kell a tárhelyet az alábbi link segítségével:
|
1 |
cd ~ |
|
1 |
git clone https://github.com/do-community/ansible-playbooks.git |
|
1 |
cd ansible-playbooks |
Ha a tároló már létezik a rendszerében, futtassa az alábbi parancsot a legújabb frissítések beszerzéséhez:
|
1 |
cd ~/ansible-playbooks |
|
1 |
git pull |
A következő fájlszerkezetet fogja kapni a gépén:
|
1 2 3 4 |
setup |-- playbook.yml |__vars |-- default,yml |
Alább látható a fájlok leírása:
-
vars/default.yml: Ez a fájl tartalmazza az Ansible csomópont konfigurálásához szükséges változókat.
-
playbook.yml: Ez a fájl tartalmazza a szerveren végrehajtandó feladatokat.
A vars/default.yml fájl valahogy így néz ki:
|
1 2 3 4 |
--- create_user: my_user copy_local_key: "{{ lookup('file', lookup('env','HOME') + '/.ssh/id_rsa.pub') }}" sys_packages: [ 'curl', 'vim', 'git', 'ufw'] |
Alább látható ezen változók leírása. Ha módosítani szeretné őket, kicserélheti az értékeiket a sajátjaira:
-
create_user: Ez a létrehozott felhasználó. Ez a felhasználó sudo jogosultságokkal rendelkezik.
-
copy_local_key: Ez tartalmazza a helyi SSH nyilvános kulcs elérési útját. Ez átmásolásra kerül a távoli szerverre mint authorized_key.
-
sys_packages: Ha egy vagy több csomagot szeretne telepíteni a szerverére, adja meg őket itt tömbként.
Miután szerkesztette ezt a fájlt, mentse el a tartalmát. Ezután a nano-ban nyomja meg a CTRL+X , Y. Majd, ENTER gombot a fájl tartalmának mentéséhez.
Most már készen áll arra, hogy futtassa ezt a playbookot több szerveren. Alapértelmezés szerint a Playbookok készen állnak a végrehajtásra az inventory-ban található szervereken. Ha a Playbookot bizonyos meghatározott szervereken szeretné használni, használhatja a -l kapcsolót. Most tegyük fel, hogy a távoli szervernek több felhasználója van, használhatja a -u kapcsolót annak megadására, hogy melyik felhasználóhoz csatlakozzon.
Ha a szerver neve my_server és a felhasználónév my_user, akkor futtassa az alábbi parancsot az Ansible csomópontokon való végrehajtáshoz:
|
1 |
ansible-playbook playbook.yml -l my_server -u my_user |
A kimenet valami hasonló lesz:
|
1 2 3 4 5 6 7 8 9 |
PLAY [mind] ***************************************************************************************************************************** FELADAT [Tények gyűjtése] ***************************************************************************************************************** ok: [my_server] FELADAT [Telepítés: Előfeltételek] *********************************************************************************************************** módosult: [my_server] FELADAT [Győződjön meg róla, hogy van egy 'wheel' csoportunk] *********************************************************************************************** módosult: [my_server] FELADAT [Engedélyezze 'wheel' csoportnak a jelszó nélküli sudo] *********************************************************************************** módosult: [my_server] |
Amint ez a végrehajtás befejeződött, az alábbi paranccsal csatlakozhat:
|
1 |
ssh my_user@server_host_or_IP |
Ne feledje, hogy my_user volt az a név, amelyet a vars/default.yml fájlban használtunk. A fenti parancsban a szerver IP-címét is meg kell változtatnia a saját szervere IP-címére. Ha megadta a copy_local_key változó egy egyéni SSH-kulcsra mutasson, adja meg a helyet a(z) -i kapcsolóval:
|
1 |
ssh my_user@server_host_or_IP -i ~/.ssh/ansible_controller_key |
Ezután jelentkezzen be a szerverére az UFW tűzfal szabályainak ellenőrzéséhez:
|
1 |
sudo ufw status |
Az alábbi kimenetet fogja kapni:
|
1 2 3 4 5 |
Állapot: aktív Cél Művelet Forrás -- ------ ---- OpenSSH ENGEDÉLYEZ Bárhonnan OpenSSH (v6) ENGEDÉLYEZ Bárhonnan (v6) |
A fenti kimenet megerősíti, hogy az UFW tűzfal sikeresen véglegesítésre került. Ez volt a playbookunk utolsó lépése. Ha ez helyesen hajtódott végre, az azt jelenti, hogy a futtatás sikeres volt.
Az Ansible Playbook tartalma
Az ebben az útmutatóban használt Playbook fájlok itt találhatók: ansible-playbooks/setup_ubuntu1804 at master · do-community/ansible-playbooks · GitHub. Ha szeretné megtekinteni az egyes fájlok tartalmát használat vagy szerkesztés céljából, kattintson a Raw gombra az egyes szkriptek tetején.
A gyors hivatkozás érdekében megosztjuk a Playbook teljes tartalmát a kapcsolódó fájlokkal együtt:
-
vars/default.yml
Ez a fájl tartalmazza azokat az értékeket, amelyeket a playbook feladatok fognak használni. Ezek közé tartoznak például a felhasználó neve, a jogosultságok, az SSH-kulcsok, a kezdeti beállítás részeként telepítendő csomagok és így tovább:
|
1 2 3 4 |
--- create_user: my_user copy_local_key: "{{ lookup('file', lookup('env','HOME') + '/.ssh/id_rsa.pub') }}" sys_packages: [ 'curl', 'vim', 'git', 'ufw'] |
-
playbook.yml
A playbook.yml fájl tartalmazza a végrehajtandó feladatokat. Először a fájl felsorolja az összes célba veendő kiszolgálót. Ha az összes szervert meg szeretné adni, állítsa be ennek a kulcsnak az értékét a következőre: all. Ezután, ha a sudo jogosultságokkal végrehajtandó feladatokat szeretné megadni, állítsa be a következő változó értékét: become: true. Végül ennek a fájlnak tartalmaznia kell a fenti vars/default.yml fájl tartalmát. Ezeket a következőkben illesztjük be, hogy betöltsük a beállításokat ebből a fájlból:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
--- - hosts: all become: true vars_files: - vars/default.yml tasks: - name: Telepítse az előfeltételeket apt: name=aptitude update_cache=yes state=latest force_apt_get=yes # Sudo csoport beállítása - name: Győződjön meg, hogy létezik a 'wheel' csoport group: name: wheel state: present - name: Engedélyezze a 'wheel' csoport számára a jelszó nélküli sudo használatát lineinfile: path: /etc/sudoers state: present regexp: '^%wheel' line: '%wheel ALL=(ALL) NOPASSWD: ALL' validate: '/usr/sbin/visudo -cf %s' # Felhasználó + kulcs beállítása - name: Hozzon létre egy új normál felhasználót sudo jogosultságokkal user: name: "{{ create_user }}" state: present groups: wheel append: true create_home: true shell: /bin/bash - name: Engedélyezett kulcs beállítása számára távoli felhasználó authorized_key: felhasználó: "{{ create_user }}" állapot: jelen kulcs: "{{ copy_local_key }}" - név: Letiltás jelszó hitelesítés számára root lineinfile: útvonal: /etc/ssh/sshd_config állapot: jelen regexp: '^#?PermitRootLogin' sor: 'PermitRootLogin prohibit-password' # Csomagok telepítése - név: Frissítés apt apt: update_cache=igen - név: Telepítés szükséges rendszer csomagok apt: név={{ sys_packages }} állapot=legfrissebb # UFW beállítás - név: UFW - Engedélyezés SSH kapcsolatok ufw: szabály: engedélyezés név: OpenSSH - név: UFW - Tiltás minden egyéb bejövő forgalom alapértelmezés szerint ufw: állapot: engedélyezve irányelv: tiltás irány: bejövő |
Következtetés
Az automatizálás kulcsfontosságú az IT-ban, biztosítva, hogy minden folyamat hibamentes legyen, és kövesse a szabványos gyakorlatokat és eljárásokat. Mivel a legtöbb szoftvert ma az interneten keresztül szolgáltatják, és elosztott jellegűek, mindennapos feladattá vált új szerverek létrehozása, például különböző környezetekhez, mint például a staging vagy a produkciós, vagy akár a demo környezetek.
Ebben az útmutatóban bemutattuk, hogyan érhető el a szerverek automatizálása az Ansible segítségével, amely egy hatékony és könnyen használható eszköz, és rengeteg időt takaríthat meg Önnek.
Kellemes számítástechnikát!
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.