Az Ansible apt_repository A modul segítségével könnyedén hozzáadhat és eltávolíthat csomagokat és PPA-kat az Ubuntu gazdagépeken. Az APT csomagtárház gyorsítótárát az Ansible használatával is frissítheti apt_repository modul.
Ez a cikk bemutatja, hogyan lehet kezelni az Ubuntu csomagtárakat és a PPA-kat az Ansible használatával apt_repository modul. Tehát kezdjük.
Előfeltételek
Ha ki szeretné próbálni a cikkben szereplő példákat:
1) A számítógépére telepítve kell lennie az Ansible programnak.
2) Az Ansible automatizáláshoz konfigurálnia kell egy Ubuntu gazdagépet.
A LinuxHint-en számos cikk foglalkozik az Ansible telepítésével és a gazdagépek konfigurálásával az Ansible automatizáláshoz. Megtekintheti ezeket a cikkeket, ha további információkra van szüksége.
Projektkönyvtár beállítása
Mielőtt elkezdenénk, jó ötlet lesz létrehozni egy projekt könyvtárstruktúrát, csak azért, hogy a dolgok egy kicsit rendezettebbek maradjanak.
A projekt könyvtár létrehozása apt-ppa-repo / és az összes szükséges alkönyvtárat (az aktuális munkakönyvtárban), futtassa a következő parancsot:
$ mkdir -pv apt-ppa-repo / playbooks
A projektkönyvtár létrehozása után lépjen a projektkönyvtárba az alábbiak szerint:
$ cd apt-ppa-repo
Hozzon létre egy otthont ad leltárállomány, az alábbiak szerint:
$ nano házigazdák
Adja hozzá a gazdagép IP vagy DNS nevét (vm7.nodekite.com és vm8.nodekite.com, az én esetemben) az Ubuntu hosztok a készletfájlban.
Ha végzett, mentse a fájlt a gombbal
Hozzon létre egy Ansible konfigurációs fájlt a projektkönyvtárban, az alábbiak szerint:
$ nano ansible.vö
Írja be a következő sorokat a lehetséges.vö fájl:
[alapértelmezések]leltár = hosztok
host_key_checking = Hamis
Ha végzett, mentse a fájlt a gombbal
Ezen a ponton a projektkönyvtárnak a következőképpen kell kinéznie:
$ fa
Amint láthatja, az Ansible hosztok hozzáférhetők. Tehát folytathatjuk a cikk következő szakaszát.
$ ansible all -u ansible -m ping
Csomagtárak hozzáadása
Ebben a szakaszban megmutatom, hogyan adhat hozzá csomagtárat az Ubuntuban az Ansible segítségével.
Először hozzon létre egy új játékkönyvet add_repo.yaml ban,-ben játékkönyvek / könyvtárat, az alábbiak szerint:
$ nano playbooks / add_repo.yaml
Írja be a következő sorokat a add_repo.yaml fájl:
- házigazdák: mindfelhasználó: ansible
vált: Igaz
feladatok:
- név: Győződjön meg arról, hogy az univerzum adattár engedélyezve van
apt_repository:
repo: deb http: // archívum.ubuntu.com / ubuntu fókuszuniverzum
állapot: jelen
update_cache: Igaz
Ha végzett, mentse a fájlt a gombbal
Itt a repo a apt_repository modult használjuk az APT csomag lerakat sorának megadására (esetemben, deb http: // archívum.ubuntu.com / ubuntu fókuszuniverzum) a hozzáadni kívánt csomagtárból (esetemben az Ubuntu 20.04 LTS tisztviselő világegyetem adattár).
Ha többet szeretne megtudni az APT csomag lerakat sorának formátumáról, olvassa el a Ubuntu Package Repository konfigurációs fájlok Az APT Package Manager használata az Ubuntu 20-ban című szakasz.04 LTS.
Mivel új csomagtárat adok ide, a állapot van ajándék.
A update_cache opció lehet Igaz/Igen vagy Hamis/nem.
Ha a update_cache értékre van állítva Igaz, Az Ansible a csomagtár hozzáadása után frissíti az APT csomagtárház gyorsítótárát.
Ha a update_cache értékre van állítva Hamis, Az Ansible nem frissíti az APT csomag-tárház gyorsítótárát.
Itt azt akarom, hogy az APT csomagtár frissüljön, amint az új csomagtárat hozzáadják. Szóval, beállítottam a update_cache nak nek Igaz.
Most futtassa a add_repo.yaml játékkönyv, az alábbiak szerint:
$ ansible-playbook playbooks / add_repo.yamlMint látható, a játékkönyv sikeresen futott.
Annak megerősítésére, hogy a csomagtár (esetemben az Ubuntu 20.04 LTS világegyetem repository) hozzáadásával futtassa a következő parancsot:
$ grep --color -R 'http: // archívum.ubuntu.com '/ etc / apt / sources.lista/ etc / apt / sources.lista.d / *.lista
Amint láthatja, egy új fájl jött létre a / etc / apt / sources.lista.d / könyvtár (1) és az Ubuntu 20.04 LTS világegyetem csomagtár került hozzá (2).
Alapértelmezés szerint az Ansible automatikusan létrehozza a .lista fájl a / etc / apt / sources.lista.d / könyvtár, az APT repository sorától függően.
Ha egy adott fájlnevet szeretne választani (i.e. ubuntu-univerzum.lista) a tárházához megadhat egy fájlnevet a fájl név a apt_repository modul a add_repo.yaml playbook, az alábbi képernyőképen látható módon.
Most futtassa a add_repo.yaml ismét játékkönyv.
$ ansible-playbook playbooks / add_repo.yaml
Amint láthatja, a fájlnév megegyezik az általam megadott névvel.
$ grep --color -R 'http: // archívum.ubuntu.com '/ etc / apt / sources.lista/ etc / apt / sources.lista.d / *.lista
Csomagtárak eltávolítása
Ebben a részben bemutatom, hogyan lehet eltávolítani egy meglévő csomagtárat az Ubuntu hosztokról az Ansible használatával.
A csomagtár eltávolítására szolgáló playbook szinte megegyezik a csomagtár hozzáadásával. Szóval, csak másolhatja a add_repo.yaml playbook fájlt, és módosítsa egy kicsit. Ezt nagyon egyszerű megtenni.
Először másolja a add_repo.yaml fájlba remove_repo.yaml, alábbiak szerint:
$ cp -v playbooks / add_repo.yaml playbooks / remove_repo.yaml
Szerkessze a remove_repo.yaml játékkönyv, az alábbiak szerint:
$ nano playbooks / remove_repo.yaml
változás állapot: jelen nak nek állapot: hiányzik, az alábbi képernyőképen jelölt módon. Ez lesz az egyetlen változtatás, amelyet végre kell hajtania.
Ha végzett, mentse a fájlt a gombbal
Futtassa a remove_repo.yaml játékkönyv, az alábbiak szerint:
$ ansible-playbook playbooks / remove_repo.yaml
Ezután futtassa a következő parancsot annak ellenőrzésére, hogy az eltávolítani kívánt csomagtár valóban el lett-e távolítva.
$ grep --color -R 'http: // archívum.ubuntu.com '/ etc / apt / sources.lista/ etc / apt / sources.lista.d / *.lista
Mint láthatja, az Ubuntu 20.04 LTS tisztviselő világegyetem A korábban hozzáadott csomagtárat eltávolítottuk.
JEGYZET: Hagyja figyelmen kívül a hibaüzenetet. Ez az üzenet csak azt jelenti, hogy a / etc / apt / sources.lista.d / a könyvtár üres. Ha el akarja távolítani a hibaüzenetet, egyszerűen adjon hozzá egy a-t 2> / dev / null a parancs végén, az alábbiak szerint. A hibának el kell tűnnie a parancs végrehajtása után.
$ grep --color -R 'http: // archívum.ubuntu.com '/ etc / apt / sources.lista/ etc / apt / sources.lista.d / *.2. lista> / dev / null
HTM-ek hozzáadása
Ebben a részben megmutatom, hogyan lehet PPA-t hozzáadni az Ubuntu gazdagépeihez az Ansible használatával.
Hozzáadom a osomon / nodejs-10.19-fokális Csomópont.js 10.19 PPA az Ubuntu 20-hoz.04 LTS az én példámban.
Először hozzon létre egy új játékkönyvet add_ppa.yaml, alábbiak szerint:
$ nano playbooks / add_ppa.yaml
Adja hozzá a következő sorokat a add_ppa.yaml játékkönyv:
- házigazdák: mindfelhasználó: ansible
vált: Igaz
feladatok:
- név: Csomópont hozzáadása.js 10.19 PPA
apt_repository:
repo: ppa: osomon / nodejs-10.19-fokális
állapot: jelen
update_cache: Igaz
validate_certs: Hamis
Ha elkészült, mentse a add_ppa.yaml playbook megnyomásával
Itt a repo a apt_repository modul a PPA hozzáadására szolgál osomon / nodejs-10.19-fokális (1).
Feltétlenül adjon hozzá ppa: a PPA név előtt, i.e. ppa: osomon / nodejs-10.19-fokális.
A legtöbb PPA önaláírt tanúsítványt használ, így az Ansible nem tudja ellenőrizni őket az Ön számára, és hibát okozhatnak a játékkönyv futtatásakor.
Beállíthatja validate_certs nak nek Hamis a hozzáadandó PPA tanúsítvány-hitelesítésének kihagyása (2). Ezt tettem a cikk példájában.
JEGYZET: Beállíthatja azt is validate_certs nak nek Hamis a tanúsítás érvényesítésének kihagyása harmadik féltől származó csomagtárak hozzáadásakor.
Futtassa a add_ppa.yaml játékkönyv, az alábbiak szerint:
$ ansible-playbook playbooks / add_ppa.yaml
Mint láthatja, egy új .lista fájl a PPA-hoz osomon / nodejs-10.19-fokális létrejött a / etc / apt / sources.lista.d / könyvtár (1).
Azáltal, hogy megnézzük a ppa_osomon_nodejs_10_19_focal_focal.lista fájlt, meg tudom erősíteni, hogy a PPA-t hozzáadták (2).
$ tree / etc / apt / sources.lista.d /$ cat / etc / apt / sources.lista.d / ppa_osomon_nodejs_10_19_focal_xenial.lista
A HTM-ek eltávolítása
A HTM-eket ugyanúgy távolíthatja el, mint a cikk korábbi szakaszában a csomagtárakat.
Csak másolja a app_ppa.yaml játékkönyv a remove_ppa.yaml, alábbiak szerint:
$ cp -v playbooks / add_repo.yaml playbooks / remove_repo.yaml
Nyissa meg a remove_ppa.yaml játékkönyv, az alábbiak szerint:
$ nano playbooks / remove_ppa.yaml
Ezután változtassa meg a sort állapot: jelen nak nek állapot: hiányzik, az alábbi képernyőképen jelölt módon.
Ha elkészült, mentse a remove_ppa.yaml playbook megnyomásával
Futtassa a remove_ppa.yaml játékkönyv, az alábbiak szerint:
$ ansible-playbook playbooks / add_ppa.yaml
Mint láthatja, a ppa_osomon_nodejs_10_19_focal_focal.lista fájl a osomon / nodejs-10.19-fokális A PPA már nem érhető el a / etc / apt / sources.lista.d / Könyvtár. Tehát, a PPA osomon / nodejs-10.19-fokális el lett távolítva.
$ tree / etc / apt / sources.lista.d /
A PPA kódnév módosítása
Néha az a PPA, amelyet megpróbál hozzáadni az Ubuntu gazdagépre, nem támogatja az Ön által futtatott Ubuntu verziót. Ebben az esetben a PPA hozzáadása közben manuálisan kell megadnia az Ubuntu verzió kódnevét.
Tegyük fel, hogy az Ubuntu 20-at futtatja.04 kódnévvel fokális és megpróbálja hozzáadni a PPA-t xyz, hanem a PPA xyz csak az Ubuntu 16-ot támogatja.04 LTS kódnév xenial. Ha megpróbálja hozzáadni a PPA-t xyz, hibát fog kapni, mivel a PPA-nak nincs csomagja az Ubuntu 20-hoz.04 kódnév fokális. De ha megadja az Ubuntu 16-ot.04 LTS kódnév xenial a PPA hozzáadása közben nem kap hibát. Lehetséges, hogy így telepítheti a kívánt csomagot a PPA-ból, még akkor is, ha az nem támogatja az Ön által jelenleg futtatott Ubuntu kifejezett verzióját.
Lássunk egy példát.
Először másolja a add_ppa.yaml playbook file to change_ppa_codename.yaml, alábbiak szerint:
$ cp -v playbooks / add_ppa.yaml playbooks / change_ppa_codename.yaml
Ezután nyissa meg a change_ppa_codename.yaml fájl, az alábbiak szerint:
$ nano playbooks / change_ppa_codename.yaml
Itt csak annyit kell tennie, hogy hozzáadja a kód név opció a kívánt Ubuntu kódnévvel (i.e. kódnév: xenial), az alábbi képernyőképen látható módon.
Ha elkészült, mentse a change_ppa_codename.yaml fájl megnyomásával
Futtassa a change_ppa_codename.yaml játékkönyv, az alábbiak szerint:
$ ansible-playbook playbooks / change_ppa_codename.yamlJEGYZET: Hibát kapok, mert az itt hozzáadott PPA csak az Ubuntu 20-at támogatja.04 LTS. Csak figyelmen kívül hagyhatja ezt az üzenetet.
Mint láthatja, a PPA és az Ubuntu kódnév hozzá lett adva xenial az APT csomagtárház sorában található.
Következtetés
Ez a cikk bemutatta, hogyan kezelheti (hozzáadhatja / eltávolíthatja) az Ubuntu csomag-adattárakat és a PPA-kat az Ansible használatával.
Az Ansible apt_repository modult használnak az Ubuntu csomagtárak és PPA-k kezelésére. Ez a cikk elmagyarázta a apt_repository modulja az Ansible.
További információ az apt_repository hivatalos Ansible dokumentációs oldalán található.