เริ่มต้นด้วย SaltStack บน Ubuntu 17.04
SaltStack เป็นโปรแกรมจัดการการกำหนดค่าที่ใช้ python ซึ่งได้รับการปรับให้เหมาะสมสำหรับการทำงานอัตโนมัติของไฟล์การกำหนดค่าการปรับใช้และสิ่งอื่น ๆ
การรวมอย่างต่อเนื่องเป็นแนวปฏิบัติในการพัฒนาซอฟต์แวร์ DevOps ซึ่งช่วยให้นักพัฒนาสามารถรวมรหัสที่แก้ไขแล้วลงในที่เก็บที่ใช้ร่วมกันหลายครั้งต่อวัน หลังจากการผสานแต่ละครั้งจะมีการสร้างและทดสอบอัตโนมัติเพื่อตรวจหาปัญหาในรหัส ช่วยให้นักพัฒนาสามารถค้นหาและแก้ไขข้อผิดพลาดได้อย่างรวดเร็วเพื่อปรับปรุงคุณภาพซอฟต์แวร์และจัดส่งซอฟต์แวร์อย่างต่อเนื่อง การสลับไปมาจาก Concourse นั้นง่ายมากเพราะมันเก็บการกำหนดค่าทั้งหมดไว้ในไฟล์ที่สามารถตรวจสอบได้ในการควบคุมเวอร์ชัน นอกจากนี้ยังมีส่วนต่อประสานกับผู้ใช้บนเว็บซึ่งแสดงข้อมูลการสร้างแบบโต้ตอบ
ตรวจสอบให้แน่ใจว่าได้แทนที่ที่อยู่ทั้งหมด 192.0.2.1
และ ci.example.com
ด้วยที่อยู่ IP สาธารณะ Vultr ที่แท้จริงของคุณและชื่อโดเมนจริง
ปรับปรุงระบบฐานของคุณใช้คู่มือ วิธีการปรับปรุง Ubuntu 16.04 เมื่อระบบของคุณอัปเดตแล้วให้ดำเนินการติดตั้ง PostgreSQL
PostgreSQL เป็นระบบฐานข้อมูลเชิงวัตถุ Concourse จัดเก็บข้อมูลไปป์ไลน์ในฐานข้อมูล PostgreSQL เพิ่มที่เก็บ PostgreSQL
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
ติดตั้งเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL
sudo apt -y install postgresql
เริ่มต้นเซิร์ฟเวอร์ PostgreSQL และเปิดใช้งานให้เริ่มโดยอัตโนมัติเมื่อบูตเครื่อง
sudo systemctl start postgresql
sudo systemctl enable postgresql
เปลี่ยนรหัสผ่านสำหรับผู้ใช้ PostgreSQL เริ่มต้น
sudo passwd postgres
เข้าสู่ระบบในฐานะผู้ใช้ PostgreSQL:
sudo su - postgres
สร้างผู้ใช้ PostgreSQL ใหม่สำหรับ Concourse CI
createuser concourse
หมายเหตุ : ผู้ใช้ PostgreSQL ดีฟอลต์สามารถใช้สำหรับการพิสูจน์ตัวตนของฐานข้อมูล แต่ขอแนะนำให้ใช้ผู้ใช้เฉพาะสำหรับการพิสูจน์ตัวตนของฐานข้อมูล Concourse ในการตั้งค่าการผลิต
PostgreSQL จัดเตรียมเชลล์เพื่อรันเคียวรีบนฐานข้อมูล สลับไปที่เชลล์ PostgreSQL
psql
ตั้งรหัสผ่านสำหรับผู้ใช้ฐานข้อมูล Concourse ที่สร้างขึ้นใหม่
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
สำคัญ : แทนที่ DBPassword
ด้วยรหัสผ่านที่คาดเดายาก จดบันทึกรหัสผ่านตามที่จำเป็นในภายหลังในบทช่วยสอน
สร้างฐานข้อมูลใหม่สำหรับฝูงชน
CREATE DATABASE concourse OWNER concourse;
ออกจาก psql
เปลือก
\q
เปลี่ยนเป็นผู้ใช้ sudo จากpostgres
ผู้ใช้ปัจจุบัน
exit
ดาวน์โหลดเวอร์ชันล่าสุดของไฟล์ปฏิบัติการ Concourse และเก็บไว้ /usr/bin
เพื่อให้สามารถทำงานได้โดยตรง รุ่นล่าสุดของฝูงชนและบินไบนารีสามารถพบได้ใน หน้าดาวน์โหลด Concourse ใหม่ออกบ่อยมาก แทนที่ลิงค์ด้านล่างด้วยลิงค์ใหม่สำหรับเวอร์ชั่นล่าสุด
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/concourse_linux_amd64 -O /usr/bin/concourse
/usr/bin
ในทำนองเดียวกันดาวน์โหลดรุ่นล่าสุดของปฏิบัติการบินและเก็บไว้ใน
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/fly_linux_amd64 -O /usr/bin/fly
Fly เป็นอินเตอร์เฟสบรรทัดคำสั่งที่ใช้เชื่อมต่อกับ ATC API ของ Concourse CI Fly พร้อมใช้งานสำหรับหลายแพลตฟอร์มเช่น Linux, Windows และ MacOS
มอบหมายการอนุญาตให้ดำเนินการเพื่อดาวน์โหลด concourse
และ fly
ไบนารี
sudo chmod +x /usr/bin/concourse /usr/bin/fly
ตรวจสอบว่า Concourse and Fly ทำงานอย่างถูกต้องหรือไม่โดยตรวจสอบเวอร์ชั่นของพวกเขา
concourse -version
fly -version
คู่คีย์ RSA จัดให้มีวิธีการเข้ารหัสการสื่อสารระหว่างส่วนประกอบของ Concourse
เพื่อให้ฝูงชนทำงานได้ต้องสร้างอย่างน้อยสามคู่ session_signing_key
สำหรับการเข้ารหัสข้อมูลเซสชั่นที่สร้าง กุญแจนี้จะถูกใช้โดย TSA เพื่อลงนามคำขอที่ทำกับ ATC เพื่อรักษาความปลอดภัยเซิร์ฟเวอร์ TSA SSH, tsa_host_key
สร้าง สุดท้ายสร้าง a worker_key
สำหรับผู้ปฏิบัติงานแต่ละคน
สร้างไดเรกทอรีใหม่เพื่อจัดเก็บคีย์และการกำหนดค่าที่เกี่ยวข้องกับ Concourse CI
sudo mkdir /opt/concourse
สร้างคีย์ที่จำเป็น
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/session_signing_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/worker_key
อนุญาตคีย์สาธารณะของคนงานโดย��ัดลอกเนื้อหาลงใน authorized_worker_keys
ไฟล์
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
ฝูงชนจัดให้มีสององค์ประกอบแยกกันซึ่งจะต้องเริ่มต้น: เว็บและผู้ปฏิบัติงาน เริ่มเว็บ Concourse
sudo concourse web \
--basic-auth-username admin \
--basic-auth-password StrongPass \
--session-signing-key /opt/concourse/session_signing_key \
--tsa-host-key /opt/concourse/tsa_host_key \
--tsa-authorized-keys /opt/concourse/authorized_worker_keys \
--postgres-user=concourse \
--postgres-password=DBPassword \
--postgres-database=concourse \
--external-url http://192.0.2.1:8080
เปลี่ยนชื่อผู้ใช้และรหัสผ่านของ basic-auth
ถ้าต้องการ ตรวจสอบให้แน่ใจว่าเส้นทางไปยังไฟล์คีย์นั้นถูกต้องและตรวจสอบให้แน่ใจว่ามีการระบุค่าที่ถูกต้องสำหรับชื่อผู้ใช้และรหัสผ่านในการกำหนดค่าฐานข้อมูล PostgreSQL
หมายเหตุ : ATC จะฟังพอร์ตเริ่มต้น 8080
และ TSA 2222
จะฟังพอร์ต หากไม่ต้องการการรับรองความถูกต้องให้ส่ง --no-really-i-dont-want-any-auth
ตัวเลือกหลังจากลบตัวเลือกการรับรองความถูกต้องเบื้องต้น
เมื่อเว็บเซิร์ฟเวอร์เริ่มทำงานเอาต์พุตต่อไปนี้จะปรากฏขึ้น
{"timestamp":"1503657859.661247969","source":"tsa","message":"tsa.listening","log_level":1,"data":{}}
{"timestamp":"1503657859.666907549","source":"atc","message":"atc.listening","log_level":1,"data":{"debug":"127.0.0.1:8079","http":"0.0.0.0:8080"}}
หยุดเซิร์ฟเวอร์ในตอนนี้เนื่องจากยังต้องตั้งค่าอีกสองสามอย่าง
เริ่ม Concourse CI Worker
sudo concourse worker \
--work-dir /opt/concourse/worker \
--tsa-host 127.0.0.1 \
--tsa-public-key /opt/concourse/tsa_host_key.pub \
--tsa-worker-private-key /opt/concourse/worker_key
คำสั่งดังกล่าวจะสมมติว่า TSA ที่กำลังทำงานอยู่บน localhost 2222
และการฟังพอร์ตเริ่มต้น
แม้ว่าเว็บ Concourse และผู้ปฏิบัติงานสามารถเริ่มต้นได้อย่างง่ายดายโดยใช้คำสั่งด้านบนแนะนำให้ใช้ Systemd เพื่อจัดการเซิร์ฟเวอร์
การใช้บริการ Systemd สำหรับการจัดการแอปพลิเคชันช่วยให้มั่นใจได้ว่าแอปพลิเคชันจะเริ่มต้นโดยอัตโนมัติเมื่อเกิดความล้มเหลวและในเวลาบูต เซิร์ฟเวอร์ Concourse ไม่ได้ใช้ข้อมูลจากไฟล์กำหนดค่าใด ๆ แต่สามารถเข้าถึงข้อมูลจากตัวแปรสภาพแวดล้อมได้ แทนที่จะตั้งค่าตัวแปรสภาพแวดล้อมโกลบอลสร้างไฟล์ใหม่เพื่อเก็บตัวแปรสภาพแวดล้อมจากนั้นส่งผ่านตัวแปรไปยัง Concourse CI โดยใช้บริการ Systemd
สร้างไฟล์สภาพแวดล้อมใหม่สำหรับเว็บ Concourse
sudo nano /opt/concourse/web.env
เติมไฟล์
CONCOURSE_SESSION_SIGNING_KEY=/opt/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/opt/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/opt/concourse/authorized_worker_keys
CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=DBPassword
CONCOURSE_POSTGRES_DATABASE=concourse
CONCOURSE_BASIC_AUTH_USERNAME=admin
CONCOURSE_BASIC_AUTH_PASSWORD=StrongPass
CONCOURSE_EXTERNAL_URL=http://192.0.2.1:8080
เปลี่ยนชื่อผู้ใช้และรหัสผ่านของ BASIC_AUTH
ถ้าต้องการ ตรวจสอบให้แน่ใจว่าเส้นทางไปยังไฟล์คีย์นั้นถูกต้องและตรวจสอบให้แน่ใจว่ามีการระบุค่าที่ถูกต้องสำหรับชื่อผู้ใช้และรหัสผ่านในการกำหนดค่าฐานข้อมูล PostgreSQL
ในทำนองเดียวกันสร้างไฟล์สภาพแวดล้อมสำหรับผู้ปฏิบัติงาน
sudo nano /opt/concourse/worker.env
เติมไฟล์
CONCOURSE_WORK_DIR=/opt/concourse/worker
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/opt/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/opt/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1
เนื่องจากไฟล์สภาพแวดล้อมมีชื่อผู้ใช้และรหัสผ่านให้เปลี่ยนการอนุญาตเพื่อให้ผู้ใช้รายอื่นไม่สามารถเข้าถึงได้
sudo chmod 600 /opt/concourse/*.env
ตอนนี้สร้างผู้ใช้ใหม่สำหรับ Concourse เพื่อเรียกใช้สภาพแวดล้อมเว็บ สิ่งนี้จะช่วยให้มั่��ใจได้ว่าเว็บเซิร์ฟเวอร์กำลังทำงานในสภาพแวดล้อมที่แยก
sudo useradd concourse
มอบสิทธิ์การเป็นเจ้าของผู้ใช้ Concourse ให้กับไดเรกทอรีของไฟล์ Concourse CI
sudo chown -R concourse:concourse /opt/concourse
สร้างไฟล์บริการ systemd ใหม่สำหรับบริการเว็บ Concourse
sudo nano /etc/systemd/system/concourse-web.service
เติมไฟล์
[Unit]
Description=Concourse CI web server
[Service]
Type=simple
User=concourse
Group=concourse
Restart=on-failure
EnvironmentFile=/opt/concourse/web.env
ExecStart=/usr/bin/concourse web
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_web
[Install]
WantedBy=multi-user.target
บันทึกและปิดไฟล์ สร้างไฟล์บริการใหม่สำหรับบริการผู้ร่วมงาน
sudo nano /etc/systemd/system/concourse-worker.service
เติมไฟล์
[Unit]
Description=Concourse CI worker process
[Service]
Type=simple
Restart=on-failure
EnvironmentFile=/opt/concourse/worker.env
ExecStart=/usr/bin/concourse worker
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_worker
[Install]
WantedBy=multi-user.target
บริการเว็บและผู้ปฏิบัติงานสามารถเริ่มต้นได้โดยตรง
sudo systemctl start concourse-web concourse-worker
หากต้องการให้ผู้ปฏิบัติงานและกระบวนการทางเว็บเริ่มต้นโดยอัตโนมัติในเวลาบูตให้เรียกใช้สิ่งต่อไปนี้
sudo systemctl enable concourse-worker concourse-web
ในการตรวจสอบสถานะของบริการให้เรียกใช้สิ่งต่อไปนี้
sudo systemctl status concourse-worker concourse-web
หากไม่ได้เริ่มบริการหรืออยู่ใน FAILED
สถานะให้ลบแคชออกจาก /tmp
ไดเรกทอรี
sudo rm -rf /tmp/*
เริ่มบริการใหม่
sudo systemctl restart concourse-worker concourse-web
ขอให้สังเกตว่าเวลานี้บริการได้เริ่มอย่างถูกต้อง ผลลัพธ์เมื่อตรวจสอบสถานะของบริการจะคล้ายกับต่อไปนี้
[user@vultr ~]$ sudo systemctl status concourse-worker concourse-web
● concourse-worker.service - Concourse CI worker process
Loaded: loaded (/etc/systemd/system/concourse-worker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3037 (concourse)
CGroup: /system.slice/concourse-worker.service
└─3037 /usr/bin/concourse worker
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.934722900","source":"tsa","message":"t...""}}
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.941227913","source":"guardian","messag...0"}}
...
● concourse-web.service - Concourse CI web server
Loaded: loaded (/etc/systemd/system/concourse-web.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3036 (concourse)
CGroup: /system.slice/concourse-web.service
└─3036 /usr/bin/concourse web
Aug 26 07:27:57 vultr.guest concourse_web[3036]: {"timestamp":"1503732477.925554752","source":"tsa","message":"tsa...ve"}}
Aug 26 07:28:02 vultr.guest concourse_web[3036]: {"timestamp":"1503732482.925430775","source":"tsa","message":"tsa...ve"}}
...
Hint: Some lines were ellipsized, use -l to show in full.
เมื่อเซิร์ฟเวอร์เริ่มทำงานเว็บอินเตอร์เฟสของ Concourse CI สามารถเข้าถึงได้โดยไปที่ http://192.0.2.1:8080
เบราว์เซอร์ใด ๆ เข้าสู่ระบบโดยใช้ชื่อผู้ใช้และรหัสผ่านที่ให้ไว้ในไฟล์สภาพแวดล้อม
หากต้องการเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ Fly ให้รันสิ่งต่อไปนี้
fly -t my-ci login -c http://192.0.2.1:8080
คำสั่งดังกล่าวใช้สำหรับการเข้าสู่ระบบครั้งแรกไปยังเซิร์ฟเวอร์ -t
ถูกใช้เพื่อระบุชื่อเป้าหมาย แทนที่ my-ci
ด้วยชื่อเป้าหมายที่ต้องการ main
คำสั่งดังกล่าวจะเข้าสู่ทีมเริ่มต้น มันจะถามชื่อผู้ใช้และรหัสผ่านที่ให้ไว้ในไฟล์สภาพแวดล้อม
ผลลัพธ์จะมีลักษณะดังนี้
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
การเข้าสู่ระบบเป้าหมายจะถูกบันทึกไว้หนึ่งวัน หลังจากนั้นมันจะหมดอายุ
เพื่อออกจากระบบทันที
fly -t my-ci logout
Fly สามารถใช้เพื่อเข้าสู่เซิร์ฟเวอร์ภายนอกเครือข่าย แต่เฉพาะเมื่อเซิร์ฟเวอร์มีที่อยู่ IP สาธารณะและสามารถเข้าถึงได้จากนอกเครือข่าย ไบนารี Windows หรือ MacOS สามารถดาวน์โหลดได้จากเว็บไซต์ดาวน์โหลดหรือจาก web UI ของเซิร์ฟเวอร์
การเข้าสู่ระบบและข้อมูลอื่น ๆ ที่ส่งผ่านเว็บ UI ไปยังเซิร์ฟเวอร์ Concourse ไม่ปลอดภัย การเชื่อมต่อไม่ได้เข้ารหัส พร็อกซีย้อนกลับ Nginx สามารถตั้งค่าด้วย Let's Encrypt SSL ฟรี
ติดตั้ง Nginx
sudo apt -y install nginx
เริ่ม Nginx และเปิดใช้งานให้เริ่มโดยอัตโนมัติในเวลาบูต
sudo systemctl start nginx
sudo systemctl enable nginx
เพิ่มที่เก็บ Certbot
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
ติดตั้ง Certbot ซึ่งเป็นแอปพลิเคชันไคลเอนต์สำหรับ Let's Encrypt CA
sudo apt -y install certbot
หมายเหตุ : ในการรับใบรับรองจาก Let's Encrypt CA โดเมนที่จะสร้างใบรับรองนั้นจะต้องชี้ไปที่เซิร์ฟเวอร์ หากไม่มีให้ทำการเปลี่ยนแปลงที่จำเป็นกับระเบียน DNS ของโดเมนและรอให้ DNS เผยแพร่ก่อนทำการขอใบรับรองอีกครั้ง Certbot ตรวจสอบอำนาจโดเมนก่อนที่จะให้ใบรับรอง
สร้างใบรับรอง SSL
sudo certbot certonly --webroot -w /var/www/html -d ci.example.com
ใบรับรองที่สร้างขึ้นมีแนวโน้มที่จะถูกเก็บไว้ใน /etc/letsencrypt/live/ci.example.com/
ไดเรกทอรี ใบรับรอง SSL จะถูกเก็บไว้เป็น และคีย์ส่วนตัวจะถูกเก็บไว้เป็นfullchain.pem
privkey.pem
ลองเข้ารหัสใบรับรองหมดอายุใน 90 วันดังนั้นขอแนะนำให้ต่ออายุอัตโนมัติสำหรับใบรับรองที่ตั้งค่าโดยใช้ cronjobs Cron เป็นบริการระบบที่ใช้ในการทำงานเป็นระยะ
เปิดไฟล์งาน cron
sudo crontab -e
เพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์
30 5 * * * /usr/bin/certbot renew --quiet
งาน cron ข้างต้นจะทำงานทุกวันเวลา 5:30 น. หากใบรับรองถึงกำหนดหมดอายุจะมีการต่ออายุโดยอัตโนมัติ
สร้างโฮสต์เสมือนใหม่
sudo nano /etc/nginx/sites-available/concourse
เติมไฟล์
server {
listen 80;
server_name ci.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name ci.example.com;
ssl_certificate /etc/letsencrypt/live/ci.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ci.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/concourse.access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://ci.example.com;
}
}
หมายเหตุ : แทนที่ ci.example.com
ด้วยโดเมนจริง
เปิดใช้งานไฟล์การกำหนดค่า
sudo ln -s /etc/nginx/sites-available/concourse /etc/nginx/sites-enabled/concourse
แก้ไขไฟล์ Environment ที่สร้างขึ้นสำหรับ Concourse Web
sudo nano /opt/concourse/web.env
เปลี่ยนค่าของ CONCOURSE_EXTERNAL_URL
และเพิ่มอีกสองบรรทัดที่ท้ายไฟล์
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
บันทึกไฟล์และรีสตาร์ท Concourse Web, Worker และ Nginx
sudo systemctl restart concourse-worker concourse-web nginx
ข้อมูลทั้งหมดที่ส่งไปและกลับจากเบราว์เซอร์นั้นปลอดภัยด้วยการเข้ารหัส SSL
SaltStack เป็นโปรแกรมจัดการการกำหนดค่าที่ใช้ python ซึ่งได้รับการปรับให้เหมาะสมสำหรับการทำงานอัตโนมัติของไฟล์การกำหนดค่าการปรับใช้และสิ่งอื่น ๆ
ใช้ระบบที่แตกต่างกันอย่างไร โฟร์แมนเป็นเครื่องมือโอเพนซอร์ซฟรีและโอเพนซอร์สซึ่งช่วยคุณในการกำหนดค่าและจัดการเซิร์ฟเวอร์จริงและเซิร์ฟเวอร์เสมือน FOREMA
Jenkins เป็นเครื่องมือโอเพ่นซอร์ส CI (การรวมต่อเนื่อง) ยอดนิยมซึ่งใช้กันอย่างแพร่หลายสำหรับการพัฒนาโครงการการปรับใช้และระบบอัตโนมัติ บทความนี้จะ
SaltStack หรือ Salt เป็นโซลูชันการจัดการการกำหนดค่าโอเพ่นซอร์สที่เป็นที่นิยมซึ่งสามารถใช้ในการดำเนินการทางไกลการจัดการการกำหนดค่า cod
ใช้ระบบที่แตกต่างกันอย่างไร บทนำการผนวกรวมอย่างต่อเนื่องเป็นแนวปฏิบัติในการพัฒนาซอฟต์แวร์ DevOps ซึ่งจะช่วยให้นักพัฒนาสามารถผสาน th บ่อยครั้ง
มีหลายวิธีในการตั้งค่าและกำหนดค่ากล่องโดยอัตโนมัติ ไม่ว่าจะด้วยเหตุผลใดก็ตามหากระบบทั้งหมดของเรา ณ จุดนี้ประกอบด้วยเพียง
Load Balancer คืออะไร Load Balancer นั่งอยู่หน้าแอปพลิเคชันของคุณและกระจายทราฟฟิกที่เข้ามาในหลาย ๆ แอปพลิเคชันของคุณ Fo
บทนำโดรนเป็นแพลตฟอร์มการทดสอบอัตโนมัติและการส่งมอบต่อเนื่องซึ่งทำงานบนโครงสร้างพื้นฐานของคุณเอง Drone รองรับทุกภาษา, บริการ o
ใช้ระบบที่แตกต่างกันอย่างไร Ansible เป็นเครื่องมือโอเพ่นซอร์สสำหรับการทำงานอัตโนมัติ มันจัดการการกำหนดค่าเซิร์ฟเวอร์ Linux และ Windows ของคุณ มันทำงานได้
ใช้ระบบที่แตกต่างกันอย่างไร โฟร์แมนเป็นเครื่องมือโอเพนซอร์ซฟรีและโอเพนซอร์สซึ่งช่วยคุณในการกำหนดค่าและจัดการเซิร์ฟเวอร์จริงและเซิร์ฟเวอร์เสมือน FOREMA
ในขณะที่ SaltStack เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการใช้งานการดำเนินงานบนเซิร์ฟเวอร์หลายเครื่องพร้อมกัน แต่ก็รองรับการกำหนดค่าที่กำหนดล่วงหน้าต่อโฮสต์ที่เก็บไว้ใน
ใช้ระบบที่แตกต่างกันอย่างไร GoCD เป็นโอเพ่นซอร์สการส่งต่อและระบบอัตโนมัติ ช่วยให้คุณสามารถสร้างแบบจำลองเวิร์กโฟลว์ที่ซับซ้อนโดยใช้ขนานและ
ใช้ระบบที่แตกต่างกันอย่างไร Ansible เป็นเครื่องมือโอเพ่นซอร์สสำหรับการทำงานอัตโนมัติ มันจัดการการกำหนดค่าเซิร์ฟเวอร์ Linux และ Windows ของคุณ มันทำงานได้
Introduction Strider CD เป็นแพลตฟอร์มโอเพ่นซอร์สอย่างต่อเนื่อง แอปพลิเคชันเขียนขึ้นใน Node.js และใช้ MongoDB เป็นแบ็กเอนด์หน่วยเก็บข้อมูล สาวเท้า
Packer คืออะไร Packer เป็นเครื่องมือสร้างภาพเซิร์ฟเวอร์ที่พัฒนาโดย HashiCorp ภาพเซิร์ฟเวอร์ หรืออีกทางหนึ่งคือโครงสร้างพื้นฐานที่ไม่เปลี่ยนรูปแบบ เป็นทางเลือกที่นิยม
บทนำ Chocolatey นำการจัดการแพคเกจที่ทำให้การจัดการซอฟต์แวร์และการอ้างอิงบน Linux เป็นเรื่องง่ายไปยัง Windows คุณสามารถทำได้อย่างรวดเร็วและง่ายดาย
ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน
การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane
ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+
อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ
เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม
13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data
คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true
ในขณะที่วิทยาศาสตร์มีวิวัฒนาการไปอย่างรวดเร็ว โดยรับช่วงต่อความพยายามของเราอย่างมาก ความเสี่ยงในการทำให้ตัวเองตกอยู่ในภาวะภาวะเอกฐานที่อธิบายไม่ได้ก็เพิ่มขึ้นเช่นกัน อ่านว่าภาวะเอกฐานอาจมีความหมายสำหรับเราอย่างไร
ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1
AI ในการดูแลสุขภาพได้ก้าวกระโดดอย่างมากจากทศวรรษที่ผ่านมา ดังนั้นอนาคตของ AI ในการดูแลสุขภาพจึงยังคงเติบโตทุกวัน