Hvernig á að setja upp Jenkins á CentOS 7
Jenkins er vinsælt opinn uppspretta CI (Continuous Integration) tól sem er mikið notað fyrir þróun verkefna, dreifingu og sjálfvirkni. Þessi grein vill
Það eru margar leiðir til að gera sjálfvirkan ferlið við að setja upp og stilla kassa. Af hvaða ástæðu sem er, ef allt kerfið okkar á þessum tímapunkti samanstendur af aðeins einum kassa, þá er of mikið af því að setja upp fullan SCM (Software Configuration Management) innviði. Skeljaforskriftir eru einn valkostur, en við gætum líka notað strípaða útgáfu af SCM sem er fáanleg í nokkrum af verkfærunum þarna úti. Chef er einn af vinsælustu valkostunum og „kokkur-solo“ er sjálfstæður stillingarhamur Chefs þar sem við þurfum ekki aukahnút til að starfa sem „kokkur-þjónn“. Allt sem það þarf er vefslóð eða slóð að tarball pakka sem inniheldur matreiðslubækur fyrir kokka. Í samanburði við skeljaforskriftir er þessi tegund af nálgun yfirlýsingaríkari og skilvirkari út úr kassanum og er einnig góð kynning til að byrja með SCM eða IaC (Infrastructure as Code) ferlum.
„Uppskriftirnar“ inni í „matreiðslubók“ matreiðslumeistara eru með rúbínbundið DSL sem lýsir því að „auðlindir“ séu í tilteknu ástandi á hnút. Við skulum halda áfram með leiðsögn til að kynnast nokkrum kokkahugtökum sem eiga einnig við um kokk-sóló. Markmið okkar er að setja upp Ubuntu hnút sem keyrir Python/Django vefforrit með Gunicorn og 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.
(Allt frá þessum tímapunkti og áfram, nema annað sé tekið fram, á að keyra á vélinni okkar, einnig kölluð „matreiðslustöðin“)
Matreiðslubækur í kokki eru endurnýtanlegar einingar sem innihalda allt sem þarf til að styðja við uppsetningaratburðarás. Matreiðslubækur geta innihaldið margar „uppskriftir“ og „uppskriftir“ samanstanda að mestu af auðlindamynstri. default.rb
er sjálfgefið uppskrift sem verður að keyra þegar matreiðslubók er vísað í hlaupa-listanum . Mismunandi uppskriftir leyfa aðskilnað áhyggjum. Fyrir þessa kennslu munum við hins vegar bæta öllum auðlindayfirlýsingum í eina aðaluppskriftaskrá, sem er default.rb
.
Búðu til möppu sem heitir "my-chef-project" og búðu til möppu inni í henni sem heitir "kokkabækur". Frá ./my-chef-project/cookbooks/
, keyra:
$ chef generate cookbook my-cookbook
Uppbygging möppu okkar mun nú líta svona út:
.
└── 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
Fyrsta skrefið til að setja upp hnútinn okkar er að bera kennsl á hvaða pakka er krafist af appinu okkar. Hnúturinn okkar er valinn til að vera Ubuntu, svo við getum reitt okkur á APT pakkastjórann til að safna ósjálfstæðum. Að setja upp pakkana sem OS-dreifingin býður upp á er síðan smáköku:
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'
Þetta skýra sig nokkurn veginn sjálft. Fyrsta línan mun uppfæra apt geymsluna og eftirfarandi línur munu setja upp þessa pakka.
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.
Þegar við höfum lokið við að bæta við nauðsynlegum pökkum þurfum við að búa til Linux notanda sem ekki hefur forréttindi sem mun eiga frumkóða forritsins.
user 'bob' do
uid 1212
gid 'users'
home '/home/bob'
shell '/bin/bash'
password '$1$alilbito$C83FsODuq0A1pUMeFPeR10'
end
Athugaðu að lykilorðið er skuggahash snið sem notað er í Linux. Það er hægt að fá það með OpenSSL:
$ openssl passwd -1 -salt alilbitof mypassword
Nú skulum við setja frumkóðann Django forritsins í matreiðslubókina okkar. Settu frumkóðann inn í ./my-chef-project/cookbooks/my-cookbook/files/default/myapp/
Búðu til ./my-chef-project/cookbooks/my-cookbook/files/default
möppuna ef hún er ekki til.
Leiðbeiningar um að afrita þessar skrár á afskekktan stað á hnútnum okkar er lýst með því að nota remote_directory auðlindina:
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
Til að setja upp python pakkana í requirements.txt
, getum við notað execute auðlindina til að keyra handahófskennda skipun. Í þessu tilfelli þurfum við að framkvæma pip install skipunina yfir það:
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
Nú er kominn tími til að undirbúa Gunicorn WSGI HTTP Server með NGINX sem öfugri umboð. Nginx er einnig notað til að meðhöndla allar kyrrstæður eignir frá Django.
Til að festa Gunicorn sem þjónustu á Ubuntu er hægt að nota Systemd. The systemd_unit úrræði er innifalinn í Chef síðan útgáfa 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
Nú verðum við að láta venjulega NGINX proxy stillingu fylgja með þessum Gunicorn netþjóni eins og sýnt er hér að neðan. Þessi bútur getur farið inn í ./my-cookbook/templates/nginx.conf.erb
. Búðu til sniðmátsskrána ef hún er ekki til.
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.
Til að afrita þessa stillingu yfir í möppu sem er virkt fyrir vefsvæði á hnútnum, notaðu sniðmátstilföngin frá Chef.
template '/etc/nginx/sites-available/example.com.conf' do
source 'nginx.conf.erb'
owner 'root'
group 'root'
mode '0744'
end
Að virkja stillingar á nginx er venjulega gert með því að búa til tákntengil sem bendir á stillinguna á sites-available
í sites-enabled
möppu nginx . Hægt er að lýsa yfir tákntenglum í matreiðslubókum matreiðslumanna með hlekknum eins og sýnt er hér að neðan:
link '/etc/nginx/sites-enabled/example.com.conf' do
to '/etc/nginx/sites-available/example.com.conf'
end
og til að eyða sjálfgefna samstillingartákninu:
link '/etc/nginx/sites-enabled/default' do
action :delete
end
Og að lokum, til að kveikja á nginx þjónustu:
service 'nginx' do
action :enable
action :start
end
Rekstrarlistar í kokki eru skipaður listi yfir hlutverk eða uppskriftir í matreiðslubók sem verður keyrður í röð á hnútnum. Við erum með eina matreiðslubók „my-cookbook“ og „default“ uppskriftina inni í henni sem við þurfum að framkvæma á Ubuntu kassanum, þannig að runlist.json í verkefnaskránni okkar ( ./my-chef-project/runlist.json
) ætti að líta svona út:
{
"run_list": [
"recipe[my-cookbook::default]"
]
}
Matreiðslubókin okkar fyrir Chef Solo er tilbúin til framreiðslu. Það er kominn tími til að útvega Ubuntu 18.04 vél og setja upp ChefDK á hana:
$ 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'
Þegar við förum aftur á vinnustöðina okkar matreiðslumanns , það eina sem við þurfum að gera er að setja matreiðslubókamöppuna inn í tarball, flytja þann tarball ásamt yfir runlist.json
á ytri hnútinn sem við útveguðum hér að ofan og keyra chef-solo skipunina:
(Skýringin hér að neðan á að keyra inni í hnútnum eða 'kokkur viðskiptavinur' en ekki matreiðslustöðina)
$ chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept
Eða hér er einskipa (á að keyra frá ./my-chef-project/
CWD á 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'
Það er það! Horfðu á staðlaða úttakið fyllast af kokkavirkni sem reynir að sameina hnútinn þinn að því sem þú hefur tilgreint í matreiðslubókunum. Chef-solo mun setja upp alla gimsteina sem þarf fyrir allar matreiðslubækurnar. Ef kokkur-solo skipunin heppnast, munum við vera með virkt Django forrit sem keyrir á bak við nginx á Ubuntu kassanum. Farðu að léninu/IP til að prófa það.
Note: Remember that in django you may need to set this domain/ip in the
ALLOWED_HOSTS
list insettings.py
.
Alltaf þegar við gerum breytingar á innihaldi verkefnaskrárinnar okkar (uppskriftir, sniðmát eða frumkóða forritsins osfrv.), keyrðu einfaldlega ofangreinda einlínu úr verkefnaskránni.
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.
Ef þú skoðar síðustu kokkur-solo skipunina vel, --recipe-url
taktu eftir því að það er ætlað að taka slóð. Þetta þýðir að þú getur haft verkflæði þar sem CI mun byggja kokka-solo tarballið þitt, hlaða því upp einhvers staðar og stilla hnútinn þinn til að draga úr honum reglulega.
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 er vinsælt opinn uppspretta CI (Continuous Integration) tól sem er mikið notað fyrir þróun verkefna, dreifingu og sjálfvirkni. Þessi grein vill
Að nota annað kerfi? Inngangur Stöðug samþætting er DevOps hugbúnaðarþróunaraðferð sem gerir hönnuðum kleift að sameinast oft
Að nota annað kerfi? Ansible er opinn hugbúnaður til að gera sjálfvirk verkefni. Það stjórnar uppsetningu Linux og Windows netþjóna. Það virkar
Að nota annað kerfi? GoCD er opinn uppspretta stöðugt afhendingar- og sjálfvirknikerfi. Það gerir þér kleift að móta flókin verkflæði með því að nota samhliða þess
Þó að SaltStack sé frábært tól til að keyra aðgerðir á mörgum netþjónum samtímis, styður það einnig skilgreindar stillingar fyrir hverja gestgjafa sem eru geymdar í
Að nota annað kerfi? Ansible er opinn hugbúnaður til að gera sjálfvirk verkefni. Það stjórnar uppsetningu Linux og Windows netþjóna. Það virkar
Inngangur Drone er sjálfvirkur, stöðugur prófunar- og afhendingarvettvangur sem keyrir á þínum eigin innviðum. Drone styður hvaða tungumál sem er, þjónustu o
Hvað er hleðslujafnari Hleðslujafnarar sitja fyrir framan forritið þitt og dreifa komandi umferð yfir mörg tilvik af forritinu þínu. Fo
Að nota annað kerfi? Foreman er ókeypis og opinn uppspretta tól sem hjálpar þér við uppsetningu og stjórnun á líkamlegum og sýndarþjónum. Forema
SaltStack, eða Salt, er vinsæl opinn uppspretta stillingarstjórnunarlausn sem hægt er að nota til að útfæra fjarframkvæmd, stillingarstjórnun, cod
Inngangur Strider CD er opinn uppspretta samfelld dreifingarvettvangur. Forritið er skrifað í Node.js og notar MongoDB sem geymslustuðning. Skref
Inngangur Chocolatey færir pakkastjórnun sem auðveldar stjórnun hugbúnaðar og ósjálfstæðis á Linux í Windows. Þú getur fljótt og auðveldlega
Hvað er Packer? Packer er myndtól fyrir netþjóna þróað af HashiCorp. Myndgreining miðlara; eða að öðrum kosti óbreytanleg innviði; er vinsæll valkostur
Að nota annað kerfi? Inngangur Stöðug samþætting er DevOps hugbúnaðarþróunaraðferð sem gerir hönnuðum kleift að sameinast oft
Það eru margar leiðir til að gera sjálfvirkan ferlið við að setja upp og stilla kassa. Af hvaða ástæðu sem er, ef allt kerfið okkar á þessum tímapunkti samanstendur af bara
Að nota annað kerfi? Foreman er ókeypis og opinn uppspretta tól sem hjálpar þér við uppsetningu og stjórnun á líkamlegum og sýndarþjónum. Forema
SaltStack er python-undirstaða stillingastjórnunarforrit sem er fínstillt fyrir sjálfvirkni stillingarskráa, uppsetningar og allt annað sem er óvirkt.
Gervigreind er ekki í framtíðinni, hún er hér í nútímanum Í þessu bloggi Lestu hvernig gervigreindarforrit hafa haft áhrif á ýmsa geira.
Ertu líka fórnarlamb DDOS árása og ruglaður með forvarnaraðferðirnar? Lestu þessa grein til að leysa spurningar þínar.
Þú gætir hafa heyrt að tölvuþrjótar græða mikið af peningum, en hefur þú einhvern tíma velt því fyrir þér hvernig þeir vinna sér inn svona peninga? við skulum ræða.
Viltu sjá byltingarkenndar uppfinningar frá Google og hvernig þessar uppfinningar breyttu lífi hvers manns í dag? Lestu síðan til að blogga til að sjá uppfinningar frá Google.
Hugmyndin um að sjálfkeyrandi bílar fari á göturnar með hjálp gervigreindar er draumur sem við höfum átt um tíma núna. En þrátt fyrir nokkur loforð eru þau hvergi sjáanleg. Lestu þetta blogg til að læra meira…
Þar sem vísindin þróast hratt og taka yfir mikið af viðleitni okkar, eykst hættan á því að verða fyrir óútskýranlegri einstæðu. Lestu, hvað sérkenni gæti þýtt fyrir okkur.
Geymsluaðferðir gagna hafa verið að þróast gæti verið frá fæðingu gagna. Þetta blogg fjallar um þróun gagnageymslu á grundvelli upplýsingamynda.
Lestu bloggið til að þekkja mismunandi lög í Big Data Architecture og virkni þeirra á einfaldasta hátt.
Í þessum stafræna heimi hafa snjallheimilistæki orðið afgerandi hluti af lífi. Hér eru nokkrir ótrúlegir kostir snjallheimatækja um hvernig þau gera líf okkar þess virði að lifa því og einfaldara.
Nýlega gaf Apple út macOS Catalina 10.15.4 viðbótaruppfærslu til að laga vandamál en svo virðist sem uppfærslan sé að valda fleiri vandamálum sem leiða til múrsteins á Mac vélum. Lestu þessa grein til að læra meira