Kā instalēt Jenkins operētājsistēmā CentOS 7
Jenkins ir populārs atvērtā pirmkoda CI (Continuous Integration) rīks, ko plaši izmanto projektu izstrādei, izvietošanai un automatizācijai. Šis raksts tiks
Ir daudzi veidi, kā automatizēt kastes iestatīšanas un konfigurēšanas procesu. Kādu iemeslu dēļ, ja visa mūsu sistēma šobrīd sastāv tikai no viena lodziņa, pilnas SCM (programmatūras konfigurācijas pārvaldības) infrastruktūras iestatīšana ir pārmērīga. Viena no iespējām ir čaulas skripti, taču mēs varētu izmantot arī samazinātu SCM versiju, kas ir pieejama dažos rīkos. Šefpavārs ir viena no populārākajām opcijām, un "chef-solo" ir šefpavāra atsevišķais konfigurācijas režīms, kurā mums nav nepieciešams papildu mezgls, lai darbotos kā "šefpavārs-serveris". Viss, kas tam nepieciešams, ir URL vai ceļš uz tarball pakotni, kurā ir šefpavāra pavārgrāmatas. Salīdzinot ar čaulas skriptiem, šāda veida pieeja ir deklaratīvāka un efektīvāka jau sākotnēji, kā arī ir labs ievads, lai sāktu darbu ar SCM vai IaC (Infrastructure as Code) procesiem.
Šefpavāra “pavārgrāmatas” “receptēm” ir rubīna bāzes DSL, kas apraksta “resursus”, kas atrodas noteiktā mezgla stāvoklī. Turpināsim ar aprakstu, lai iepazītos ar dažiem šefpavāra jēdzieniem, kas attiecas arī uz šefpavāru solo. Mūsu mērķis ir iestatīt Ubuntu mezglu, kurā darbojas Python/Django tīmekļa lietotne, izmantojot Gunicorn un 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.
(Viss no šī brīža, ja vien nav norādīts citādi, ir jādarbina mūsu iekārtā, ko dēvē arī par "pavāra darbstaciju")
Pavārgrāmatas šefpavārā ir atkārtoti lietojamas vienības, kurās ir viss nepieciešamais, lai atbalstītu konfigurācijas scenāriju. Pavārgrāmatās var būt vairākas “receptes”, un “receptes” lielākoties sastāv no resursu modeļiem. default.rb
ir noklusējuma recepte, kas tiks izpildīta, kad izpildes sarakstā būs atsauce uz pavārgrāmatu . Dažādas receptes ļauj nošķirt bažas. Tomēr šai apmācībai mēs pievienosim visas resursu deklarācijas vienā galvenajā recepšu failā, kas ir default.rb
.
Izveidojiet mapi ar nosaukumu "mans šefpavāra projekts" un izveidojiet tajā mapi ar nosaukumu "pavārgrāmatas". No ./my-chef-project/cookbooks/
, palaist:
$ chef generate cookbook my-cookbook
Mūsu direktoriju struktūra tagad izskatīsies šādi:
.
└── 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
Pirmais mūsu mezgla iestatīšanas solis ir noteikt, kādas pakotnes ir nepieciešamas mūsu lietotnei. Mūsu mezgls ir izvēlēts kā Ubuntu, tāpēc mēs varam paļauties uz APT pakotņu pārvaldnieku, lai apkopotu atkarības. OS izplatīšanas nodrošināto pakotņu instalēšana ir vienkārša:
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'
Tie ir diezgan pašsaprotami. Pirmajā rindā tiks atjaunināts apt repozitorijs, un nākamajās rindās tiks instalētas šīs pakotnes.
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.
Kad esam pabeiguši nepieciešamo pakotņu pievienošanu, mums ir jāizveido Linux lietotājs bez priviliģētām tiesībām, kuram piederēs lietojumprogrammas pirmkods.
user 'bob' do
uid 1212
gid 'users'
home '/home/bob'
shell '/bin/bash'
password '$1$alilbito$C83FsODuq0A1pUMeFPeR10'
end
Ņemiet vērā, ka parole ir ēnu hash formāts, ko izmanto Linux. To var iegūt, izmantojot OpenSSL:
$ openssl passwd -1 -salt alilbitof mypassword
Tagad iekļausim Django lietojumprogrammas pirmkodu mūsu pavārgrāmatā. Ievietojiet avota kodu iekšpusē ./my-chef-project/cookbooks/my-cookbook/files/default/myapp/
Izveidojiet ./my-chef-project/cookbooks/my-cookbook/files/default
direktoriju, ja tā neeksistē.
Norādījumi par šo failu kopēšanu uz attālo vietu mūsu mezglā ir aprakstīti, izmantojot resursu 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
Lai instalētu python pakotnes programmā requirements.txt
, mēs varam izmantot izpildes resursu, lai palaistu patvaļīgu komandu. Šajā gadījumā mums ir jāizpilda pip instalēšanas komanda virs tā:
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
Tagad ir pienācis laiks sagatavot Gunicorn WSGI HTTP serveri ar NGINX kā mūsu reverso starpniekserveri. Nginx tiek izmantots arī visu Django statisko līdzekļu apstrādei.
Lai izmantotu Gunicorn kā pakalpojumu Ubuntu, var izmantot Systemd. Systemd_unit resurss ir iekļauts šefpavārs kopš versijā 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
Tagad mums ir jāiekļauj standarta NGINX starpniekservera konfigurācija šajā Gunicorn serverī, kā parādīts zemāk. Šo fragmentu var ievadīt ./my-cookbook/templates/nginx.conf.erb
. Izveidojiet veidņu direktoriju, ja tā neeksistē.
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.
Lai kopētu šo konfigurāciju uz mezgla mapi, kurā ir iespējotas vietnes, izmantojiet Chef veidnes resursu.
template '/etc/nginx/sites-available/example.com.conf' do
source 'nginx.conf.erb'
owner 'root'
group 'root'
mode '0744'
end
Konfigurāciju aktivizēšana operētājsistēmā nginx parasti tiek veikta, izveidojot simsaiti, kas norāda uz konfigurāciju sites-available
nginx sites-enabled
mapē. Simbolus var norādīt pavāru pavārgrāmatās, izmantojot tālāk norādīto saišu resursu:
link '/etc/nginx/sites-enabled/example.com.conf' do
to '/etc/nginx/sites-available/example.com.conf'
end
un lai izdzēstu noklusējuma konfigurācijas simbolu:
link '/etc/nginx/sites-enabled/default' do
action :delete
end
Un visbeidzot, lai aktivizētu nginx pakalpojumu:
service 'nginx' do
action :enable
action :start
end
Pavāra izpildes saraksti ir sakārtots lomu vai recepšu saraksts pavārgrāmatā, kas mezglā tiks izpildīts secīgi. Mums ir viena pavārgrāmata "mana pavārgrāmata" un tajā ietvertā "noklusējuma" recepte, kas mums jāizpilda Ubuntu lodziņā, tāpēc mūsu projekta direktorijā ( ./my-chef-project/runlist.json
) esošajam failam runlist.json vajadzētu izskatīties šādi:
{
"run_list": [
"recipe[my-cookbook::default]"
]
}
Mūsu pavārgrāmata šefpavāram solo ir gatava pasniegšanai. Ir pienācis laiks nodrošināt Ubuntu 18.04 mašīnu un instalēt tajā 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'
Atgriežoties pie mūsu šefpavāra darbstacijas , viss, kas mums jādara, ir jāievieto pavārgrāmatu mape tarbolā, jāpārsūta šī tarbola runlist.json
uz attālo mezglu, ko nodrošinājām iepriekš, un jāpalaiž komanda chef-solo:
(Tālāk norādītā komanda ir jāpalaiž mezglā vai 'pavāra klienta', nevis šefpavāra darbstacijā)
$ chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept
Vai arī šeit ir viena lādīte (tiek darbināta no ./my-chef-project/
CWD uz 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'
Tieši tā! Skatieties, kā standarta izvade piepildās ar šefpavāra aktivitātēm, mēģinot saskaņot jūsu mezglu ar pavārgrāmatās norādīto. Pavārs-solo uzstādīs visus dārgakmeņus, kas nepieciešami visām pavārgrāmatām. Ja komanda chef-solo ir veiksmīga, Ubuntu lodziņā aiz nginx darbosies Django lietojumprogramma. Pārejiet uz domēnu/IP, lai to pārbaudītu.
Note: Remember that in django you may need to set this domain/ip in the
ALLOWED_HOSTS
list insettings.py
.
Ikreiz, kad mēs veicam izmaiņas sava projekta direktorija saturā (receptes, veidnes vai lietojumprogrammas pirmkods utt.), vienkārši palaidiet iepriekš minēto vienu līniju no projekta direktorijas.
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.
Ja uzmanīgi aplūkojat pēdējo komandu šefpavārs-solo, ievērojiet, ka --recipe-url
ir paredzēts URL. Tas nozīmē, ka jums var būt darbplūsma, kurā CI izveidos jūsu šefpavāra solo tarbolu, augšupielādēs to kaut kur un konfigurēs jūsu mezglu, lai tas periodiski izvilktu no tā.
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 ir populārs atvērtā pirmkoda CI (Continuous Integration) rīks, ko plaši izmanto projektu izstrādei, izvietošanai un automatizācijai. Šis raksts tiks
Vai izmantojat citu sistēmu? Ievads Nepārtrauktā integrācija ir DevOps programmatūras izstrādes prakse, kas ļauj izstrādātājiem bieži apvienot
Vai izmantojat citu sistēmu? Ansible ir atvērtā pirmkoda rīks uzdevumu automatizēšanai. Tas pārvalda jūsu Linux un Windows serveru konfigurāciju. Tas strādā
Vai izmantojat citu sistēmu? GoCD ir atvērtā koda nepārtrauktas piegādes un automatizācijas sistēma. Tas ļauj modelēt sarežģītas darbplūsmas, izmantojot tās paralēlo an
Lai gan SaltStack ir lielisks rīks darbību veikšanai daudzos serveros vienlaikus, tas atbalsta arī katram resursdatoram definētus konfigurācijas sākotnējos iestatījumus, kas saglabāti
Vai izmantojat citu sistēmu? Ansible ir atvērtā pirmkoda rīks uzdevumu automatizēšanai. Tas pārvalda jūsu Linux un Windows serveru konfigurāciju. Tas strādā
Introduction Drone is an automated, continuous testing and delivery platform which runs on your own infrastructure. Drone supports any language, service o
Kas ir slodzes līdzsvarotājs Slodzes līdzsvarotāji atrodas jūsu lietojumprogrammas priekšā un sadala ienākošo trafiku vairākos jūsu lietojumprogrammas gadījumos. Fo
Vai izmantojat citu sistēmu? Foreman ir bezmaksas atvērtā koda rīks, kas palīdz konfigurēt un pārvaldīt fiziskos un virtuālos serverus. Forema
SaltStack jeb Salt ir populārs atvērtā pirmkoda konfigurācijas pārvaldības risinājums, ko var izmantot attālinātas izpildes, konfigurācijas pārvaldības, kodēšanas ieviešanai.
Ievads Strider CD ir atvērtā koda nepārtrauktas izvietošanas platforma. Lietojumprogramma ir rakstīta Node.js un izmanto MongoDB kā krātuves aizmugursistēmu. Solis
Ievads Chocolatey nodrošina pakotņu pārvaldību, kas atvieglo programmatūras un atkarību administrēšanu operētājsistēmā Linux sistēmā Windows. Jūs varat ātri un viegli
Kas ir Packer? Packer ir servera attēlveidošanas rīks, ko izstrādājis HashiCorp. Servera attēlveidošana; vai alternatīvi, nemainīga infrastruktūra; ir populāra alternatīva
Vai izmantojat citu sistēmu? Ievads Nepārtrauktā integrācija ir DevOps programmatūras izstrādes prakse, kas ļauj izstrādātājiem bieži apvienot
Ir daudzi veidi, kā automatizēt kastes iestatīšanas un konfigurēšanas procesu. Kādu iemeslu dēļ, ja visa mūsu sistēma šobrīd sastāv no tikai
Vai izmantojat citu sistēmu? Foreman ir bezmaksas atvērtā koda rīks, kas palīdz konfigurēt un pārvaldīt fiziskos un virtuālos serverus. Forema
SaltStack ir uz python balstīta konfigurācijas pārvaldības programma, kas ir optimizēta konfigurācijas failu, izvietošanas un visa cita unde automatizācijai.
Mākslīgais intelekts nav nākotnē, tas ir šeit, tagadnē. Šajā emuārā lasiet, kā mākslīgā intelekta lietojumprogrammas ir ietekmējušas dažādas nozares.
Vai arī jūs esat DDOS uzbrukumu upuris un esat neizpratnē par profilakses metodēm? Izlasiet šo rakstu, lai atrisinātu savus jautājumus.
Iespējams, esat dzirdējuši, ka hakeri pelna daudz naudas, bet vai esat kādreiz domājuši, kā viņi nopelna šādu naudu? pārrunāsim.
Vai vēlaties redzēt revolucionārus Google izgudrojumus un to, kā šie izgudrojumi mainīja katra cilvēka dzīvi mūsdienās? Pēc tam lasiet emuārā, lai redzētu Google izgudrojumus.
Pašpiedziņas automobiļu koncepcija izbraukt uz ceļiem ar mākslīgā intelekta palīdzību ir mūsu sapnis jau kādu laiku. Bet, neskatoties uz vairākiem solījumiem, tie nekur nav redzami. Lasiet šo emuāru, lai uzzinātu vairāk…
Zinātnei strauji attīstoties, pārņemot lielu daļu mūsu pūļu, palielinās arī risks pakļaut sevi neizskaidrojamai singularitātei. Izlasiet, ko singularitāte varētu nozīmēt mums.
Datu uzglabāšanas metodes ir attīstījušās kopš datu dzimšanas. Šajā emuārā ir aprakstīta datu uzglabāšanas attīstība, pamatojoties uz infografiku.
Lasiet emuāru, lai vienkāršākā veidā uzzinātu dažādus lielo datu arhitektūras slāņus un to funkcijas.
Šajā digitālajā pasaulē viedās mājas ierīces ir kļuvušas par būtisku dzīves sastāvdaļu. Šeit ir daži pārsteidzoši viedo mājas ierīču ieguvumi, lai padarītu mūsu dzīvi dzīves vērtu un vienkāršāku.
Nesen Apple izlaida macOS Catalina 10.15.4 papildinājuma atjauninājumu, lai novērstu problēmas, taču šķiet, ka atjauninājums rada vairāk problēmu, kas izraisa Mac datoru bloķēšanu. Izlasiet šo rakstu, lai uzzinātu vairāk