KitchenSalt cho phép bạn sử dụng Test Kitchen để kiểm tra cấu hình Salt của bạn cục bộ mà không cần Salt master hoặc minion. Trong hướng dẫn này, bạn sẽ cài đặt KitchenSalt và sử dụng Docker để kiểm tra trạng thái Salt. Hướng dẫn này được tạo bằng hệ thống chạy Ubuntu 18.04.
Trước khi bạn bắt đầu
- Bạn sẽ cần quyền truy cập root vào máy tính của mình hoặc tài khoản người dùng có
sudo
đặc quyền. Để biết thêm thông tin về đặc quyền, hãy xem hướng dẫn Người dùng và Nhóm của chúng tôi . - Cài đặt Git trên máy tính cục bộ của bạn nếu nó chưa được cài đặt.
- Cập nhật các gói hệ thống của bạn.
Cài đặt rbenv và Ruby
Kitchen chạy trên Ruby. Các lệnh sau sẽ cài đặt bộ điều khiển phiên bản Ruby rbenv, đặt rbenv trong PATH của bạn và cài đặt Ruby thông qua rbenv.
1.Cài đặt các gói cần thiết cho rbenv:
sudo apt install libssl-dev libreadline-dev zlib1g-dev bzip2 gcc make git ruby-dev
2.Sao chép kho lưu trữ git rbenv và thiết lập PATH của bạn:
sudo git clone git://github.com/rbenv/rbenv.git /usr/local/rbenv
sudo mkdir /usr/local/rbenv/plugins
sudo git clone git://github.com/rbenv/ruby-build.git /usr/local/rbenv/plugins/ruby-build
sudo tee /etc/profile.d/rbenv.sh <<< 'export PATH="/usr/local/rbenv/plugins/ruby-build/bin:/usr/local/rbenv/bin:$PATH"'
sudo tee -a /etc/profile.d/rbenv.sh <<< 'source <(rbenv init -)'
3.Tải lại cấu hình hệ thống của bạn để các lệnh rbenv được thêm vào PATH
:
source /etc/profile
Bạn cũng có thể khởi động lại phiên shell để PATH
những thay đổi có hiệu lực.
4.Cài đặt Ruby:
Cài đặt Docker
Để cài đặt Docker CE (Phiên bản cộng đồng), hãy làm theo hướng dẫn trong một trong các hướng dẫn dưới đây:
Để xem hướng dẫn cài đặt cho các bản phân phối Linux hoặc hệ điều hành khác như Mac hoặc Windows, hãy tham khảo tài liệu chính thức của Docker tại đây: Cài đặt Docker Engine
Cài đặt KitchenSalt
1.Cài đặt bundler gem:
sudo gem install bundler
2.Tạo Gemfile trong thư mục làm việc của bạn và thêm các gem kitchen-salt
, kitchen-docker
, và kitchen-sync
:
#Gemfile
source 'https://rubygems.org'
gem 'kitchen-salt'
gem 'kitchen-docker'
gem 'kitchen-sync'
kitchen-sync
được sử dụng để sao chép tệp vào vùng chứa Docker nhanh hơn.
3.Cài đặt gem bằng bundler:
sudo bundle install
Tạo một tệp .sls mẫu
Để thử nghiệm, hãy tạo một tệp trạng thái Salt cài đặt NGINX và đảm bảo rằng nó đang chạy. Trong trình soạn thảo văn bản, hãy tạo một nginx.sls
tệp trong thư mục làm việc của bạn và thêm các dòng sau:
nginx:
pkg:
- installed
service.running:
- enable: True
- reload: True
- watch:
- pkg: nginx
Cấu hình kitchen.yml
1.Bây giờ, hãy viết tệp cấu hình Kitchen, bắt đầu bằng phần provisioner . Sao chép các dòng sau vào một kitchen.yml
tệp trong thư mục làm việc của bạn.
provisioner:
name: salt_solo
salt_install: bootstrap
is_file_root: true
require_chef: false
state_top:
base:
"*":
- nginx
...
Phần này định nghĩa salt_solo
là provisioner, cho phép Kitchen sử dụng Salt mà không cần Salt master. Trong phần này, Salt được cài đặt thông qua tập lệnh bootstrap bằng cách thiết lập salt_install: bootstrap
, gốc tệp Salt được ánh xạ tới thư mục .kitchen.yml
được định vị bằng cách thiết lập is_file_root: true
, và Chef bị vô hiệu hóa bằng cách thiết lập require_chef: false
. Thay vì cung cấp tệp top cho các trạng thái Salt, tệp top được khai báo nội tuyến. Phần này cũng là nơi các tệp trụ cột Salt được thêm vào. Để tham khảo, chúng được thêm vào bên dưới khối provisioner :
provisioner:
...
pillars:
top.sls:
base:
"*":
- nginx_pillar
pillars_from_files:
nginx_pillar.sls: nginx.pillar
2.Tiếp theo, cấu hình phần trình điều khiển :
...
driver:
name: docker
user_sudo: false
privileged: true
forward:
- 80
...
Phần này khai báo Docker là trình điều khiển, mặc dù bạn cũng có thể sử dụng Vagrant. Kitchen không cần sử dụng sudo
để xây dựng các container Docker, do đó user_sudo
được đặt thành false
. privileged
được đặt thành true
để đảm bảo rằng các container chạy systemd dưới dạng lệnh exec. Container Docker sẽ forward
lưu thông đến máy chủ trên cổng 80
.
3.Cấu hình phần nền tảng :
...
platforms:
- name: ubuntu
driver_config:
run_command: /lib/systemd/systemd
...
Phần này định nghĩa nền tảng nào Docker sẽ chạy. Theo mặc định, Docker sẽ chạy phiên bản mới nhất của nền tảng đó. Vì các nền tảng khác nhau đặt systemd ở các vị trí khác nhau, nên driver_config
phần này được sử dụng để trỏ đến đường dẫn cài đặt systemd của nền tảng đó. Có thể định nghĩa nhiều nền tảng.
4.Cấu hình phần bộ sản phẩm :
...
suites:
- name: oxygen
provisioner:
salt_bootstrap_options: -X -p git stable 2018.3
...
suites
định nghĩa bộ phần mềm nào mà Kitchen sẽ kiểm tra. Trong ngữ cảnh này, Kitchen sẽ kiểm tra bản phát hành Oxygen của Salt. Có thể định nghĩa nhiều hơn một bộ phần mềm.
5.Cuối cùng, phần vận chuyển cho phép chúng ta chỉ định cách sử dụng kitchen-sync
để truyền tệp:
...
transport:
name: sftp
6.Bây giờ bạn có thể kiểm tra cấu hình Salt của mình bằng Kitchen. Nhập lệnh sau để chạy thử nghiệm:
kitchen test
Lệnh này sẽ tạo, hội tụ và sau đó hủy phiên bản thử nghiệm. Nếu hoàn tất thành công, đầu ra cuối cùng của thiết bị đầu cuối sẽ là:
-----> Kitchen is finished. (13m32.13s)
Để có cách tiếp cận chi tiết hơn khi chạy thử nghiệm, bạn có thể sử dụng từng lệnh theo trình tự:
kitchen list
kitchen create
kitchen converge
kitchen destroy
Sử dụng Trình xác minh và các bước tiếp theo
Mặc dù nằm ngoài phạm vi của bài viết này, Kitchen cho phép kiểm tra mạnh mẽ hơn là chỉ kiểm tra cấu hình Salt. Bạn có thể viết các bài kiểm tra trong bash bằng Bats, trong Ruby bằng Minitest, Rspec, Serverspec và Inspec hoặc nếu bạn quen thuộc hơn với Python, bạn có thể sử dụng pytest.
Ví dụ, bạn có thể thêm đoạn mã sau vào kitchen.yaml
để xác minh các bài kiểm tra của mình bằng cách sử dụng viên ngọc Inspec:
...
verifier:
name: inspec
Để biết thêm thông tin về bài kiểm tra viết, hãy truy cập các liên kết trong phần Thông tin thêm bên dưới.
Thông tin thêm
Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.
Nguồn: https://www.linode.com/docs/guides/test-salt-locally-with-kitchen-salt/