Kaip įdiegti „Jenkins“ „CentOS 7“.
„Jenkins“ yra populiarus atvirojo kodo CI (nuolatinės integracijos) įrankis, plačiai naudojamas projektų kūrimui, diegimui ir automatizavimui. Šis straipsnis bus
Yra daug būdų, kaip automatizuoti dėžutės nustatymo ir konfigūravimo procesą. Dėl kokių nors priežasčių, jei visą mūsų sistemą šiuo metu sudaro tik vienas langelis, visos SCM (programinės įrangos konfigūracijos valdymo) infrastruktūros nustatymas yra perdėtas. „Shell“ scenarijai yra viena iš galimybių, tačiau taip pat galime naudoti supaprastintą SCM versiją, kurią galima rasti keliuose įrankiuose. „Chef“ yra viena iš populiariausių parinkčių, o „chef-solo“ yra atskiras „Chef“ konfigūracijos režimas, kai nereikia papildomo mazgo, kad veiktų kaip „šefo serveris“. Viskas, ko reikia, yra URL arba kelias į tarball paketą, kuriame yra virėjų kulinarinių knygų. Palyginti su apvalkalo scenarijais, tokio tipo metodas yra labiau deklaratyvus ir efektyvesnis, be to, tai yra geras įvadas norint pradėti naudoti SCM arba IaC (infrastruktūra kaip kodas) procesus.
„Receptai“, esantys virėjo „kulinarinės knygos“ viduje, turi rubinų pagrindu sukurtą DSL, apibūdinantį „išteklius“, kurie turi būti tam tikros būsenos mazge. Tęskime apžvalgą, kad susipažintume su keliomis šefo sąvokomis, kurios taip pat taikomos šefui solo. Mūsų tikslas yra nustatyti Ubuntu mazgą, kuriame veikia Python / Django žiniatinklio programa, naudojant Gunicorn ir 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.
(Viskas nuo šio momento, jei nenurodyta kitaip, turi būti paleista mūsų aparate, dar vadinamame „virėjo darbo vieta“)
Virėjos kulinarijos knygos yra daugkartinio naudojimo vienetai, kuriuose yra viskas, ko reikia konfigūracijos scenarijui palaikyti. Kulinarijos knygose gali būti keli „receptai“, o „receptai“ dažniausiai susideda iš išteklių modelių. default.rb
yra numatytasis receptas, kuris bus paleistas, kai kulinarijos knyga bus nurodyta vykdymo sąraše . Skirtingi receptai leidžia atskirti rūpesčius. Tačiau šioje mokymo programoje visas išteklių deklaracijas įtrauksime į vieną pagrindinį recepto failą, kuris yra default.rb
.
Sukurkite aplanką pavadinimu „mano virėjo projektas“ ir jame sukurkite aplanką, vadinamą „kuinystės knygomis“. Nuo ./my-chef-project/cookbooks/
, paleiskite:
$ chef generate cookbook my-cookbook
Mūsų katalogo struktūra dabar atrodys taip:
.
└── 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
Pirmasis mūsų mazgo nustatymo žingsnis yra nustatyti, kokių paketų reikia mūsų programai. Mūsų mazgas pasirinktas kaip Ubuntu, todėl galime pasikliauti APT paketų tvarkykle, kad surinktų priklausomybes. Tada OS paskirstymo pateiktų paketų įdiegimas yra paprastas dalykas:
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'
Tai beveik savaime aišku. Pirmoje eilutėje bus atnaujinta apt saugykla, o kitose eilutėse bus įdiegti tie paketai.
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.
Pridėję reikiamus paketus, turime sukurti neprivilegijuotą „Linux“ vartotoją, kuriam priklausys programos šaltinio kodas.
user 'bob' do
uid 1212
gid 'users'
home '/home/bob'
shell '/bin/bash'
password '$1$alilbito$C83FsODuq0A1pUMeFPeR10'
end
Atminkite, kad slaptažodis yra šešėlinis maišos formatas, naudojamas Linux. Jį galima gauti naudojant OpenSSL:
$ openssl passwd -1 -salt alilbitof mypassword
Dabar įtraukime Django programos šaltinio kodą į mūsų kulinarijos knygą. Įdėkite šaltinio kodą viduje ./my-chef-project/cookbooks/my-cookbook/files/default/myapp/
Sukurkite ./my-chef-project/cookbooks/my-cookbook/files/default
katalogą, jei jo nėra.
Instrukcija, kaip nukopijuoti šiuos failus į nuotolinę mūsų mazgo vietą, aprašyta naudojant Remote_directory šaltinį:
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
Norėdami įdiegti python paketus requirements.txt
, galime naudoti vykdymo išteklius, kad paleistume savavališką komandą. Tokiu atveju turime vykdyti pip install komandą per jį:
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
Dabar laikas paruošti Gunicorn WSGI HTTP serverį su NGINX kaip atvirkštiniu tarpiniu serveriu. „Nginx“ taip pat naudojamas visam „Django“ statiniam turtui tvarkyti.
Norint panaudoti „Gunicorn“ kaip paslaugą „Ubuntu“, galima naudoti „Systemd“. „ Systemd_unit“ išteklius įtrauktas į „Chef“ nuo 12.11 versijos.
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
Dabar į šį Gunicorn serverį turime įtraukti standartinę NGINX tarpinio serverio konfigūraciją, kaip parodyta toliau. Šis fragmentas gali būti įtrauktas į ./my-cookbook/templates/nginx.conf.erb
. Sukurkite šablonų katalogą, jei jo nėra.
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.
Norėdami nukopijuoti šią konfigūraciją į mazgo aplanką, kuriame įgalintos svetainės, naudokite šablono išteklius iš Chef.
template '/etc/nginx/sites-available/example.com.conf' do
source 'nginx.conf.erb'
owner 'root'
group 'root'
mode '0744'
end
„nginx“ konfigūracijos paprastai suaktyvinamos sukuriant simbolinę nuorodą, nukreipiančią į konfigūraciją „ sites-available
nginx“ sites-enabled
aplanke. Simboliai gali būti deklaruojami virėjų kulinarijos knygose su nuorodų šaltiniu, kaip parodyta toliau:
link '/etc/nginx/sites-enabled/example.com.conf' do
to '/etc/nginx/sites-available/example.com.conf'
end
ir norėdami ištrinti numatytąją konfigūracijos nuorodą:
link '/etc/nginx/sites-enabled/default' do
action :delete
end
Ir galiausiai, norėdami paleisti „nginx“ paslaugą:
service 'nginx' do
action :enable
action :start
end
Vykdymo sąrašai virėjoje yra sutvarkytas vaidmenų arba receptų sąrašas kulinarinėje knygoje, kuris bus vykdomas iš eilės mazge. Turime vieną kulinarijos knygą „mano kulinarijos knyga“ ir joje esantį „numatytąjį“ receptą, kurį turime vykdyti Ubuntu dėžutėje, todėl mūsų projekto kataloge ( ./my-chef-project/runlist.json
) esantis runlist.json turėtų atrodyti taip:
{
"run_list": [
"recipe[my-cookbook::default]"
]
}
Mūsų kulinarijos knyga šefui solo paruošta patiekti. Atėjo laikas aprūpinti Ubuntu 18.04 mašiną ir jame įdiegti 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'
Ėjimas atgal į mūsų Chef darbo vietos , visi mes turime padaryti, tai įdėti receptų knygos aplankas viduje tar archyvą, perdavimo, kad tar kartu su runlist.json
prie nuotolinio mazgas mes sąlyginės aukščiau ir paleisti virėja-solo komandą:
(Toliau pateikta komanda turi būti vykdoma mazge arba „virėjo kliente“, o ne virėjo darbo vietoje)
$ chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept
Arba čia yra vienas įdėklas (paleidžiamas iš ./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'
Viskas! Stebėkite, kaip standartinė produkcija pasipildo virėjo veikla, bandančia priartinti jūsų mazgą prie to, ką nurodėte kulinarinėse knygose. Chef-solo įdiegs visus brangakmenius, reikalingus visoms kulinarinėms knygoms. Jei komanda chef-solo bus sėkminga, Ubuntu dėžutėje už nginx veiks veikianti „Django“ programa. Eikite į domeną / IP, kad jį patikrintumėte.
Note: Remember that in django you may need to set this domain/ip in the
ALLOWED_HOSTS
list insettings.py
.
Kai keičiame savo projekto katalogo turinį (receptus, šablonus ar programos šaltinio kodą ir t. t.), tiesiog paleiskite aukščiau pateiktą vieną eilutę iš projekto katalogo.
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.
Jei atidžiai pažvelgsite į paskutinę chef-solo komandą, pastebėkite, kad --recipe-url
ji skirta paimti URL. Tai reiškia, kad galite turėti darbo eigą, kai CI sukurs jūsų virėjo solo tarballą, įkels jį kur nors ir sukonfigūruos jūsų mazgą, kad jis periodiškai imtųsi iš jo.
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“ yra populiarus atvirojo kodo CI (nuolatinės integracijos) įrankis, plačiai naudojamas projektų kūrimui, diegimui ir automatizavimui. Šis straipsnis bus
Naudojate kitą sistemą? Įvadas Nuolatinis integravimas yra „DevOps“ programinės įrangos kūrimo praktika, leidžianti kūrėjams dažnai sujungti
Naudojate kitą sistemą? Ansible yra atvirojo kodo įrankis, skirtas automatizuoti užduotis. Jis valdo jūsų Linux ir Windows serverių konfigūraciją. Tai veikia
Naudojate kitą sistemą? GoCD yra atvirojo kodo nuolatinio pristatymo ir automatizavimo sistema. Tai leidžia modeliuoti sudėtingas darbo eigas naudojant lygiagrečią an
Nors „SaltStack“ yra puikus įrankis, leidžiantis vienu metu vykdyti operacijas daugelyje serverių, jis taip pat palaiko konfigūracijos nustatymus, kuriuos nustato pagrindinis kompiuteris.
Naudojate kitą sistemą? Ansible yra atvirojo kodo įrankis, skirtas automatizuoti užduotis. Jis valdo jūsų Linux ir Windows serverių konfigūraciją. Tai veikia
Įvadas Drone yra automatizuota, nuolatinio testavimo ir pristatymo platforma, kuri veikia jūsų infrastruktūroje. Dronas palaiko bet kokią kalbą, paslaugą o
Kas yra apkrovos balansavimo priemonė Apkrovos balansavimo įrenginiai yra priešais jūsų programą ir paskirsto gaunamą srautą keliuose jūsų programos egzemplioriuose. Fo
Naudojate kitą sistemą? „Foreman“ yra nemokamas atvirojo kodo įrankis, padedantis konfigūruoti ir valdyti fizinius ir virtualius serverius. Forema
„SaltStack“ arba „Salt“ yra populiarus atvirojo kodo konfigūracijos valdymo sprendimas, kurį galima naudoti nuotoliniam vykdymui, konfigūracijos valdymui, kodavimui.
Įvadas Strider CD yra atvirojo kodo nuolatinio diegimo platforma. Programa parašyta Node.js ir naudoja MongoDB kaip saugyklos užpakalinę programą. Žingsnis
Įvadas „Chocolatey“ sistemoje „Windows“ pateikia paketų valdymą, kuris palengvina programinės įrangos ir priklausomybių administravimą sistemoje „Linux“. Galite greitai ir lengvai
Kas yra Pakeris? Packer yra serverio vaizdo gavimo įrankis, kurį sukūrė HashiCorp. Serverio vaizdavimas; arba, alternatyviai, nekintanti infrastruktūra; yra populiari alternatyva
Naudojate kitą sistemą? Įvadas Nuolatinis integravimas yra „DevOps“ programinės įrangos kūrimo praktika, leidžianti kūrėjams dažnai sujungti
Yra daug būdų, kaip automatizuoti dėžutės nustatymo ir konfigūravimo procesą. Dėl kokios nors priežasties, jei visą mūsų sistemą šiuo metu sudaro tik
Naudojate kitą sistemą? „Foreman“ yra nemokamas atvirojo kodo įrankis, padedantis konfigūruoti ir valdyti fizinius ir virtualius serverius. Forema
„SaltStack“ yra „python“ pagrindu sukurta konfigūracijos valdymo programa, optimizuota automatizuoti konfigūracijos failus, diegimus ir bet ką kitą
Dirbtinis intelektas nėra ateityje, jis čia, dabartyje Šiame tinklaraštyje Skaitykite, kaip dirbtinio intelekto programos paveikė įvairius sektorius.
Ar taip pat esate DDOS atakų auka ir esate sumišęs dėl prevencijos metodų? Perskaitykite šį straipsnį, kad išspręstumėte savo užklausas.
Galbūt girdėjote, kad įsilaužėliai uždirba daug pinigų, bet ar kada susimąstėte, kaip jie uždirba tokius pinigus? padiskutuokime.
Ar norite pamatyti revoliucinius „Google“ išradimus ir kaip šie išradimai pakeitė kiekvieno žmogaus gyvenimą šiandien? Tada skaitykite tinklaraštį, kad pamatytumėte „Google“ išradimus.
Savavaledžių automobilių koncepcija, kuri išvažiuotų į kelius su dirbtinio intelekto pagalba, yra svajonė, kurią jau kurį laiką svajojame. Tačiau nepaisant kelių pažadų, jų niekur nematyti. Skaitykite šį tinklaraštį, kad sužinotumėte daugiau…
Kadangi mokslas sparčiai vystosi, perimdamas daug mūsų pastangų, taip pat didėja rizika, kad pateksime į nepaaiškinamą singuliarumą. Skaitykite, ką mums gali reikšti išskirtinumas.
Duomenų saugojimo metodai gali būti tobulinami nuo pat Duomenų gimimo. Šiame tinklaraštyje, remiantis infografika, aprašoma duomenų saugojimo raida.
Skaitykite tinklaraštį, kad paprasčiausiai sužinotumėte apie skirtingus didžiųjų duomenų architektūros sluoksnius ir jų funkcijas.
Šiame skaitmeniniu būdu pagrįstame pasaulyje išmanieji namų įrenginiai tapo svarbia gyvenimo dalimi. Štai keletas nuostabių išmaniųjų namų įrenginių privalumų, kaip jie daro mūsų gyvenimą vertą gyventi ir paprastesnį.
Neseniai „Apple“ išleido „macOS Catalina 10.15.4“ priedą, skirtą problemoms išspręsti, tačiau atrodo, kad dėl atnaujinimo kyla daugiau problemų, dėl kurių „Mac“ įrenginiai blokuojami. Norėdami sužinoti daugiau, perskaitykite šį straipsnį