Ako nainštalovať Jenkins na CentOS 7
Jenkins je populárny open source nástroj CI (Continuous Integration), ktorý sa široko používa na vývoj projektov, nasadenie a automatizáciu. Tento článok bude
Existuje mnoho spôsobov, ako automatizovať proces nastavenia a konfigurácie boxu. Z akéhokoľvek dôvodu, ak celý náš systém v tomto bode pozostáva len z jedného boxu, nastavenie úplnej infraštruktúry SCM (Software Configuration Management) je prehnané. Shell skripty sú jednou z možností, ale mohli by sme použiť aj skrátenú verziu SCM, ktorá je dostupná v niekoľkých dostupných nástrojoch. Šéfkuchár je jednou z obľúbených možností a „chef-solo“ je samostatný konfiguračný režim šéfkuchára, v ktorom nepotrebujeme ďalší uzol, ktorý by fungoval ako „server šéfkuchára“. Všetko, čo potrebuje, je adresa URL alebo cesta k balíku tarball, ktorý obsahuje kuchárske knihy šéfkuchárov. V porovnaní s shell skriptami je tento typ prístupu deklaratívnejší a efektívnejší hneď po vybalení a je tiež dobrým úvodom na začatie procesov SCM alebo IaC (Infrastructure as Code).
„Recepty“ vo vnútri „kuchárskej knihy“ šéfkuchára majú rubínový DSL, ktorý popisuje „zdroje“, ktoré majú byť v konkrétnom stave v uzle. Pokračujme v návode na zoznámenie sa s niekoľkými konceptmi šéfkuchára, ktoré sú použiteľné aj pre šéfkuchára-sólo. Naším cieľom je nastaviť uzol Ubuntu s webovou aplikáciou Python/Django pomocou Gunicorn a NGINX.
Note: We do not necessarily require ChefDK to be installed on our "Chef workstation" (our machine), although with it, we can use 'chef generate' commands to start-off with a directory structure for creating cookbooks, recipes and more. In this article, we will assume ChefDK is installed on our workstation. Commands were run using the version 4.7.26-1 of ChefDK.
(Všetko od tohto bodu, pokiaľ nie je uvedené inak, má byť spustené na našom stroji, ktorý sa tiež označuje ako „pracovná stanica šéfkuchára“).
Kuchárske knihy v kuchárovi sú opakovane použiteľné jednotky, ktoré obsahujú všetko potrebné na podporu konfiguračného scenára. Kuchárske knihy môžu obsahovať viacero „receptov“ a „recepty“ väčšinou pozostávajú zo vzorov zdrojov. default.rb
je predvolený recept, ktorý sa spustí, keď sa na kuchársku knihu odkazuje v zozname spustení . Rôzne recepty umožňujú oddelenie obáv. Pre tento tutoriál však pridáme všetky deklarácie prostriedkov do jedného hlavného súboru receptu, ktorým je default.rb
.
Vytvorte priečinok s názvom „my-chef-project“ a vytvorte v ňom priečinok s názvom „kuchárske knihy“. Od ./my-chef-project/cookbooks/
, spustiť:
$ chef generate cookbook my-cookbook
Naša adresárová štruktúra bude teraz vyzerať takto:
.
└── my-chef-project
└── cookbooks
└── my-cookbook
├── CHANGELOG.md
├── LICENSE
├── Policyfile.rb
├── README.md
├── chefignore
├── kitchen.yml
├── metadata.rb
├── recipes
│ └── default.rb
├── spec
│ ├── spec_helper.rb
│ └── unit
│ └── recipes
│ └── default_spec.rb
└── test
└── integration
└── default
└── default_test.rb
Prvým krokom k nastaveniu nášho uzla je identifikovať, aké balíčky vyžaduje naša aplikácia. Náš uzol je vybraný ako Ubuntu, takže sa môžeme spoľahnúť na správcu balíkov APT, ktorý zhromaždí závislosti. Inštalácia balíkov poskytovaných distribúciou OS je potom hračkou:
apt_update
package 'python3'
package 'python3-pip'
package 'nginx'
package 'pkg-config'
package 'libcairo2-dev'
package 'libjpeg-dev'
package 'libgif-dev'
package 'libgirepository1.0-dev'
Tieto sú do značnej miery samovysvetľujúce. Prvý riadok aktualizuje úložisko apt a nasledujúce riadky nainštalujú tieto balíčky.
Note: The packages following 'nginx' are needed for compiling some of the python dependencies through pip. These may differ based on your python/django project dependencies specified in
requirements.txt
. You can use a trial and error method to determine these packages that you need to include in your cookbook. To do that, perform a manualsudo pip install -r requirements.txt
(Note: This installs packages system wide!) on a freshly instantiated ubuntu machine to see if it runs successfully. If not, the stderr should give you hints on what packages are missing.
Po dokončení pridávania požadovaných balíkov musíme vytvoriť neprivilegovaného používateľa Linuxu, ktorý bude vlastniť zdrojový kód aplikácie.
user 'bob' do
uid 1212
gid 'users'
home '/home/bob'
shell '/bin/bash'
password '$1$alilbito$C83FsODuq0A1pUMeFPeR10'
end
Všimnite si, že heslo je tieňový hash formát používaný v Linuxe. Dá sa odvodiť pomocou OpenSSL:
$ openssl passwd -1 -salt alilbitof mypassword
Teraz zahrňme zdrojový kód aplikácie Django do našej kuchárskej knihy. Umiestnite zdrojový kód dovnútra ./my-chef-project/cookbooks/my-cookbook/files/default/myapp/
Vytvorte ./my-chef-project/cookbooks/my-cookbook/files/default
adresár, ak neexistuje.
Inštrukcia na skopírovanie týchto súborov na vzdialené miesto v našom uzle je popísaná pomocou prostriedku remote_directory :
remote_directory '/home/bob/myapp' do
source 'myapp' # This is the name of the folder containing our source code that we kept in ./my-cookbook/files/default/
owner 'bob'
group 'users'
mode '0755'
action :create
end
Ak chcete nainštalovať balíky python v requirements.txt
, môžeme použiť prostriedok na vykonanie na spustenie ľubovoľného príkazu. V tomto prípade musíme nad ním vykonať príkaz pip install:
execute 'install python dependencies' do
command 'pip3 install -r requirements.txt'
cwd '/home/bob/myapp'
end
Note: Bear in mind that this is going to execute as the root user and the python libraries will be installed system-wide. If our node is designated to exclusively run this one single python app, then it isn't much of a problem. Despite that, a better option to keep things clean and sane is to find and use a community cookbook that manages python installations or 'virtualenvs'. (or at the very least, write a series of execute blocks to replicate this). Using virtualenvs in python ensures that any python based system tools or other python projects will not be affected
Teraz je čas pripraviť Gunicorn WSGI HTTP Server s NGINX ako naším reverzným proxy. Nginx sa tiež používa na spracovanie všetkých statických aktív z Django.
Na pripútanie Gunicorna ako služby na Ubuntu je možné použiť Systemd. Prostriedok systemd_unit je súčasťou Chef od verzie 12.11.
systemd_unit 'gunicorn.service' do
content({
Unit: {
Description: 'Django on Gunicorn',
After: 'network.target',
},
Service: {
ExecStart: '/usr/local/bin/gunicorn --workers 3 --bind localhost:8080 myapp.wsgi:application',
User: 'bob',
Group: 'www-data',
WorkingDirectory: '/home/bob/myapp'
Restart: 'always',
},
Install: {
WantedBy: 'multi-user.target',
}
})
action [:create, :enable, :start]
end
Teraz musíme do tohto servera Gunicorn zahrnúť štandardnú konfiguráciu proxy NGINX, ako je uvedené nižšie. Tento úryvok môže ísť do ./my-cookbook/templates/nginx.conf.erb
. Vytvorte adresár šablón, ak neexistuje.
Note: Chef's templates support embedded ruby files that can contain variables, ruby expressions and statements. Although this file has the 'erb' extension, we did not use any of the ruby statements or expressions. Also, for the sake of simplicity, we only have a non HTTPS nginx config here (gentle reminder; please do not do this in production!)
server {
listen 80;
server_name http://example.com/;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/bob/myapp/myapp/static;
}
location / {
include proxy_params;
proxy_pass http://localhost:8080/;
}
}
Note: There is also an alternative and a better config, where, for instance the Gunicorn server is bound to a unix domain socket instead of a TCP loopback connection. It's worth exploring that for performance reasons.
Ak chcete skopírovať túto konfiguráciu do priečinka s povolenými lokalitami v uzle, použite zdroj šablóny od šéfkuchára.
template '/etc/nginx/sites-available/example.com.conf' do
source 'nginx.conf.erb'
owner 'root'
group 'root'
mode '0744'
end
Aktivácia konfigurácií na nginx sa zvyčajne vykonáva vytvorením symbolického odkazu smerujúceho na konfiguráciu sites-available
v sites-enabled
priečinku nginx . Symbolické odkazy je možné deklarovať v kuchárskych knihách šéfkuchárov pomocou odkazu, ako je uvedené nižšie:
link '/etc/nginx/sites-enabled/example.com.conf' do
to '/etc/nginx/sites-available/example.com.conf'
end
a odstrániť predvolený konfiguračný symbolický odkaz:
link '/etc/nginx/sites-enabled/default' do
action :delete
end
A nakoniec, aby som spustil službu nginx:
service 'nginx' do
action :enable
action :start
end
Run-listy v kuchárovi sú usporiadaným zoznamom rolí alebo receptov v kuchárskej knihe, ktoré sa budú postupne spúšťať v uzle. Máme jednu kuchársku knihu „moja kuchárka“ a v nej „predvolený“ recept, ktorý musíme spustiť v poli Ubuntu, takže súbor runlist.json v adresári nášho projektu ( ./my-chef-project/runlist.json
) by mal vyzerať takto:
{
"run_list": [
"recipe[my-cookbook::default]"
]
}
Naša kuchárska kniha pre šéfkuchára sólo je pripravená na servírovanie. Je čas poskytnúť počítač Ubuntu 18.04 a nainštalovať naň ChefDK:
$ ssh [email protected] 'apt-get update && yes | apt-get install curl && curl https://packages.chef.io/files/current/chefdk/4.7.45/ubuntu/18.04/chefdk_4.7.45-1_amd64.deb -o chefdk.deb && yes | dpkg -i chefdk.deb && rm chefdk.deb'
Vráťme sa späť na našu pracovnú stanicu Chef , všetko, čo musíme urobiť, je vložiť priečinok kuchárskych kníh do tarballu, preniesť tento tarball spolu s tarballom runlist.json
do vzdialeného uzla, ktorý sme poskytli vyššie, a spustiť príkaz chef-solo:
(Nižšie uvedený príkaz sa má spustiť v uzle alebo v „kliente šéfkuchára“ a nie v pracovnej stanici šéfkuchára)
$ chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept
Alebo tu je jeden riadok (na spustenie z ./my-chef-project/
CWD na Chef Workstation):
tar zvcf chef-solo.tar.gz ./cookbooks &&\
scp chef-solo.tar.gz runlist.json [email protected]:~/ &&\
ssh [email protected] 'chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept'
To je všetko! Sledujte, ako sa štandardný výstup zapĺňa aktivitou šéfkuchára, ktorý sa snaží zblížiť váš uzol k tomu, čo ste špecifikovali v kuchárskych knihách. Chef-solo nainštaluje všetky drahokamy potrebné pre všetky kuchárske knihy. Ak bude príkaz chef-solo úspešný, budeme mať funkčnú aplikáciu Django spustenú za nginx na boxe Ubuntu. Prejdite na doménu/IP a otestujte ju.
Note: Remember that in django you may need to set this domain/ip in the
ALLOWED_HOSTS
list insettings.py
.
Kedykoľvek vykonáme zmenu v obsahu nášho projektového adresára (recepty, šablóny alebo zdrojový kód aplikácie atď.), jednoducho spustite vyššie uvedený riadok z projektového adresára.
Tip: If the cookbook is version controlled with git (as it should), one good recommendation is to set git hooks to run this one-liner.
Ak sa pozorne pozriete na posledný príkaz chef-solo, všimnite si, že tento príkaz --recipe-url
má prevziať adresu URL. To znamená, že môžete mať pracovný postup, v ktorom CI vytvorí váš tarball pre šéfkuchára, nahrá ho niekam a nakonfiguruje váš uzol, aby z neho pravidelne čerpal.
Tip: Use curl to pull the changed tarball periodically as a cronjob.
curl -z $file
will honorIf-Modified-Since
headers and will only download the tar ball if the remote file has been changed since the timestamp on the existing local$file
.
Jenkins je populárny open source nástroj CI (Continuous Integration), ktorý sa široko používa na vývoj projektov, nasadenie a automatizáciu. Tento článok bude
Používate iný systém? Úvod Kontinuálna integrácia je postup vývoja softvéru DevOps, ktorý umožňuje vývojárom často spájať th
Používate iný systém? Ansible je open source nástroj na automatizáciu úloh. Spravuje konfiguráciu vašich serverov Linux a Windows. funguje to
Používate iný systém? GoCD je open source systém nepretržitého doručovania a automatizácie. Umožňuje vám modelovať komplexné pracovné postupy pomocou jeho paralelných an
Zatiaľ čo SaltStack je skvelý nástroj na spustenie operácií na mnohých serveroch súčasne, podporuje aj predvoľby konfigurácie definované pre jednotlivých hostiteľov uložené v
Používate iný systém? Ansible je open source nástroj na automatizáciu úloh. Spravuje konfiguráciu vašich serverov Linux a Windows. funguje to
Úvod Drone je automatizovaná, nepretržitá testovacia a doručovacia platforma, ktorá beží na vašej vlastnej infraštruktúre. Drone podporuje akýkoľvek jazyk, službu o
Čo je to Load Balancer Load Balancer je umiestnený pred vašou aplikáciou a distribuuje prichádzajúcu návštevnosť medzi viaceré inštancie vašej aplikácie. Fo
Používate iný systém? Foreman je bezplatný a open source nástroj, ktorý vám pomôže s konfiguráciou a správou fyzických a virtuálnych serverov. Forema
SaltStack alebo Salt je populárne riešenie na správu konfigurácie s otvoreným zdrojom, ktoré možno použiť na implementáciu vzdialeného spúšťania, správy konfigurácie, kódov
Úvod Strider CD je open source platforma nepretržitého nasadenia. Aplikácia je napísaná v Node.js a používa MongoDB ako backend úložiska. Kráčať
Úvod Chocolatey prináša správu balíkov, ktorá uľahčuje správu softvéru a závislostí v systéme Linux, do systému Windows. Môžete rýchlo a jednoducho
Čo je Packer? Packer je serverový zobrazovací nástroj vyvinutý spoločnosťou HashiCorp. Serverové zobrazovanie; alebo alternatívne, nemenná infraštruktúra; je obľúbenou alternatívou
Používate iný systém? Úvod Kontinuálna integrácia je postup vývoja softvéru DevOps, ktorý umožňuje vývojárom často spájať th
Existuje mnoho spôsobov, ako automatizovať proces nastavenia a konfigurácie boxu. Z akéhokoľvek dôvodu, ak celý náš systém v tomto bode pozostáva z spravodlivého
Používate iný systém? Foreman je bezplatný a open source nástroj, ktorý vám pomôže s konfiguráciou a správou fyzických a virtuálnych serverov. Forema
SaltStack je program na správu konfigurácie založený na pythone, ktorý je optimalizovaný pre automatizáciu konfiguračných súborov, nasadení a čohokoľvek iného
Umelá inteligencia nie je v budúcnosti, je tu priamo v súčasnosti V tomto blogu si prečítajte, ako aplikácie umelej inteligencie ovplyvnili rôzne sektory.
Ste aj vy obeťou DDOS útokov a máte zmätok ohľadom metód prevencie? Ak chcete vyriešiť svoje otázky, prečítajte si tento článok.
Možno ste už počuli, že hackeri zarábajú veľa peňazí, ale premýšľali ste niekedy nad tým, ako môžu zarábať také peniaze? poďme diskutovať.
Chcete vidieť revolučné vynálezy od Google a ako tieto vynálezy zmenili život každého dnešného človeka? Potom si prečítajte na blogu a pozrite si vynálezy spoločnosti Google.
Koncept samoriadených áut vyraziť na cesty s pomocou umelej inteligencie je snom, ktorý máme už nejaký čas. Ale napriek niekoľkým prísľubom ich nikde nevidno. Prečítajte si tento blog a dozviete sa viac…
Ako sa veda vyvíja rýchlym tempom a preberá veľa nášho úsilia, zvyšuje sa aj riziko, že sa vystavíme nevysvetliteľnej singularite. Prečítajte si, čo pre nás môže znamenať singularita.
Spôsoby ukladania údajov sa môžu vyvíjať už od zrodu údajov. Tento blog sa zaoberá vývojom ukladania údajov na základe infografiky.
Prečítajte si blog, aby ste čo najjednoduchším spôsobom spoznali rôzne vrstvy architektúry veľkých dát a ich funkcie.
V tomto digitálnom svete sa inteligentné domáce zariadenia stali kľúčovou súčasťou života. Tu je niekoľko úžasných výhod inteligentných domácich zariadení o tom, ako robia náš život, ktorý stojí za to žiť, a ktorý zjednodušujú.
Spoločnosť Apple nedávno vydala doplnkovú aktualizáciu macOS Catalina 10.15.4 na opravu problémov, ale zdá sa, že táto aktualizácia spôsobuje ďalšie problémy, ktoré vedú k blokovaniu počítačov Mac. Prečítajte si tento článok a dozviete sa viac