SaltStack - Hướng dẫn nhanh
Trong chương này, chúng ta sẽ tìm hiểu những kiến thức cơ bản về SaltStack. Khả năng thực thi từ xa của SaltStack cho phép quản trị viên chạy các lệnh trên nhiều máy khác nhau song song với một hệ thống nhắm mục tiêu linh hoạt. Quản lý cấu hình Salt thiết lập một mô hình tổng thể để nhanh chóng, rất dễ dàng, linh hoạt và an toàn đưa các thành phần cơ sở hạ tầng phù hợp với một chính sách nhất định.
SaltStack là gì?
Salt là một khuôn khổ tự động hóa rất mạnh mẽ. Kiến trúc Salt dựa trên ý tưởng thực thi các lệnh từ xa. Tất cả mạng được thiết kế xung quanh một số khía cạnh của thực thi từ xa. Điều này có thể đơn giản như hỏi mộtRemote Web Serverđể hiển thị một trang Web tĩnh, hoặc phức tạp như sử dụng phiên shell để đưa ra các lệnh tương tác với máy chủ từ xa. Salt là một ví dụ về một trong những kiểu thực thi từ xa phức tạp hơn.
Salt được thiết kế để cho phép người dùng nhắm mục tiêu rõ ràng và ra lệnh trực tiếp cho nhiều máy. Salt dựa trên ý tưởng về một Master, điều khiển một hoặc nhiềuMinions. Các lệnh thường được đưa ra từ Master cho một nhóm Minion mục tiêu, nhóm này sau đó thực hiện các nhiệm vụ được chỉ định trong các lệnh và sau đó trả lại dữ liệu kết quả cho Master. Giao tiếp giữa chủ và tay sai xảy ra quaZeroMQ message bus.
Mô-đun SaltStack giao tiếp với hệ điều hành minion được hỗ trợ. CácSalt Masterchạy trên Linux theo mặc định, nhưng bất kỳ hệ điều hành nào cũng có thể là tay sai và hiện tại các biến thể Windows, VMware vSphere và BSD Unix đều được hỗ trợ tốt. Salt Master và các tay sai sử dụng chìa khóa để giao tiếp. Khi một minion kết nối với một chủ lần đầu tiên, nó sẽ tự động lưu trữ các khóa trên chủ. SaltStack cũng cung cấpSalt SSH, cung cấp quản lý hệ thống "ít tác nhân hơn".
Cần cho SaltStack
SaltStack được xây dựng cho tốc độ và quy mô. Đây là lý do tại sao nó được sử dụng để quản lý các cơ sở hạ tầng lớn với hàng chục nghìn máy chủ tại LinkedIn, WikiMedia và Google.
Hãy tưởng tượng rằng bạn có nhiều máy chủ và muốn thực hiện mọi việc với các máy chủ đó. Bạn sẽ cần đăng nhập vào từng cái và làm những việc đó lần lượt trên từng cái và sau đó bạn có thể muốn thực hiện những việc phức tạp như cài đặt phần mềm rồi cấu hình phần mềm đó dựa trên một số tiêu chí cụ thể.
Giả sử bạn có mười hoặc thậm chí có thể là 100 máy chủ. Hãy tưởng tượng việc đăng nhập lần lượt vào từng máy chủ riêng lẻ, đưa ra các lệnh giống nhau trên 100 máy đó và sau đó chỉnh sửa các tệp cấu hình trên cả 100 máy sẽ trở thành một công việc rất tẻ nhạt. Để khắc phục những vấn đề đó, bạn muốn cập nhật tất cả các máy chủ của mình cùng một lúc, chỉ bằng cách gõ một lệnh duy nhất. SaltStack cung cấp cho bạn chính xác giải pháp cho tất cả các vấn đề như vậy.
Các tính năng của SaltStack
SaltStack là phần mềm quản lý cấu hình mã nguồn mở và công cụ thực thi từ xa. Salt là một công cụ dòng lệnh. Mặc dù được viết bằng Python, nhưng quản lý cấu hình SaltStack là ngôn ngữ bất khả tri và đơn giản. Nền tảng Salt sử dụng mô hình đẩy để thực hiện các lệnh thông qua giao thức SSH. Hệ thống cấu hình mặc định làYAML và Jinja templates. Muối chủ yếu cạnh tranh vớiPuppet, Chef và Ansible.
Salt cung cấp nhiều tính năng khi so sánh với các công cụ cạnh tranh khác. Một số tính năng quan trọng được liệt kê dưới đây.
Fault tolerance- Salt minion có thể kết nối với nhiều master cùng một lúc bằng cách định cấu hình tham số cấu hình master dưới dạng danh sách YAML của tất cả các master có sẵn. Bất kỳ bậc thầy nào cũng có thể chuyển lệnh đến cơ sở hạ tầng Salt.
Flexible- Toàn bộ phương thức quản lý của Salt rất linh hoạt. Nó có thể được thực hiện để tuân theo các mô hình quản lý hệ thống phổ biến nhất như Agent và Server, Agent-only, Server-only hoặc tất cả các mô hình trên trong cùng một môi trường.
Scalable Configuration Management - SaltStack được thiết kế để xử lý mười nghìn tay sai trên mỗi chủ.
Parallel Execution model - Salt có thể kích hoạt các lệnh để thực thi hệ thống từ xa một cách song song.
Python API - Salt cung cấp một giao diện lập trình đơn giản và nó được thiết kế theo mô-đun và có thể mở rộng dễ dàng, giúp dễ dàng tạo ra các ứng dụng đa dạng.
Easy to Setup - Salt dễ thiết lập và cung cấp một kiến trúc thực thi từ xa duy nhất có thể quản lý các yêu cầu đa dạng của bất kỳ số lượng máy chủ nào.
Language Agnostic - Các tệp cấu hình trạng thái muối, công cụ tạo khuôn mẫu hoặc loại tệp hỗ trợ bất kỳ loại ngôn ngữ nào.
Lợi ích của SaltStack
Đơn giản cũng như một hệ thống giàu tính năng, Salt cung cấp nhiều lợi ích và chúng có thể được tóm tắt như sau:
Robust - Salt là khung quản lý cấu hình mạnh mẽ và mạnh mẽ và hoạt động trên hàng chục nghìn hệ thống.
Authentication - Salt quản lý các cặp khóa SSH đơn giản để xác thực.
Secure - Salt quản lý dữ liệu an toàn bằng giao thức được mã hóa.
Fast - Salt là bus truyền thông rất nhanh, nhẹ để cung cấp nền tảng cho một công cụ thực thi từ xa.
Virtual Machine Automation - Khả năng của Bộ điều khiển đám mây Salt Virt được sử dụng để tự động hóa.
Infrastructure as data, not code - Salt cung cấp một khung triển khai đơn giản, quản lý cấu hình theo mô hình và thực thi lệnh.
Giới thiệu về ZeroMQ
Salt dựa trên ZeroMQthư viện và nó là một thư viện mạng có thể nhúng. Nó nhẹ và một thư viện nhắn tin nhanh. Việc triển khai cơ bản là trongC/C++ và triển khai bản địa cho một số ngôn ngữ bao gồm Java và .Net có sẵn.
ZeroMQ là một xử lý tin nhắn ngang hàng không có người môi giới. ZeroMQ cho phép bạn thiết kế một hệ thống liên lạc phức tạp một cách dễ dàng.
ZeroMQ đi kèm với năm mẫu cơ bản sau:
Synchronous Request/Response - Được sử dụng để gửi yêu cầu và nhận trả lời tiếp theo cho mỗi yêu cầu được gửi.
Asynchronous Request/Response- Người yêu cầu bắt đầu cuộc trò chuyện bằng cách gửi tin nhắn Yêu cầu và chờ tin nhắn Phản hồi. Nhà cung cấp đợi các tin nhắn Yêu cầu đến và trả lời bằng các tin nhắn Phản hồi.
Publish/Subscribe - Được sử dụng để phân phối dữ liệu từ một quy trình (ví dụ nhà xuất bản) cho nhiều người nhận (ví dụ người đăng ký).
Push/Pull - Được sử dụng để phân phối dữ liệu đến các nút được kết nối.
Exclusive Pair - Được sử dụng để kết nối hai đồng nghiệp với nhau, tạo thành một cặp.
ZeroMQ là một công cụ mạng rất linh hoạt để trao đổi tin nhắn giữa các cụm, đám mây và các môi trường đa hệ thống khác. ZeroMQ làdefault transport library được trình bày trong SaltStack.
Kiến trúc của SaltStack được thiết kế để hoạt động với bất kỳ số lượng máy chủ nào, từ hệ thống mạng cục bộ đến các triển khai khác trên các trung tâm dữ liệu khác nhau. Kiến trúc là một mô hình máy chủ / máy khách đơn giản với chức năng cần thiết được tích hợp trong một bộ daemon duy nhất.
Hãy xem hình minh họa sau đây. Nó hiển thị các thành phần khác nhau của kiến trúc SaltStack.
SaltMaster- SaltMaster là daemon chính. SaltMaster được sử dụng để gửi các lệnh và cấu hình đến các nô lệ Salt. Một cái chính duy nhất có thể quản lý nhiều cái.
SaltMinions- SaltMinion là daemon nô lệ. Một minion Salt nhận lệnh và cấu hình từ SaltMaster.
Execution- Mô-đun và lệnh Adhoc được thực thi từ dòng lệnh chống lại một hoặc nhiều tay sai. Nó thực hiện Giám sát thời gian thực.
Formulas- Công thức được viết sẵn Salt States. Chúng có kết thúc mở như chính Salt States và có thể được sử dụng cho các tác vụ như cài đặt gói, định cấu hình và khởi động dịch vụ, thiết lập người dùng hoặc quyền và nhiều tác vụ thông thường khác.
Grains- Grains là một giao diện cung cấp thông tin cụ thể cho một minion. Thông tin có sẵn thông qua giao diện hạt là tĩnh. Các loại ngũ cốc được tải khi lính Salt bắt đầu. Điều này có nghĩa là thông tin trong ngũ cốc là không thay đổi. Do đó, thông tin về hạt có thể là về hạt nhân đang chạy hoặc hệ điều hành. Nó không phân biệt chữ hoa chữ thường.
Pillar- Trụ cột là một giao diện tạo và lưu trữ dữ liệu có độ nhạy cao dành riêng cho một tay sai cụ thể, chẳng hạn như khóa mật mã và mật khẩu. Nó lưu trữ dữ liệu trong một cặp khóa / giá trị và dữ liệu được quản lý theo cách tương tự như Salt State Tree.
Top File - Khớp các trạng thái Salt và dữ liệu trụ cột với lính Salt.
Runners - Nó là một mô-đun nằm bên trong SaltMaster và thực hiện các tác vụ như trạng thái công việc, trạng thái kết nối, đọc dữ liệu từ các API bên ngoài, truy vấn các minion muối được kết nối và hơn thế nữa.
Returners - Trả dữ liệu từ Salt minion sang hệ thống khác.
Reactor - Nó chịu trách nhiệm kích hoạt các phản ứng khi các sự kiện xảy ra trong môi trường SaltStack của bạn.
SaltCloud - Salt Cloud cung cấp một giao diện mạnh mẽ để tương tác với các máy chủ đám mây.
SaltSSH - Chạy lệnh Salt qua SSH trên hệ thống mà không cần sử dụng Salt minion.
Trong chương tiếp theo, chúng ta sẽ tìm hiểu chi tiết về các đối thủ cạnh tranh khác nhau của SaltStack và các tính năng của chúng.
Salt, Puppet, Chef và Ansible là những công cụ điều phối và quản lý cấu hình hàng đầu, mỗi công cụ đều có một con đường khác nhau để tự động hóa máy chủ. Chúng được xây dựng để giúp bạn dễ dàng cấu hình và bảo trì hàng chục, hàng trăm hoặc thậm chí hàng nghìn máy chủ.
Hãy để chúng tôi hiểu cách SaltStack cạnh tranh chủ yếu với Puppet, Chef và Ansible.
Nền tảng và hỗ trợ
Sau đây là danh sách tất cả các nền tảng hỗ trợ SaltStack và các đối thủ cạnh tranh của nó.
SaltStack - Phần mềm SaltStack chạy trên và quản lý nhiều phiên bản Linux, Windows, Mac OS X và UNIX.
Puppet - Red Hat Enterprise Linux, CentOS, Oracle Linux, Scientific Linux, SUSE Linux Enterprise Server và Ubuntu.
Chef - Chef được hỗ trợ trên nhiều nền tảng như AIX, RHEL / CentOS, FreeBSD, OS X, Solaris, Microsoft Windows và Ubuntu.
Ansible - Phân phối Fedora của Linux, CentOS và Scientific Linux thông qua Gói bổ sung cho Linux Doanh nghiệp (EPEL) cũng như cho các hệ điều hành khác.
Ngôn ngữ gốc
SaltStack - Python
Puppet - Ruby
Chef - Ruby và CLI của nó sử dụng DSL dựa trên ruby
Ansible - Python
Ngôn ngữ được hỗ trợ
SaltStack - Mọi ngôn ngữ
Puppet - Ruby
Chef - Ruby và CLI của nó sử dụng DSL dựa trên ruby
Ansible - Mọi ngôn ngữ
Giao diện người dùng web
SaltStack - Giao diện người dùng Web cung cấp chế độ xem các công việc đang chạy, trạng thái tay sai và nhật ký sự kiện.
Puppet - Giao diện người dùng Web xử lý báo cáo, kiểm kê và quản lý nút thời gian thực.
Chef - Giao diện người dùng Web cho phép bạn tìm kiếm và kiểm kê các nút, xem hoạt động của nút và gán Sách nấu ăn, vai trò và các nút.
Ansible - Giao diện người dùng Web cho phép bạn định cấu hình người dùng, nhóm và khoảng không quảng cáo và áp dụng Playbook vào khoảng không quảng cáo.
Công cụ quản lý
SaltStack - SaltStack Enterprise được định vị là công cụ chính để quản lý điều phối các hoạt động của đám mây và CNTT, cũng như DevOps.
Puppet- Con rối có hai loại, con rối Enterprise và con rối nguồn mở. Ngoài việc cung cấp các chức năng của Con rối nguồn mở, Puppet Enterprise cũng cung cấp các công cụ GUI, API và dòng lệnh để quản lý nút.
Chef - CFEngine là công cụ quản lý cấu hình.
Ansible - Ansible 1.3 là công cụ chính để quản lý.
Hiệu suất
SaltStack- Salt được thiết kế cho hiệu suất cao và khả năng mở rộng. Hệ thống liên lạc của Salt thiết lập một đường ống dữ liệu liên tục giữa Salt master và tay sai bằng cách sử dụng ZeroMQ.
Puppet - Bảo mật cũng như hiệu suất cao và không cần tác nhân.
Chef- Cuộc đấu tranh rõ ràng nhất cho Chef Server là tìm kiếm; Tìm kiếm chậm và không được khách hàng yêu cầu đồng thời.
Ansible - Bảo mật, hiệu suất cao và không cần tác nhân.
Giá cả và giá trị
SaltStack- Phiên bản mã nguồn mở miễn phí. SaltStack Enterprise có giá $ 150 mỗi máy mỗi năm.
Puppet- Phiên bản mã nguồn mở miễn phí. Puppet Enterprise có giá 100 đô la một máy mỗi năm.
Chef- Phiên bản mã nguồn mở miễn phí; Enterprise Chef miễn phí cho 5 máy, $ 120 mỗi tháng cho 20 máy, $ 300 mỗi tháng cho 50 máy.
Ansible- Phiên bản mã nguồn mở miễn phí; Ansible miễn phí cho 10 máy, sau đó $ 100 hoặc $ 250 mỗi máy mỗi năm tùy thuộc vào sự hỗ trợ bạn cần.
Sử dụng
SaltStack- SaltStack được Cisco và Rackspace sử dụng. Nó có thể tích hợp với bất kỳ nền tảng dựa trên đám mây nào.
Puppet - Puppet được sử dụng bởi Zynga, Twitter, New York Stock Exchange, PayPal, Disney, Google, v.v.
Chef - Chef có thể tích hợp với các nền tảng dựa trên đám mây như Internap, Amazon EC2, Google Cloud Platform, OpenStack, Microsoft Azure và Rackspace.
Ansible - Ansible có thể triển khai tới các môi trường ảo hóa, môi trường đám mây bao gồm Amazon Web Services, Cloud Stack, DigitalOcean và Google Cloud Platform, v.v.
Trước khi chuyển sang cài đặt, bạn cần có các yêu cầu sau:
Máy chủ Linux (máy chủ Ubuntu mới nhất).
sudo hoặc là root access đến máy chủ này.
Cài đặt tất cả các bản cập nhật bằng lệnh sau:
sudo apt-get update
Cài đặt SaltMaster
Cài đặt SaltMaster từ kho lưu trữ bằng lệnh apt-get sau.
sudo apt-get install salt-master
Cài đặt Salt Minion
Cài đặt Salt minion từ kho lưu trữ bằng lệnh apt-get sau.
sudo apt-get install salt-minion
Cài đặt hợp tác muối
Cài đặt hợp tác Salt từ kho lưu trữ bằng lệnh apt-get sau.
sudo apt-get install salt-syndic
Cấu hình chính
Cấu hình muối rất đơn giản. Cấu hình mặc định cho chính sẽ hoạt động cho hầu hết các cài đặt. Các tệp cấu hình được cài đặt trong thư mục '/ etc / salt' và được đặt tên theo các thành phần tương ứng của chúng, chẳng hạn như - / etc / salt / master và / etc / salt / minion.
#interface: 0.0.0.0
interface: <local ip address>
Sau khi cập nhật tệp cấu hình, hãy khởi động lại Salt master bằng lệnh sau.
sudo service salt-master restart
Cấu hình Minion
Cấu hình một Salt Minion rất đơn giản. Theo mặc định, Salt Minion sẽ cố gắng kết nối với tên DNS “salt”; nếu Minion có thể phân giải tên đó một cách chính xác thì không cần cấu hình. Xác định lại chỉ thị "chính" trong tệp cấu hình minion, thường là/etc/salt/minion, như được hiển thị trong mã bên dưới -
#master: salt
master: <local ip address>
Sau khi cập nhật tệp cấu hình, hãy khởi động lại Salt minion bằng lệnh bên dưới.
sudo service salt-minion restart
Quản lý khóa
Sử dụng muối AES Encryptioncho tất cả các giao tiếp giữa Master và Minion. Giao tiếp giữa Master và Minion được xác thực thông qua các khóa đáng tin cậy và được chấp nhận.
salt-key -L
Nó sẽ tạo ra những thứ sau output -
Accepted Keys:
Denied Keys:
Unaccepted Keys:
<local system name>
Rejected Keys:
Chấp nhận tất cả các khóa bằng cách đưa ra lệnh dưới đây.
sudo salt-key -A
Nó sẽ tạo ra những thứ sau output -
The following keys are going to be accepted:
Unaccepted Keys:
<local system name>
Proceed? [n/Y] y
Key for minion bala-Inspiron-N4010 accepted.
Bây giờ một lần nữa phát hành salt key listing chỉ huy,
salt-key -L
Nó sẽ tạo ra những thứ sau output -
Accepted Keys:
<local system name>
Denied Keys:
Unaccepted Keys:
Rejected Keys:
Gửi lệnh
Giao tiếp giữa Master và Minion phải được xác minh bằng cách chạy lệnh test.ping.
sudo salt '*' test.ping
Nó sẽ tạo ra những thứ sau output -
<local system name>
True
Ở đây, '*' đề cập đến tất cả các tay sai. Vì chúng tôi chỉ có một minion - test.ping, nó thực thiping lệnh và trả về việc ping có thành công hay không.
Trong chương này, chúng ta sẽ tạo một môi trường SaltStack đơn giản, một muối chính và hai muối minion. Môi trường này sẽ giúp chúng ta tìm hiểu khái niệm muối trong các chương sắp tới.
Chúng ta hãy tuân thủ các bước sau để tạo môi trường SaltStack.
Cài đặt Môi trường VirtualBox
VirtualBox là một ứng dụng ảo hóa đa nền tảng. VirtualBox cho phép bạn chạy nhiều hệ điều hành cùng một lúc. VirtualBox chạy trên Windows, Linux, Macintosh và Solaris. Nó lưu trữ và hỗ trợ một số lượng lớnGuest Operating Systems.
Bạn có thể tải xuống và cài đặt VirtualBox bằng cách truy cập liên kết sau: https://www.virtualbox.org/wiki/Downloads
Chúng tôi sẽ tạo ba máy ảo và chạy nó bằng VirtualBox.
Cài đặt Vagrant
Vagrant cung cấp môi trường làm việc dễ cấu hình, có thể tái tạo và di động.
Bạn có thể tải xuống và cài đặt Vagrant bằng cách truy cập liên kết sau: https://www.vagrantup.com
Sau khi cài đặt thành công Vagrant, bạn cần phải cấu hình nó. Tạo một tệp duy nhất có tên làVagrantfile trong một thư mục và mô tả loại máy và đặc tính của nó.
Run Vagrant - Để chạy Vagrant, hãy sử dụng lệnh sau:
vagrant up
Sau khi bạn chạy lang thang, Vagrant tạo và khởi động các máy đó, được định nghĩa trong Vagrantfilesử dụng VirtualBox trong nền. Những máy này sẽ chạy cho đến khi bạn đóng chúng lại.
Stop Vagrant - Để dừng tất cả các máy đang chạy trong VirtualBox, hãy nhập lệnh sau:
vagrant halt
Tải xuống Môi trường Demo
SaltStack cung cấp một môi trường demo đơn giản dưới dạng thiết lập Vagrant và nó được lưu trữ trong github. Hãy để chúng tôi tải xuống thiết lập bằng lệnh sau:
cd /cd/to/path
git clone https://github.com/UtahDave/salt-vagrant-demo
Bắt đầu Môi trường
Bây giờ, hãy bắt đầu môi trường demo bằng lệnh sau:
cd /cd/to/path/salt-vagrant-demo
vagrant up
Sau lệnh này, bạn sẽ thấy phản hồi sau:
result
Bây giờ, ba máy chủ đang chạy, một máy chủ đã được định cấu hình và hai máy chủ có cấu hình muối minion.
Thạc sĩ Run Salt
Đăng nhập vào Salt master bằng lệnh sau:
vagrant ssh master
Bây giờ, hãy chuyển đến người dùng root bằng lệnh bên dưới:
sudo su
Bây giờ chúng ta đã kết nối thành công với Salt master.
Bây giờ chúng ta hãy xem qua một số lệnh cơ bản trong SaltStack.
Liệt kê tất cả các Chìa khóa
Lệnh sau đây là xác minh các kết nối Salt minion và xem kết nối được chấp nhận, bị từ chối hay đang chờ xử lý.
salt-key —list-all
Nó sẽ tạo ra những thứ sau output -
Accepted Keys:
minion1
minion2
Denied Keys:
Unaccepted Keys:
Rejected Keys:
Xác minh Minions Salt
Bây giờ, chúng tôi đã chấp nhận tất cả các khóa, bạn có thể gửi lệnh từ Salt master để kiểm tra xem các tay sai của Salt có đang nghe hay không,
salt '*' test.ping
Nó sẽ tạo ra những thứ sau output -
minion1:
True
minion2:
True
Từ kết quả trên, liệt kê ra lính 1 và lính 2, có nghĩa là lính đang lắng nghe đúng cách, nếu không lúc này lính có thể phản ứng đúng.
Hệ thống kiểm soát truy cập cung cấp các tùy chọn cho người dùng trong một nhóm để thực thi một tác vụ với quyền. Hệ thống kiểm soát truy cập Salt được sử dụng để định cấu hình quyền truy cập vào các giao diện kiểm soát phi quản trị. Bạn có thể áp dụng quy trình này cho tất cả các hệ thống. Điều khiển này giúp người dùng không phải là quản trị viên thực hiện các lệnh Salt.
Các giao diện muối thuộc ba loại sau:
- Hệ thống ACL của nhà xuất bản
- Hệ thống xác thực bên ngoài
- Hệ thống ngang hàng
Hãy cùng chúng tôi tìm hiểu chi tiết từng giao diện này.
Hệ thống ACL của nhà xuất bản
Hệ thống Publisher ACL cho phép người dùng truy cập không phải root để thực thi các lệnh Salt trên các tay sai từ chủ. Hệ thống ACL của nhà xuất bản được định cấu hình trong tệp cấu hình chính thông quapublisher_acltùy chọn cấu hình. Nó được định nghĩa như sau:
publisher_acl:
user1:
- .*
user2:
- web*:
- test.*
- pkg.*
Đây,
user1 được phép thực hiện bất cứ điều gì.
user2 được phép sử dụng test và pkg, nhưng chỉ trên tay sai “web *”.
Hệ thống xác thực bên ngoài
Các external auth system được sử dụng để cung cấp quyền truy cập để thực hiện các lệnh muối trên các tay sai cụ thể thông qua hệ thống ủy quyền bên ngoài như PAM, LDAP, v.v. Tệp cấu hình này được xác định trong tệp chính như được mô tả bên dưới.
external_auth:
pam:
user1:
- 'web*':
- test.*
- network.*
user2:
- .*
Đây,
user1 được phép thực thi các chức năng trong test và network modules trên những tay sai phù hợp với web* Mục tiêu.
user2 được phép thực hiện tất cả các chức năng.
Kích hoạt hệ thống xác thực bên ngoài trong Command
Máy chủ muối cung cấp tùy chọn '–a' để kích hoạt xác thực bên ngoài.
salt -a pam web\* test.ping
Đây, -a pamtùy chọn được sử dụng để kích hoạt xác thực bên ngoài PAM. Salt Server sẽ hỏi chi tiết xác thực bất cứ khi nào chúng tôi thực hiện lệnh. Để hạn chế Salt Server chỉ hỏi chi tiết xác thực lần đầu tiên, chúng tôi có thể sử dụng tùy chọn T. Điều này-T option lưu vào bộ nhớ cache các chi tiết xác thực trong 12 giờ tới (cài đặt mặc định) và sử dụng nó để xác thực người dùng.
salt -T -a pam web\* test.ping
Hệ thống ngang hàng
Salt minions có thể chuyển các lệnh bằng giao diện ngang hàng. Giao diện ngang hàng được định cấu hình thông qua tệp cấu hình chính để cho phép các tay sai gửi lệnh từ chủ bằng cách sử dụngpeer phần cấu hình hoặc để cho phép tay sai thực thi người chạy từ chủ bằng cách sử dụng peer_run cấu hình.
Hãy để chúng tôi hiểu chi tiết cả hai cấu hình này.
Cấu hình ngang hàng
Cấu hình đơn giản được xác định trong tệp chính như sau:
peer:
.*:
- .*
Ở đây, Nó cho phép giao tiếp cho tất cả các tay sai, nhưng nó chỉ được khuyến nghị cho những môi trường rất an toàn.
Để gán các minion cho các ID cụ thể, cấu hình cần được xác định như hình dưới đây: peer -
.*domain.com:
- test.*
Cấu hình peer_run
Cấu hình này là để cho phép các tay sai thực thi người chạy từ tệp chính bằng cách sử dụng tùy chọn peer_run trên tệp chính. Ví dụ sau đây là cho phép truy cập vào tất cả các tay sai và tất cả những người chạy.
peer_run:
.*:
- .*
Để gán tay sai cho một ID cụ thể, cấu hình cần được xác định như dưới đây:
peer_run:
.*domain.com:
- test.*
Cách thực hiện lệnh
Để thực hiện test.ping trên tất cả các tay sai, sử dụng salt-call lệnh cùng với publish.publish mô-đun.
salt-call publish.publish \* test.ping
Để thực hiện runner, sử dụng lệnh gọi muối cùng với publish.runner mô-đun.
salt-call publish.runner manage.up
Salt có khả năng giao tiếp tốc độ cao với một số lượng lớn các hệ thống. Cách tiếp cận này giúp Salt tạo ra một hệ thống đa nhiệm mạnh mẽ. Salt có thể chạy công việc trên nhiều hệ thống, vì vậy Salt sử dụng kỹ thuật quản lý công việc để quản lý từng công việc đang chạy trên tất cả hệ thống. Chương này giải thích chi tiết về quản lý công việc.
ID công việc là gì?
Salt có thư mục bộ nhớ cache, cachedir. Bên trong này, một thư mục mà các tay sai duy trì được gọi làprocdanh mục. Nó nằm trong thư mục sau / var / cache / salt / proc.
Thư mục proc được sử dụng để duy trì tất cả các tệp. Khi các tệp này được thực thi, chúng sẽ gán với một ID công việc duy nhất. Id công việc này giúp xác định các công việc đang chạy hiện tại trên minion và cho phép các công việc được tra cứu.
Mô-đun SALTUTIL
Salt giới thiệu một mô-đun mới được gọi là quy trình quản lý công việc Saltutil. Mô-đun này chứa các chức năng khác nhau để quản lý công việc. Các chức năng này được sử dụng để quản lý các công việc ở cấp độ tay sai. Các chức năng được mô tả ngắn gọn như sau:
running - Trả về tất cả dữ liệu công việc đang chạy được tìm thấy trong thư mục proc.
find_job - Trả về dữ liệu cụ thể về một công việc nhất định dựa trên id công việc.
signal_job - Cho phép một id công việc nhất định (jid) được gửi một tín hiệu.
term_job - Gửi tín hiệu kết thúc công việc được chỉ định.
kill_job - Gửi tín hiệu kết thúc cho công việc được chỉ định.
Người chạy việc làm
Trình chạy công việc chứa các chức năng giúp xem dữ liệu dễ dàng và sạch sẽ hơn. Nó có các chức năng khác nhau. Hãy để chúng tôi thảo luận chi tiết về từng chức năng này.
Chức năng ACTIVE
Chức năng Active được sử dụng để xác định công việc nào vẫn đang chạy và kiểm tra hệ thống nào đã hoàn thành công việc và hệ thống nào vẫn đang được chờ đợi. Nó được thực thi bằng lệnh sau,
salt-run jobs.active
Hàm LOOKUP_JID
Người chạy lookup_jid sẽ hiển thị dữ liệu cho công việc đang tìm kiếm hiện tại. Các công việc này được cấu hình thông quakeep_jobstrong cấu hình chính. Nó được thực thi bằng lệnh sau.
salt-run jobs.lookup_jid <job id number>
Hàm LIST_JOBS
Hàm List_jobs được sử dụng để liệt kê dữ liệu công việc cho các công việc. Nó được thể hiện bằng lệnh sau:
salt-run jobs.list_jobs
Lên kế hoạch việc làm
Hệ thống lịch trình cho thấy việc thực thi bất kỳ chức năng thực thi nào trên tay sai hoặc bất kỳ người chạy nào trên chủ.
Nó được thực hiện bằng các phương pháp sau:
Schedule - Tùy chọn lịch trình trong chủ hoặc tay sai config các tập tin.
Minion pillar data - Nó làm mới dữ liệu trụ cột minion bằng cách sử dụng lệnh saltutil.refresh_pillar.
Trạng thái lịch trình hoặc mô-đun lịch trình.
Các trạng thái muối được thực hiện trên minion. Bạn có thể chuyển các đối số vị trí và cung cấpYAML dict của các đối số được đặt tên trong config file như hình bên dưới.
schedule:
job1:
function: saltstate.sls
seconds: 3600
args:
- httpd
kwargs:
test: True
Đây, job1 sẽ thực hiện chức năng saltstate.sls với các đối số được chỉ định, httpdcho mỗi giờ. Cáctest: True là đối số bổ sung cho httpd lệnh được xác định trong saltstate.sls.
Máy chủ tệp Salt là máy chủ ZeroMQ không trạng thái. Nó được tích hợp sẵn trong Salt master. Máy chủ tệp Salt được sử dụng để phân phối tệp từ chính đến tay sai. Nó chứa các mô-đun khác nhau. Hãy để chúng tôi hiểu máy chủ tệp muối, cấu hình của nó, các mô-đun liên quan đến máy chủ tệp muối, cách truy cập máy chủ tệp muối trong python, v.v., trong chương này.
Phần phụ trợ của Máy chủ Tệp
Phần phụ trợ của máy chủ tệp cho phép máy chủ tệp Salt hoạt động như một giao diện trong suốt với máy chủ tệp khác như hệ thống tệp cục bộ, hệ thống kiểm soát phiên bản Git, v.v.
Phần phụ trợ của máy chủ tệp Git có thể được kích hoạt bằng cách sử dụng cấu hình sau trong tệp chính.
fileserver_backend:
- git
Để kích hoạt nhiều hệ thống tệp phụ trợ, chúng ta có thể sử dụng cấu hình sau.
fileserver_backend:
- roots
- git
Chúng tôi cũng có thể chỉ định tùy chọn bổ sung cho một máy chủ phụ trợ khác bằng cách sử dụng phần cụ thể của máy chủ phụ trợ tương ứng.
Hệ thống tệp cục bộ
Để sử dụng hệ thống này, chúng tôi phải sử dụng mã sau.
file_roots:
base:
- /srv/salt/prod
Hệ thống tệp Git
Để sử dụng hệ thống này, chúng tôi phải sử dụng mã sau.
gitfs_remotes:
- https://github.com/sample/sample1.git
Yêu cầu tệp
Salt có tùy chọn yêu cầu tệp cho các môi trường cụ thể.
salt://path/to/file?saltenv = base
Ở đây, môi trường được xác định bằng cách sử dụng tùy chọn root.
Cấu hình máy chủ tệp
Các tệp Salt có thể được phân bổ trong nhiều thư mục gốc và được truy cập bằng cách chỉ định cả đường dẫn tệp và môi trường để tìm kiếm. Các môi trường riêng lẻ có thể trải dài trên nhiều gốc thư mục.
Môi trường
Môi trường mặc định là cơ sở. Môi trường này được xác định và được sử dụng để tải xuống tệp khi không có môi trường nào khác được chỉ định.
file_roots:
base:
- /srv/salt/base
Bạn cũng có thể sử dụng nhiều môi trường như được hiển thị trong mã bên dưới.
file_roots:
base:
- /srv/salt/base
dev:
- /srv/salt/dev
- /srv/salt/base
Mô-đun CP
Mô-đun CP là mô-đun chính để thao tác Salt file server. Cácsalt-cp lệnh cũng có thể được sử dụng để phân phối các tệp được trình bày bởi máy chủ tệp Salt.
CÓ ĐƯỢC FILE
Các cp.get_filecó thể sử dụng chức năng trên minion để tải xuống tệp từ chính. Nó được định nghĩa như thể hiện trong khối mã sau.
salt '*' cp.get_file salt://vimrc /etc/vimrc
Lệnh trên hướng dẫn tất cả các tay sai của Salt tải xuống vimrc tập tin và sao chép nó vào /etc/vimrc.
Bật mẫu
Bạn có thể bật tùy chọn mẫu trong get_file như sau:
salt '*' cp.get_file "salt://vimrc" /etc/vimrc template = jinja
Áp dụng nén
Để sử dụng tính năng nén, hãy sử dụng gzipđối số được đặt tên. Các giá trị hợp lệ là các số nguyên từ 1 đến 9, trong đó 1 là độ nén tối thiểu và 9 là giá trị lớn nhất.
Lệnh được định nghĩa như sau:
salt '*' cp.get_file salt://vimrc /etc/vimrc gzip = 5
GET_DIR
Các cp.get_dirchức năng có thể được sử dụng trên minion để tải xuống toàn bộ thư mục từ chính. Nó được định nghĩa trong khối mã sau.
salt '*' cp.get_dir salt://etc/mysql /etc
Các cp.get_dirhỗ trợ kết xuất mẫu và đối số nén gzip. Nếu bạn muốn, bạn cũng có thể chỉ định.
Mô-đun FILECLIENT
Salt cung cấp một mô-đun python giúp truy cập vào máy chủ tệp muối. Cácsalt/fileclient.py mô-đun được sử dụng để thiết lập liên lạc từ minion đến master.
Mã mẫu để lấy tệp như sau:
import salt.minion
import salt.fileclient
def get_file(path, dest, saltenv = ‘base'):
client = salt.fileclient.get_file_client(__opts__)
return client.get_file(path, dest, true, saltenv)
Đây,
tùy chọn khả dụng khi mô-đun được chạy trong môi trường muối. Nếu không, chúng tôi nên cung cấp đường dẫn cấu hình -/etc/salt/minion.
path đề cập đến đường dẫn của tệp nguồn trong máy chủ tệp muối.
dest đề cập đến đường dẫn đích của tệp.
saltenv đề cập đến môi trường
Trong chương tiếp theo, chúng ta sẽ hiểu cách sử dụng Git làm máy chủ tệp.
Gitlà một hệ thống kiểm soát phiên bản phân tán mã nguồn mở. Nó có thể được sử dụng để theo dõi các thay đổi trong bất kỳ tệp nào. Salt gửi tệp từ kho lưu trữ Git bằng máy chủ tệp Git. Bạn có thể cấu hình Git đểfileserver_backend tùy chọn danh sách và nếu bạn cần định cấu hình một hoặc nhiều kho lưu trữ, bạn có thể làm như vậy bằng cách sử dụng gitfs_remotes Lựa chọn.
Chương này giải thích về cách cài đặt và cấu hình máy chủ tệp Git. Trước khi tiến tới cài đặt, bạn phải có các điều kiện tiên quyết sau.
Điều kiện tiên quyết của Máy chủ Salt để sử dụng Git
Yêu cầu tối thiểu để máy chủ muối sử dụng Git làm máy chủ tệp như sau:
- pygit2
- Dulwich
Pygit2 và Dulwich được định cấu hình bằng cách sử dụng gitfs_providertham số trong tệp cấu hình chính. Nếugitfs_provider không được định cấu hình trong tệp chính thì Salt sẽ thích pygit2 hơn, nếu phiên bản phù hợp có sẵn, tiếp theo là GitPython và Dulwich.
Cài đặt pygit2
Các lệnh sau được sử dụng để cài đặt pygit2 trong hệ thống dựa trên Fedora và Ubuntu:
Fedora-based system
yum install python-pygit2
Ubuntu-based system
apt-get install python-pygit2
Ở đây, phiên bản pygit2 được hỗ trợ tối thiểu là 0.20.3.
Cài đặt GitPYTHON
GitPython có thể được cài đặt dễ dàng trên máy chủ bằng cách sử dụng yum / apt command như hình bên dưới.
Fedora-based system
yum install GitPython
Ubuntu-based system
apt-get install python-git
Cài đặt DULWICH
Dulwich có thể dễ dàng cài đặt trên máy chủ bằng lệnh yum.
Fedora-based system
yum install python-dulwich
Ubuntu-based system
apt-get install python-dulwich
Bây giờ, chúng tôi đã cài đặt tất cả các phụ thuộc cho máy chủ tệp Git. Bây giờ chúng ta hãy định cấu hình máy chủ tệp Git này bằng cách sử dụngfileserver_backend phần trong master config tập tin.
Cấu hình phụ trợ
Để sử dụng máy chủ tệp Git, bạn cần thêm Git vào danh sách fileserver_backend trong tệp cấu hình chính. Nó được mô tả như sau:
fileserver_backend:
- git
Hãy để chúng tôi hiểu thêm về cách định cấu hình máy chủ tệp Git trong cấu hình từ xa.
Cấu hình gitfs_remotes
Bạn có thể chỉ định bất kỳ một hoặc tất cả các URL như git: //, https: //, file: // hoặc ssh: // cho cấu hình gitfs_remotes trong tệp chính. Điều này được sử dụng để tìm kiếm các tệp được yêu cầu.
Đặc tả URL https đơn giản được xác định bên dưới.
gitfs_remotes:
- https://github.com
Các ssh cấu hình có thể được thực hiện như hình dưới đây.
gitfs_remotes:
- [email protected]:user1/sample.git
- ssh://[email protected]/path/to/sample.git
Bây giờ, chúng tôi đã định cấu hình máy chủ tệp Git bằng hai tùy chọn fileserver_backend và gitfs_remotes.
Khởi động lại Master
Sau khi thực hiện tất cả các thay đổi trong tệp chính, bây giờ hãy khởi động lại tệp chính để tải tất cả các cấu hình trong máy chủ tệp Git.
Nhiều cấu hình điều khiển từ xa
Lệnh sau được sử dụng cho nhiều cấu hình trong gitfs_remotes trong tệp chính.
gitfs_remotes:
- git://github.com/sample/sample1.git
- https://github.com/sample/sample2.git
- file:///root/user/sample
Đây, kho sample1.git, sample2.git, và sample.doc có thể có các tệp sau đây.
sample1.git:
top.sls
sample2.git
edit/vimrc
sample.doc
edit/vimrc
Các MinionFSlà một máy chủ tập tin đặc biệt do Salt cung cấp cho các tay sai để trao đổi các tập tin giữa chúng. Các tệp được cung cấp bởi MinionFS là các tệp được chia sẻ bởi các tay sai. Để chia sẻ các tệp, Minion phải làm theo các bước dưới đây.
Nguồn minion phải đẩy tệp lên cấp chủ muối bằng cách sử dụng cp.push chức năng.
Khi các tệp được đẩy bởi minion nguồn, các tệp đã triển khai có thể được truy cập bởi bất kỳ minion nào khác bằng máy chủ tệp MinionFS.
Bật đẩy
Theo mặc định, việc đẩy các tệp của tay sai lên tệp chính bị tắt. Để chấp nhận các tệp từ tay sai, cái chủ cần có tùy chọn “file_recv” trong tệp cấu hình và giá trị của nó phải được đặt thànhTrue. Theo mặc định, giá trị nếu “file_recv” làfalse.
file_recv: True
Khi tùy chọn được bật, hãy khởi động lại dịch vụ chính.
Đẩy tệp
Minions có thể đẩy các tập tin lên master. Nó được thực hiện bởicp.pushchức năng. Hàm cp.push này cung cấp một cơ chế dễ dàng để đẩy các tệp bằng minion bằng cách sử dụng minion id.
salt 'minion-id' cp.push /path/to/the/file
Ở đây, minion-id được sử dụng để xác định minion nào đang đẩy tệp. Lệnh này sẽ lưu trữ tệp trong một thư mục con có tênminions phía dưới cái master's cachedir. Thông thường, đường dẫn là - / var / cache / salt / master / minions.
Đối với tay sai, m1 và tệp - /var/log/mylog.txt, tệp sẽ được lưu trữ trong - /var/cache/salt/master/minion/m1/var/log/mylog.txt.
Bật MinionFS
Để bật MinionFS, chỉ cần thêm minion trong cài đặt phụ trợ của máy chủ tệp như được hiển thị trong khối mã sau.
fileserver_backend:
- roots
- minion
Khi MinionFS được kích hoạt, các tệp được đẩy minion sẽ có sẵn dưới dạng:
salt://<minion-id>/path/to/pushed/file
Đối với tay sai, m1 và tệp được đẩy - /var/log/mylog.txt, tệp được đẩy sẽ được phân phát từ muối: //m1/var/log/mylog.txt.
MinionFS này có thể được gắn trong một thư mục đặc biệt bằng cách sử dụng cấu hình sau. Nó sẽ tách các tệp minionFS khỏi các tệp khác và sẽ giúp tổ chức các tệp minion.
minionfs_mountpoint: salt://minionfs
Đối với cấu hình trên, tệp sẽ có sẵn trong minionfs thư mục as - salt: //minionfs/m1/var/log/mylog.txt
Tùy chọn nâng cao MinionFS
MinionFS cũng cung cấp một tùy chọn để bật / tắt tính khả dụng của các tệp được đẩy từ một minion nhất định. Các tùy chọn làminionfs_whitelist, để kích hoạt tay sai và minionfs_blacklist, để vô hiệu hóa tay sai.
minionfs_whitelist:
- webserver
- develop*
- ‘mail\d+.mysite.com'
minionfs_blacklist:
- testing
Trong cấu hình trên, tất cả các tay sai ngoại trừ testing được phép chia sẻ tệp bằng minionFS.
Webserver1
Minion có id khớp với biểu thức chính quy sẽ phát triển *
Minion có id khớp với biểu thức chính quy mail\d+.mysite.com.
Testing
Trong chương tiếp theo, chúng ta sẽ học cách sử dụng Cron với Salt.
Muối có thể được sử dụng cùng với Cronứng dụng. Sử dụng cả hai ứng dụng cùng nhau mang lại cơ hội tuyệt vời để tự động hóa Salt. Trong khi Salt cung cấp một tùy chọn để thực hiện các lệnh từ xa, Cron cho phép nó chạy theo cách được lên lịch trước hoặc tự động. Chúng ta hãy cùng nhau tìm hiểu cách sử dụng Cron và Salt trong chương này.
Cron là gì?
Cron là ứng dụng rất hữu ích trong Môi trường Linux. Nó cho phép đặt trước một lệnh hoặc tập lệnh để chạy trong một ngày và giờ cụ thể. Nó cũng cho phép chạy một ứng dụng trong một khoảng thời gian đều đặn, chẳng hạn như hàng ngày, hàng tuần hoặc mỗi ngày đầu tiên của tháng.
Cron bắt đầu khi hệ thống khởi động và kiểm tra /etc/crontabtệp để biết chi tiết cấu hình. / Etc / crontab có mọi ứng dụng và lịch trình của nó trong một dòng riêng biệt như hình dưới đây.
15 * * * * root echo "This command runs at 15 minutes past every hour"
15 10 * * * root echo "This command is run daily at 10:15 am"
Mỗi dòng có bảy điểm nhập sau đây, được phân tách bằng dấu cách và chúng như sau:
minute - phút của giờ và nằm trong khoảng từ '0' đến '59'.
hour - giờ và được chỉ định trong đồng hồ 24 giờ.
day_of_month- Day of the Month và là từ 1 đến 31. Ví dụ, 10 ngày mỗi tháng là 10.
month - Một tháng được chỉ định và được chỉ định bằng số (0-12), hoặc dưới dạng tên của tháng (ví dụ: tháng 5).
day_of_week - Ngày trong tuần được xác định bằng số (0-7) hoặc như tên của ngày (ví dụ: Mặt trời).
user - Tài khoản người dùng mà lệnh chạy dưới đó.
cmd - Lệnh thực tế và các đối số của nó.
Ở đây, * thay thế, nếu không có gì được chỉ định.
Người gọi muối (gọi muối)
Salt cung cấp CLI (Giao diện dòng lệnh), salt-callđể chạy các mô-đun trong chính hệ thống minion cục bộ thay vì từ máy chủ chính bằng lệnh muối. Lệnh gọi muối CLI hỗ trợ tất cả các tùy chọn được hỗ trợ bởi lệnh muối, nhưng chạy cục bộ.
Ban đầu Salt Caller được thiết kế để hỗ trợ gỡ lỗi, nhưng giờ đây, nó có thể được sử dụng như một ứng dụng độc lập.
salt-call test.ping
Sử dụng cuộc gọi muối trong cron
CLI gọi muối rất hữu ích để lập lịch hoạt động của muối bằng Cron. Ví dụ, để kiểm tra trạng thái của minion hàng ngày vào lúc nửa đêm, chúng ta có thể sử dụng lệnh gọi muối cùng với tùy chọn - state.apply như hình bên dưới.
/etc/crontab
PATH = /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin
0 0 * * * salt-call state.apply
Đây,
Các state.apply function sẽ kiểm tra tệp cấu hình muối cho minion và kiểm tra xem tất cả hành động được xác định cho minion có được cấu hình đúng hay không.
Đặt đường dẫn là một thực hành tốt vì đôi khi lệnh muối có thể không có sẵn trong đường dẫn hệ thống.
Trong chương tiếp theo, chúng ta sẽ tìm hiểu Thực thi từ xa, đây là một khái niệm cốt lõi của Salt.
Một trong những khái niệm cốt lõi của Salt là thực thi từ xa. Salt có thể thực hiện các lệnh trên hàng nghìn hệ thống chỉ trong vài giây. Salt sử dụng lệnh riêng của nó để thực hiện chức năng này. Bây giờ chúng ta hãy hiểu các lệnh Salt khác nhau để thực hiện từ xa trong chương.
Lệnh muối
Lệnh Salt cho phép bậc thầy Salt giao tiếp với một hoặc nhiều Salt minions. Cú pháp cơ bản như sau,
salt '<target>' <module.function> [arguments]
Cú pháp lệnh trên bao gồm ba thành phần chính sau.
target - Nó xác định hệ thống nào được áp dụng bởi lệnh.
module.function- Đó là một mệnh lệnh. Các lệnh bao gồm một mô-đun và chức năng.
arguments - Dữ liệu bổ sung cần thiết cho việc gọi hàm.
Hãy để chúng tôi hiểu chi tiết từng thành phần.
Thành phần Mục tiêu là gì?
Target là một thành phần, cho phép bạn lọc các tay sai (hệ thống được quản lý) để chạy chức năng. Một lệnh đơn giản sử dụng thành phần đích được định nghĩa bên dưới.
salt '*' test.ping
Nó sẽ tạo ra những thứ sau output -
minion2:
True
minion1:
True
Đây, mục tiêu ‘*’đại diện cho tất cả các hệ thống được quản lý. Các 'test'đây là một mô-đun và pinglà một chức năng. Điều này được sử dụng để kiểm tra dịch vụ ping trong hệ thống từ xa. Chúng ta sẽ tìm hiểu về các mô-đun khác nhau và chức năng của nó trong các chương tiếp theo.
Nhắm mục tiêu bằng ID (minion)
Bạn có thể gửi lệnh tới một tay sai cụ thể bằng cách sử dụng idtrong mục tiêu. Thay vì sử dụng'*', bạn có thể thay thế nó bằng cách sử dụng minion id. Nó được định nghĩa dưới đây.
salt 'minion1’ test.ping
Nó sẽ tạo ra những thứ sau output -
minion1:
True
Nhắm mục tiêu sử dụng Cụm từ Thông dụng
Các mục tiêu có thể được lọc theo biểu thức chính quy cụ thể. Nó được định nghĩa dưới đây.
salt -E 'minion[0-9]' test.ping
Nó sẽ tạo ra những thứ sau output -
minion2:
True
minion1:
True
Nhắm mục tiêu bằng Danh sách
Mục tiêu có thể được chỉ định rõ ràng trong một danh sách. Nó được định nghĩa trong khối mã sau.
salt -L 'minion1,minion2' test.ping
Nó sẽ tạo ra những thứ sau output -
minion2:
True
minion1:
True
Mục tiêu theo điều kiện
Các mục tiêu có thể được kết hợp trong một lệnh như được hiển thị trong khối mã bên dưới.
salt -C 'G@os:Ubuntu and minion* or [email protected].*' test.ping
Nó sẽ tạo ra những thứ sau output -
minion1:
True
minion2:
True
Mô-đun và chức năng (mô-đun. chức năng)
Salt có thể thực hiện các lệnh shell; cập nhật gói và phân phối tệp, v.v., trong tất cả các hệ thống được quản lý của nó đồng thời. Salt thực hiện các hoạt động này bằng cách sử dụng các mô-đun. Salt có các mô-đun đặc biệt cho tất cả các chức năng có sẵn. Hãy để chúng tôi hiểu các mô-đun Salt khác nhau bằng cách sử dụng một số ví dụ đơn giản trong chương này.
Lệnh Shell
Salt thực hiện các lệnh shell từ xa trên nhiều hệ thống bằng cách sử dụng cmd.runchỉ huy. Cáccmd là mô-đun chính và run là một trong những chức năng có sẵn trong cmdmô-đun. Cácrun chức năng cho phép bất kỳ lệnh shell nào được thực thi trong hệ thống từ xa như được hiển thị trong khối mã bên dưới.
salt '*' cmd.run 'ls -l /etc'
Nó sẽ tạo ra những thứ sau output -
minion2:
total 868
drwxr-xr-x 7 root root 4096 Jan 26 22:10 X11
drwxr-xr-x 3 root root 4096 Jan 26 21:02 acpi
-rw-r--r-- 1 root root 2981 Jan 26 20:48 adduser.conf
-rw-r--r-- 1 root root 10 Jan 26 21:04 adjtime
drwxr-xr-x 2 root root 4096 Jan 26 22:10 alternatives
drwxr-xr-x 3 root root 4096 Jan 26 20:53 apm
drwxr-xr-x 3 root root 4096 Jan 26 21:02 apparmor
drwxr-xr-x 9 root root 4096 Jan 26 21:02 apparmor.d
drwxr-xr-x 3 root root 4096 Jan 26 21:02 apport
drwxr-xr-x 6 root root 4096 Jan 29 07:14 apt
drwxr-xr-x 2 root root 4096 Jan 26 22:10 at-spi2
……………
……………
minion1:
total 868
drwxr-xr-x 7 root root 4096 Jan 26 22:10 X11
drwxr-xr-x 3 root root 4096 Jan 26 21:02 acpi
-rw-r--r-- 1 root root 2981 Jan 26 20:48 adduser.conf
-rw-r--r-- 1 root root 10 Jan 26 21:04 adjtime
drwxr-xr-x 2 root root 4096 Jan 26 22:10 alternatives
drwxr-xr-x 3 root root 4096 Jan 26 20:53 apm
drwxr-xr-x 3 root root 4096 Jan 26 21:02 apparmor
drwxr-xr-x 9 root root 4096 Jan 26 21:02 apparmor.d
drwxr-xr-x 3 root root 4096 Jan 26 21:02 apport
drwxr-xr-x 6 root root 4096 Jan 29 07:09 apt
drwxr-xr-x 2 root root 4096 Jan 26 22:10 at-spi2
-rw-r----- 1 root daemon 144 Oct 21 2013 at.deny
-rw-r--r-- 1 root root 2177 Apr 9 2014 bash.bashrc
-rw-r--r-- 1 root root 45 Mar 22 2014 bash_completion
……………
……………
Hiển thị mức sử dụng đĩa
Muối cung cấp một mô-đun đặc biệt, diskđể có được toàn bộ chi tiết về đĩa của hệ thống được quản lý. Cácdiskmodule có một usage chức năng để truy vấn các chi tiết.
salt '*' disk.usage
Nó sẽ tạo ra những thứ sau output -
minion1:
----------
/:
----------
1K-blocks:
41251136
available:
37852804
capacity:
5%
filesystem:
/dev/sda1
used:
1662420
/dev:
----------
1K-blocks:
503908
available:
503896
capacity:
1%
filesystem:
udev
used:
12
/run:
----------
1K-blocks:
101780
available:
101412
capacity:
1%
filesystem:
tmpfs
used:
368
/run/lock:
----------
1K-blocks:
5120
available:
5120
capacity:
0%
filesystem:
none
used:
0
/run/shm:
----------
1K-blocks:
508884
available:
508872
capacity:
1%
filesystem:
none
used:
12
/run/user:
----------
1K-blocks:
102400
available:
102400
capacity:
0%
filesystem:
none
used:
0
/sys/fs/cgroup:
----------
1K-blocks:
4
available:
4
capacity:
0%
filesystem:
none
used:
0
/vagrant:
----------
1K-blocks:
303114632
available:
252331440
capacity:
17%
filesystem:
none
used:
50783192
minion2:
----------
/:
----------
1K-blocks:
41251136
available:
37852804
capacity:
5%
filesystem:
/dev/sda1
used:
1662420
/dev:
----------
1K-blocks:
503908
available:
503896
capacity:
1%
filesystem:
udev
used:
12
/run:
----------
1K-blocks:
101780
available:
101412
capacity:
1%
filesystem:
tmpfs
used:
368
/run/lock:
----------
1K-blocks:
5120
available:
5120
capacity:
0%
filesystem:
none
used:
0
/run/shm:
----------
1K-blocks:
508884
available:
508872
capacity:
1%
filesystem:
none
used:
12
/run/user:
----------
1K-blocks:
102400
available:
102400
capacity:
0%
filesystem:
none
used:
0
/sys/fs/cgroup:
----------
1K-blocks:
4
available:
4
capacity:
0%
filesystem:
none
used:
0
/vagrant:
----------
1K-blocks:
303114632
available:
252331440
capacity:
17%
filesystem:
none
used:
50783192
Giao diện mạng
Salt cung cấp một mô-đun, mạng và chức năng riêng biệt, các giao diện bên trong mô-đun để truy vấn thông tin giao diện mạng về các hệ thống được quản lý.
salt '*' network.interfaces
Nó sẽ tạo ra những thứ sau output -
minion1:
----------
eth0:
----------
hwaddr:
08:00:27:04:3e:28
inet:
|_
----------
address:
10.0.2.15
broadcast:
10.0.2.255
label:
eth0
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::a00:27ff:fe04:3e28
prefixlen:
64
scope:
link
up:
True
eth1:
----------
hwaddr:
08:00:27:34:10:52
inet:
|_
----------
address:
192.168.50.11
broadcast:
192.168.50.255
label:
eth1
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::a00:27ff:fe34:1052
prefixlen:
64
scope:
link
up:
True
lo:
----------
hwaddr:
00:00:00:00:00:00
inet:
|_
----------
address:
127.0.0.1
broadcast:
None
label:
lo
netmask:
255.0.0.0
inet6:
|_
----------
address:
::1
prefixlen:
128
scope:
host
up:
True
minion2:
----------
eth0:
----------
hwaddr:
08:00:27:04:3e:28
inet:
|_
----------
address:
10.0.2.15
broadcast:
10.0.2.255
label:
eth0
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::a00:27ff:fe04:3e28
prefixlen:
64
scope:
link
up:
True
eth1:
----------
hwaddr:
08:00:27:a7:31:8e
inet:
|_
----------
address:
192.168.50.12
broadcast:
192.168.50.255
label:
eth1
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::a00:27ff:fea7:318e
prefixlen:
64
scope:
link
up:
True
lo:
----------
hwaddr:
00:00:00:00:00:00
inet:
|_
----------
address:
127.0.0.1
broadcast:
None
label:
lo
netmask:
255.0.0.0
inet6:
|_
----------
address:
::1
prefixlen:
128
scope:
host
up:
True
Mô-đun thực thi sys.doc
Các chức năng muối có thể được gửi đến sys.docmô-đun thực thi. Điều này được sử dụng để lấy thông tin chi tiết về bất kỳ mô-đun nào trực tiếp từ dòng lệnh. Các hàm Salt tự ghi lại. Tất cả tài liệu về hàm có thể được truy xuất từ các minion thông qua hàm sys.doc (), được định nghĩa bên dưới.
salt '*' sys.doc
Đối số cho một lệnh gọi hàm
Các đối số được sử dụng để cung cấp dữ liệu bổ sung cho lệnh gọi hàm. Dưới đây là một ví dụ đối số đơn giản.
salt '*' sys.doc pkg.install
Đây, đối số pkg.install là một mô-đun để cài đặt các gói cụ thể.
Hàm Python
Đối số là các tham số được phân cách bằng dấu cách cho hàm. Nó cho phép mã python được truyền dưới dạng các đối số như dưới đây.
salt '*' cmd.exec_code python 'import sys;print sys.version'
Nó sẽ tạo ra những thứ sau output -
minion2:
2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4]
minion1:
2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4]
Tương tự, bạn có thể sử dụng các từ khóa tùy chọn và YAML định dạng.
Quản lý cấu hình là một trong những khái niệm quan trọng nhất trong SaltStack. Nó được sử dụng để tạo một mẫu cấu hình có thể sử dụng lại, được gọi làstate. Trạng thái mô tả mọi thứ cần thiết để đưa một thành phần hệ thống hoặc một ứng dụng vào một cấu hình đã biết.
Trạng thái muối
Trạng thái muối là một cấu hình có thể tái sử dụng cho một phần cụ thể của hệ thống. Các tiểu bang dễ hiểu hơn và được mô tả bằng YAML đơn giản.
Tạo trạng thái muối
Các trạng thái muối rất dễ tạo ra. Hãy để chúng tôi tạo một trạng thái đơn giản trong chương này. Di chuyển đến thư mục “salt-vagrant-demo / saltstack / salt /” và tạo một tệp có tênsamples.sls và thêm các dòng sau vào đó.
samples.sls
install_network_packages:
pkg.installed:
- pkgs:
- rsync
- lftp
- curl
Bây giờ, hãy lưu tệp và chạy lệnh sau trong Salt master.
root@saltmaster:/home/vagrant# salt 'minion1’ state.apply samples
Ở đây, chúng tôi đã cài đặt rsync, lftp và curl thông qua pkg.installed mô-đun sử dụng trạng thái Salt trong một minion muối, minion1. Nếu nó hoạt động bình thường, bạn có thể thấy phản hồi như hình dưới đây.
Nó sẽ tạo ra những thứ sau output -
minion1:
----------
ID: install_network_packages
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 08:08:48.612336
Duration: 545.385 ms
Changes:
Summary for minion1
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 545.385 ms
Áp dụng trạng thái muối
Bây giờ chúng ta đã tạo một trạng thái bằng cách sử dụng tệp '.sls' và áp dụng nó bằng cách gọi cụ thể nó. Salt có một tệp trạng thái mặc định được gọi làtop.slstập tin. Tệp trên cùng được sử dụng để áp dụng nhiều tệp trạng thái cho các tay sai của Salt. Tệp trên cùng mô tả nơi các trạng thái nên được áp dụng. Tốt,States và Top file làm việc cùng nhau để tạo ra cốt lõi cho khả năng quản lý cấu hình của SaltStack.
Bây giờ chúng ta hãy tạo một tệp top.sls đơn giản trong thư mục saltstack/salt và thêm phần sau.
top.sls
base:
'*':
- common
'minion1':
- samples
Đây, state, thông thường applies đến all system tiểu bang, samples áp dụng đối với minion1.
Tiếp theo, chạy Salt master và áp dụng trạng thái như hình dưới đây.
root@saltmaster:/home/vagrant# salt '*' state.apply
Nó sẽ tạo ra những thứ sau output -
minion1:
----------
ID: common_packages
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 09:33:35.642355
Duration: 588.21 ms
Changes:
Summary for minion1
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 588.210 ms
minion2:
----------
ID: common_packages
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 09:33:35.890331
Duration: 602.79 ms
Changes:
Summary for minion2
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 602.790 ms
Áp dụng kích thước hàng loạt
Nếu bạn có một số lượng lớn các tay sai được kết nối, thì bạn có thể giới hạn số lượng hệ thống được cập nhật cùng một lúc. Nó được thực hiện bằng cách sử dụng–batch-size tùy chọn, được định nghĩa bên dưới.
root@saltmaster:/home/vagrant# salt --batch-size 5 '*' state.apply
Nó sẽ tạo ra những thứ sau output -
Executing run on ['minion2', 'minion1']
jid:
20170314094638482664
minion1:
----------
ID: common_packages
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 09:46:41.228519
Duration: 582.24 ms
Changes:
Summary for minion1
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 582.240 ms
retcode:
0
jid:
20170314094638482664
minion2:
----------
ID: common_packages
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 09:46:41.153609
Duration: 605.235 ms
Changes:
Summary for minion2
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 605.235 ms
retcode:
0
Chức năng trạng thái muối
Các chức năng trạng thái muối được sử dụng để cài đặt và cấu hình các ứng dụng trên hệ thống từ xa của bạn. Hãy để chúng tôi cài đặt gói “Vim” bằng chức năng trạng thái Muối.
Tạo và áp dụng chức năng trạng thái
Tạo một tệp có tên “sample.sls” trong thư mục “salt-vagrant-demo / saltstack / salt / sample.sls” và thêm phần sau:
sample.sls
install vim:
pkg.installed:
- name: vim
Sau khi môi trường Vagrant hoạt động, hãy chạy chính muối và áp dụng sample.sls bằng cách chạy lệnh sau.
root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample
Nó sẽ tạo ra những thứ sau output -
minion2:
----------
ID: install vim
Function: pkg.installed
Name: vim
Result: True
Comment: Package vim is installed
Started: 15:07:45.752764
Duration: 553.506 ms
Changes:
Summary for minion2
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 553.506 ms
Bây giờ, chúng tôi đã thêm một gói “Vim”. Bây giờ chúng ta hãy kiểm tra gói bằng phương pháp kiểm tra Salt.
Kiểm tra trạng thái muối
Việc chạy thử nghiệm được yêu cầu bằng cách thêm tùy chọn “test = True” vào các trạng thái. Thông tin trả về sẽ hiển thị các trạng thái sẽ được áp dụng màu vàng và kết quả được báo cáo là 'Không có'.
Lệnh sau được sử dụng để kiểm tra trạng thái:
root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample test = True
Nó sẽ tạo ra những thứ sau output -
minion2:
----------
ID: install vim
Function: pkg.installed
Name: vim
Result: True
Comment: Package vim is already installed
Started: 15:07:45.752764
Duration: 553.506 ms
Changes:
Summary for minion2
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 553.506 ms
SaltStack ─ Thành phần trụ cột
Pillar là thành phần thiết yếu để tạo ra các trạng thái Salt có thể tái sử dụng. Nó được sử dụng để xác định dữ liệu an toàn cho các tay sai được chỉ định bằng cách sử dụng các mục tiêu. Dữ liệu cột muối lưu trữ các giá trị như cổng, đường dẫn tệp, thông số cấu hình và mật khẩu.
Tệp cấu hình cột
Cấu hình cho pillar_roots trong tệp cấu hình chính được hiển thị bên dưới:
pillar_roots:
base:
- /srv/pillar
Ở đây, tệp nằm trong thư mục “/ srv / column”.
Hãy xem xét, tệp hàng đầu nằm trong /srv/pillar/top.sls có cấu trúc như sau:
base:
'*':
- default
Bây giờ, di chuyển đến tệp default.sls nằm trong /srv/pillar/default.sls và thêm mã sau.
# Default pillar values
apache
git
Sau khi lưu tệp, hãy làm mới cột để cập nhật tất cả các thay đổi.
Làm mới Trụ cột
Bạn có thể làm mới cột bằng lệnh sau.
root@saltmaster:/home/vagrant# salt '*' saltutil.refresh_pillar
Lệnh trên được sử dụng để làm mới dữ liệu cột muối trên tất cả các tay sai.
Liệt kê dữ liệu cột
Để liệt kê dữ liệu trụ cột, bạn có thể sử dụng lệnh dưới đây.
root@saltmaster:/home/vagrant# salt '*' pillar.ls
Nó sẽ tạo ra những thứ sau output -
minion2:
- apache
- git
minion1:
- apache
- git
Mục trụ cột
Khi trụ được thiết lập, dữ liệu có thể được xem trên minion thông qua mô-đun trụ. Nó có thể được truy cập thông qua chức năngpillar.items, được định nghĩa bên dưới.
root@saltmaster:/home/vagrant# salt '*' pillar.items
Nó sẽ tạo ra những thứ sau output -
minion2:
----------
apache:
httpd
git:
git
minion1:
----------
apache:
httpd
git:
git
SaltStack - Bao gồm thành phần
Thành phần 'Bao gồm' được sử dụng để xác định cùng một tác vụ cấu hình ở nhiều nơi. Nó rất dễ dàng để thực hiện. Ở đầu tệp trạng thái của bạn, thêm một bao gồm bằng cách sử dụng định dạng sau:
include:
- state file 1
- state file 2
Đây, state file 1 và state file 2là tên của các tệp SLS mà bạn muốn đưa vào. Không cần bao gồm.slssự mở rộng. Các trạng thái Muối bao gồm được chèn vào đầu tệp hiện tại.
Tệp trạng thái trong Thư mục con
Bạn có thể bao gồm tệp trạng thái thư mục con bằng cách sử dụng dấu chấm (.). Nó hoạt động như một ngăn cách thư mục.
include:
- dir.sls1
Giao diện Grains
Grains là một giao diện được sử dụng để lấy thông tin về hệ thống cơ bản. Grains được thu thập cho hệ điều hành, tên miền, địa chỉ IP, hạt nhân, loại hệ điều hành, bộ nhớ và nhiều thuộc tính hệ thống khác.
Nhắm mục tiêu Ngũ cốc
Dữ liệu hạt có thể được sử dụng khi nhắm mục tiêu tay sai, được xác định trong khối mã sau.
root@saltmaster:/home/vagrant# salt -G 'os:Ubuntu' test.ping
Nó sẽ tạo ra những thứ sau output -
minion1:
True
minion2:
True
Liệt kê ngũ cốc
Các loại ngũ cốc có thể được liệt kê bằng cách sử dụng mô-đun 'grain.ls', được định nghĩa bên dưới.
root@saltmaster:/home/vagrant# salt '*' grains.ls
Danh sách sản phẩm
Giống như Pillar, dữ liệu về Ngũ cốc cũng có thể được liệt kê bằng cách sử dụng 'grain.items'.
root@saltmaster:/home/vagrant# salt '*' grains.items
Ghi nhật ký được sử dụng để theo dõi các sự kiện phần mềm đang chạy. Một sự kiện được mô tả bằng thông báo mô tả, có thể tùy chọn chứa dữ liệu biến. Phương pháp khai thác bằng muối được sử dụng để giải quyết mọi vấn đề mà bạn có thể gặp phải. Bạn có thể kiểm tra với các mức nhật ký cụ thể.
Thiết lập cấu hình
Hãy cho chúng tôi hiểu chi tiết các cài đặt cấu hình khác nhau để ghi nhật ký.
LOG_FILE
Bản ghi nhật ký muối được chuyển qua tệp chứa tên đường dẫn cục bộ hoặc vị trí mạng để nhận dạng. Tệp này được coi là tệp nhật ký.
log_file: /var/log/salt/master
Ở đây, tệp phụ thuộc vào tệp nhị phân đang được thực thi ở chế độ chính. Tương tự như vậy, bạn cũng có thể thực thi trong minion, được hiển thị bên dưới.
log_file: /var/log/salt/minion
Bạn cũng có thể sử dụng địa chỉ từ xa. Cú pháp để sử dụng địa chỉ từ xa là - <file | udp | tcp>: // <host | socketpath>: <port-if-required> / <log-facility>.
log_file: udp://loghost:port
Ở đây, cơ sở nhật ký mặc định là LOG_USER.
MỨC ĐĂNG NHẬP
Các mức nhật ký được sắp xếp theo một giá trị được ấn định bằng số. Thư viện Python đã xác định hầu hết các cấp độ ghi theo mặc định. Ngoài ra, Salt sử dụng một số cấp độ khác. Một số cấp độ được giải thích bên dưới.
log_level: error; level value is 40 - Nó chỉ ra bản ghi báo cáo nhật ký bị lỗi.
log_level: quiet; level value is 1000 - Nó chỉ ra rằng không có gì nên được đăng nhập ở cấp độ này.
log_level: info; level value is 20 - Nó cho biết thông tin nhật ký bình thường.
log_level: warn; level value is 30 - Nó chỉ ra bản ghi báo cáo nhật ký lúc cảnh báo.
log_level: debug; level value is 10 - Thông tin hữu ích để gỡ lỗi cả việc triển khai muối và mã muối.
log_level: trace; level value is 5 - Thông tin gỡ lỗi mã chi tiết hơn.
LOG_LEVEL_LOGFILE
Nó xác định mức độ tin nhắn để gửi đến tệp nhật ký.
log_level_logfile: info
LOG_DATEFMT
Nó xác định định dạng ngày nhật ký. Theo mặc định, nó được biểu thị là% Y-% m-% d% H:% M:% S.
log_datefmt_logfile: '%Y-%m-%d %H:%M:%S'
LOG_FMT_CONSOLE
Nó xác định định dạng của bảng điều khiển ghi lại các thông báo. Muối sử dụng một tùy chỉnhLogRecordcác thuộc tính để tô màu đầu ra nhật ký bảng điều khiển. Nó tuân theo cú pháp sau:
'%(colorlevel)s' # log level name colorized by level
'%(colorname)s' # colorized module name
'%(colorprocess)s' # colorized process number
'%(colormsg)s' # colorized messages name
LOG_FMT_LOGFILE
Nó xác định định dạng của tệp nhật ký ghi lại các thông báo. Cú pháp cơ bản như sau:
%(asctime)s,%(msecs)03d [%(name)-17s][%(levelname)-8s] %(message)s
LOG_GRANULAR_LEVELS
Mức độ này được sử dụng để kiểm soát mức độ ghi nhật ký cụ thể hơn.
log_granular_levels:
'salt': 'info'
'salt.modules': ‘trace'
Tại đây, Thư viện muối chính ở cấp độ 'thông tin' đặt salt.modules để đăng nhập ở cấp độ theo dõi.
Trình xử lý ghi nhật ký bên ngoài
Salt sử dụng trình xử lý nhật ký bên ngoài LogStash và Sentry để ghi nhật ký. Hãy để chúng tôi hiểu chi tiết về nó trong chương này.
Trình xử lý LOGSTASH
LogStash là một mã nguồn mở; đường ống xử lý dữ liệu an toàn phía máy chủ. Chúng ta hãy xem xét một trình xử lý ghi nhật ký UDP đơn giản trong Salt sử dụng LogStash.
Chỉ định các thay đổi sau trong tệp chính Salt -
logstash_udp_handler:
host: 127.0.0.1
port: 9999
version: 1
msg_type: logstash
Sau đó, thêm các thay đổi trong tệp cấu hình Logstash -
input {
udp {
port ⇒ 9999
codec ⇒ json
}
}
Đây, UDP - là đầu vào cần có định dạng json_event, đó là những gì chúng tôi gửi qua dây.
SENTRY Trình xử lý ghi nhật ký
Sentry là theo dõi lỗi thời gian thực trong quá trình triển khai sản xuất và thông tin để tái tạo và khắc phục sự cố. Cấu hình mặc định trong tệp chính được xác định bên dưới.
sentry_handler:
dsn: https://pub-key:[email protected]/app-id
log_level: debug
Ở đây, cấp độ ghi nhật ký mặc định cho trình xử lý sentry là LỖI, nhưng chúng tôi đã xác định gỡ lỗi log_level dưới khóa cấu hình sentry_handler.
Salt thực hiện các lệnh trong một hệ thống từ xa bằng cách sử dụng salt-minion. Đây là hành vi bình thường. Trong một số trường hợp, hệ thống từ xa chỉ có thể được truy cập bằng giao thức SSH. Đối với những tình huống này, Salt cung cấp một tùy chọn để kết nối hệ thống từ xa chỉ bằng giao thức SSH và thực thi lệnh thông qua lớp SSH.
Salt SSHrất dễ cấu hình. Cấu hình cần thiết duy nhất là chỉ định chi tiết hệ thống từ xa trong một tệp đặc biệt được gọi làRoster file. Tệp bảng phân công này thường nằm ở/etc/salt/roster. Tệp danh sách sẽ có tất cả thông tin liên quan đến hệ thống từ xa và cách chúng tôi có thể kết nối với nó. Sau khi các tệp bảng phân công được định cấu hình, tất cả các lệnh Salt được thực thi bằng cách sử dụngsalt-ssh thay vì lệnh salt.
Tệp danh sách
Hệ thống phân công được thiết kế đặc biệt cho Salt SSH. Đây được thiết kế như một hệ thống có thể cắm được. Mục đích duy nhất của hệ thống phân công là thu thập thông tin về hệ thống từ xa. Tệp danh sách là mộtYAML based configuration file chứa thông tin hệ thống từ xa như targets. Các mục tiêu này là một cấu trúc dữ liệu đặc biệt với một tập hợp các thuộc tính được xác định trước. Một tệp bảng phân công chứa một hoặc nhiều mục tiêu và mỗi mục tiêu được xác định bởi mộtSalt ID.
Cấu trúc cơ bản của tệp danh sách như sau:
<Salt ID>:
host: <host name>
user: <user name>
passwd: <password of the user>
Tất cả các thuộc tính khác được hỗ trợ bởi tệp bảng phân công là tùy chọn. Chúng như sau:
port - Số cổng SSH.
sudo - có chạy lệnh qua sudo hay không.
sudo_user - tên người dùng sudo.
tty - true nếu sudo được bật.
priv - khóa riêng.
timeout - thời gian chờ cho kết nối SSH.
minion_opts - từ điển lựa chọn tay sai.
thin_dir - thư mục lưu trữ của hệ thống đích cho các thành phần muối.
cmd_umask - umask để buộc đối với lệnh gọi muối.
Tệp danh sách mẫu như sau:
web:
host: 192.168.2.1
user: webuser
passwd: secret
sudo: True
db:
host: 192.168.2.2
Triển khai khóa SSH
Salt SSH sẽ tạo một cặp khóa công khai / riêng tư mặc định cho thông tin đăng nhập SSH. Đường dẫn mặc định sẽ là /etc/salt/pki/master/ssh/salt-ssh.rsa. Khóa này có thể được triển khai cho hệ thống từ xa bằng cách sử dụngssh-copy-id lệnh như hình dưới đây.
ssh-copy-id -i /etc/salt/pki/master/ssh/salt-ssh.rsa.pub [email protected]
Thực thi lệnh
Việc thực thi một lệnh muối cũng đơn giản như thay đổi salt cli lệnh vào salt-ssh như hình bên dưới.
salt-ssh '*' test.ping
Lệnh Raw Shell
Salt SSH cung cấp một tùy chọn (-r) để thực thi một lệnh thô trong hệ thống từ xa bỏ qua mô-đun muối và các chức năng.
salt-ssh '*' -r 'ls'
Nhắm mục tiêu bằng Salt SSH
Nhắm mục tiêu hệ thống từ xa trong Salt SSH chỉ hỗ trợ các mục tiêu toàn cầu và regex. Vì Salt SSH là một mô-đun riêng biệt, nó chỉ cung cấp các tùy chọn hạn chế cho đến thời điểm hiện tại và sẽ cung cấp nhiều tính năng hơn trong tương lai gần.
Muối cung cấp một mô-đun riêng biệt, Salt Cloud để cung cấp các máy ảo của nhiều nhà cung cấp đám mây khác nhau như Amazon AWS, Google Compute, v.v. Salt Cloud là giao diện chung để định cấu hình và quản lý máy ảo của nhiều nhà cung cấp đám mây khác nhau.
Cloud Config- Tệp cấu hình chính cho Salt Cloud là / etc / salt / cloud và nó áp dụng cho tất cả các máy ảo. Tệp cấu hình chính được gọi làCloud Config.
Cloud Providers - Để nhắm mục tiêu các nhà cung cấp đám mây cụ thể, chúng tôi có thể sử dụng tệp cấu hình cụ thể và chúng được đặt trong /etc/salt/cloud.providers.d/*.conf, chúng được gọi là Cloud Providers.
Cloud Profiles - Để nhắm mục tiêu một máy ảo cụ thể, chúng tôi cũng có thể sử dụng tệp cấu hình đặc biệt, chỉ áp dụng cho máy ảo cụ thể đó và chúng được đặt tại /etc/salt/cloud.profiles.d/*.conf, chúng được gọi là Cloud Profiles.
Đối với máy ảo, cài đặt trong Cloud Config được áp dụng đầu tiên và sau đó trong Cloud Providers và cuối cùng ghi đè được thực hiện bởi Cloud Profiles.
Cài đặt đám mây muối
Theo mặc định, Salt Cloud được tích hợp sẵn trong Salt và có sẵn. Nếu nó không có sẵn, chúng ta có thể cài đặt nó bằng cách sử dụng lệnh bên dưới.
pip install salt-cloud
Vì Salt Cloud là một mô-đun riêng biệt và chạy trong quy trình riêng, nên nó có thể được cài đặt trong hệ thống Salt Minion thay vì Salt Master.
Cấp phép Máy ảo
Để cung cấp một máy ảo, chúng ta cần xác định nhà cung cấp đám mây và cấu hình đám mây. Sau khi cả hai được tạo, chúng tôi có thể cung cấp một máy ảo mới để sử dụng nó.
Nhà cung cấp đám mây
Thông tin máy chủ lưu trữ đám mây được định cấu hình trong tệp cấu hình nhà cung cấp Đám mây. Thông thường, các thông tin cơ bản cần được định cấu hình là trình điều khiển đám mây, tên người dùng, mật khẩu, khóa riêng, v.v. Hãy để chúng tôi tạo một nhà cung cấp đám mây mới có tên làmy-amazon-cloud.
Tạo một tệp, my-amazon-cloud.conf trong /etc/salt/cloud.providers.d/
Thêm nhà cung cấp mới bằng cách sử dụng ec2 người lái xe.
my-amazon-cloud:
driver: ec2
id: '<AWS_ID>'
key: '<AWS_KEY>'
private_key: /path/to/privatekey.pem
keyname: <name of the key>
securitygroup: default
minion:
master: <master server>
Salt cung cấp trình điều khiển cho nhiều máy chủ đám mây khác nhau, chẳng hạn như GoGrid, HP Cloud, Google Compute Engine (GCE), Amazon AWS, Joyent, Linode, OpenNebula, ProfitBricks, Proxmox, Saltify, VexxHost, VMWare, v.v.
Sau khi các nhà cung cấp đám mây được định cấu hình, chúng tôi có thể truy vấn vị trí có sẵn của nhà cung cấp, hình ảnh máy có sẵn và các kích thước khác nhau của nó.
salt-cloud --list-location my-amazon-cloud
salt-cloud --list-images my-amazon-cloud
salt-cloud --list-sizes my-amazon-cloud
Cấu hình đám mây
Cấu hình đám mây chỉ định hình ảnh và kích thước máy ảo. Nó có thể được định cấu hình theo - /etc/salt/cloud.profiles.d/. Hãy để chúng tôi tạo một hồ sơ đơn giản,simple.conf.
aws_micro:
provider: my-amazon-cloud
image: <image_id>
size: <machine_id e.g. t1.micro>
Máy ảo
Khi nhà cung cấp và cấu hình được định cấu hình, chúng tôi có thể dễ dàng cung cấp một máy ảo bằng cách sử dụng đám mây muối như hình dưới đây.
salt-cloud -p aws_micro master minion1 minion2
Ở đâu, p - Hồ sơ tên master, minion1 và minion2 là các máy ảo mới.
Các chi tiết của máy ảo mới được tạo có thể được lấy bằng cách sử dụng lệnh sau.
salt-cloud --query
Các máy ảo có thể bị phá hủy bằng lệnh sau:
slat-cloud -d master minion1
Bản đồ đám mây
Bản đồ đám mây là một định dạng đặc biệt để tạo nhiều máy ảo cùng một lúc. Định dạng của tệp bản đồ là chỉ định cấu hình và sau đó thêm danh sách các máy ảo bên dưới nó.
Một tệp bản đồ mẫu như sau:
micro:
- web1
- web2
large:
- db1
- db2
Tệp bản đồ có thể được chuyển làm đối số cho lệnh salt-cloud để tạo máy ảo như sau:
salt-cloud -m /path/to/mapfile
Có rất nhiều thiết bị như bộ định tuyến, thiết bị mạng, v.v., có hệ điều hành tùy chỉnh, bộ nhớ hạn chế và cân nhắc bảo mật cao. Trong các thiết bị đó, chúng tôi không thể cài đặt tiêu chuẩnsalt-minionvà sau đó không thể quản lý các hệ thống đó. Tuy nhiên, Salt cung cấp một công nghệ tiên tiến để khắc phục hạn chế này.
Salt có một mô-đun riêng biệt, Salt proxy minion điều khiển hệ thống từ xa bằng dịch vụ REST đang chạy trong hệ thống từ xa. Dịch vụ REST này là một dịch vụ web dựa trên HTTP được viết bằng cách sử dụngRepresentational State Transfer (REST) và chúng đều dễ thực hiện và dễ tiêu thụ.
Mọi thiết bị sẽ có SDK và môi trường phát triển riêng để viết các ứng dụng phức tạp. Salt mong đợi một dịch vụ REST sẽ được phát triển trong thiết bị theo đặc điểm kỹ thuật của giao diện Salt. Salt cũng cung cấp một mô-đun python để viết dịch vụ web REST. Nếu thiết bị hỗ trợ python, thì sẽ dễ dàng phát triển dịch vụ web REST.
Khi dịch vụ web REST được phát triển và triển khai trong hệ thống từ xa, Salt có thể được định cấu hình để điều khiển thiết bị từ xa bằng dịch vụ web REST thay vì muối minion.
Ví dụ làm việc
Hãy để chúng tôi tìm hiểu khái niệm salt proxy minionsử dụng môi trường làm việc trực tiếp. Đối với môi trường trực tiếp, chúng tôi đã chọn một hệ thống Linux cho cả máy chủ và máy chủ proxy. Chúng tôi sẽ kiểm soát hệ thống bằng cách sử dụng dịch vụ web REST thay vì muối tay sai.
Cài đặt và cấu hình dịch vụ web REST
Salt cung cấp một mẫu triển khai dịch vụ web REST, được đặt tên là proxyminion_rest_example trong mô-đun đóng góp của nó. Hãy để chúng tôi cài đặt dịch vụ web mẫu.
Tải về ‘bottle’bằng cách sử dụng pip. Cácbottle lệnh là một khuôn khổ web python để phát triển ứng dụng web.
pip install bottle = 0.12.8
Tải về saltstack/salt-contribdự án từ github. Nếu không, hãy sao chép dự án bằng lệnh sau.
git clone https://github.com/saltstack/salt-contrib
Mở một thiết bị đầu cuối và đi đến salt-contrib danh mục.
Thư mục đóng góp muối này sẽ có một thư mục, proxyminion_rest_example. Thư mục này chứa triển khai mẫu cho dịch vụ web REST. Chuyển đến thư mục proxyminion_rest_example.
Chạy lệnh sau để khởi động dịch vụ web REST.
python rest.py --address <your ip address> --port 8000
Mở trình duyệt và tải http: // «địa chỉ ip của bạn»: 8000. Điều này sẽ hiển thị trang mặc định với các dịch vụ và gói như được hiển thị trong ảnh chụp màn hình bên dưới.
Bây giờ, chúng tôi đã định cấu hình dịch vụ web REST và nó sẽ kiểm tra cách định cấu hình proxy muối để truy vấn dịch vụ web REST và kiểm soát hệ thống.
Định cấu hình Salt-Proxy
Để định cấu hình Salt-Proxy, chúng ta phải làm theo các bước dưới đây.
Chúng ta phải chỉ định nút chính cho muối-proxy. Chỉnh sửa vị trí tệp cấu hình proxy, trong / etc / salt / proxy, và nhập mã sau.
master: <your ip address>
Sửa đổi / tạo tệp trụ cột cơ sở trong /srv/pillar/top.sls như được hiển thị trong khối mã sau đây.
base:
'p8000':
- p8000
Thêm một tệp trụ cột mới, p8000.sls bên trong /srv/pillar như được hiển thị trong khối mã bên dưới.
proxy:
proxytype: rest_sample
url: http://<your ip address>:8000
Khởi động Salt-proxy ở chế độ gỡ lỗi bằng lệnh sau.
salt-proxy --proxyid = p8000 -l debug
Tương tự như Salt-minion, chấp nhận salt-proxy key như hình bên dưới.
salt-key -y -a p8000
The following keys are going to be accepted:
Unaccepted Keys:
p8000
Key for minion p8000 accepted.
Chạy muối
Bây giờ, chạy salt ra lệnh và gọi ping.test chức năng như hình dưới đây.
salt p8000 test.ping
Chúng tôi có thể chạy bất kỳ chức năng nào được hỗ trợ bởi dịch vụ web REST bằng cách sử dụng salt, tương tự như salt-minion.
Ví dụ, thông tin về hạt có thể được lấy bằng cách sử dụng lệnh sau.
salt p8000 grains.items
Hệ thống sự kiện trong Salt là một giao diện ZeroMQ PUB cục bộ, kích hoạt các sự kiện muối. Nó được thực hiện bởi các thành phần sau.
Event Sockets - Nó được sử dụng để xuất bản các sự kiện.
Event library - Nó được sử dụng để lắng nghe các sự kiện và gửi các sự kiện đó vào hệ thống muối.
Sự kiện của Salt Master
Một bậc thầy về Salt cung cấp các loại sự kiện khác nhau, được giải thích chi tiết bên dưới -
- Sự kiện xác thực
- Bắt đầu sự kiện
- Sự kiện chính
- Sự kiện việc làm
- Sự kiện Á quân
- Sự kiện hiện diện
- Sự kiện đám mây
Hãy để chúng tôi đi qua từng loại sự kiện một cách chi tiết.
Sự kiện xác thực
Các sự kiện xác thực này kích hoạt khi một minion thực hiện kiểm tra xác thực với master. Nó được biểu thị bằng muối / auth.
Bắt đầu sự kiện
Sự kiện bắt đầu kích hoạt bất cứ khi nào một minion kết nối với Salt master và nó được biểu thị bằng Salt / minion // start.
Sự kiện chính
Các sự kiện Chìa khóa được kích hoạt khi bậc thầy của Salt chấp nhận và từ chối các chìa khóa trên Salt minion. Bạn có thể truy cập sự kiện này bằng lệnh Salt-key.
Sự kiện việc làm
Sự kiện việc làm bị sa thải bất cứ khi nào bắt đầu một công việc mới. Nó được đại diện bởisalt/job//new. Đây, JID - Id công việc mới - công việc mới
Sự kiện Á quân
Khi một người chạy bắt đầu thực hiện, một sự kiện người chạy sẽ được kích hoạt. Nó được biểu diễn bằng Salt / run // new.
Sự kiện hiện diện
Khi các tay sai được kết nối hoặc mới được kết nối hoặc ngắt kết nối, sự kiện này sẽ được kích hoạt theo chu kỳ. Nó được đại diện bởi -salt/presence/present và salt/presence/change. Đây,
Present - có nghĩa là bậc thầy Salt hiện được kết nối với danh sách tay sai.
Change - được sử dụng để phát hiện một minion mới - được kết nối hoặc ngắt kết nối.
Sự kiện đám mây
Các sự kiện đám mây muối được kích hoạt trên một máy ảo. Trừ khi các sự kiện khác, nó không được thực hiện trên minion. Bạn có thể truy cập nó bằng cách sử dụng -salt/cloud//creating. Nó được kích hoạt khi đám mây Salt bắt đầu quá trình thực thi máy ảo.
Công cụ sự kiện
Bây giờ, chúng ta hãy xem qua các công cụ và tập lệnh sự kiện. Bạn có thể truy cập xe buýt sự kiện bằng CLI. Nó được truy cập bằng lệnh sau.
salt-run state.event pretty = True
Ở đây, trình chạy được thiết kế để tương tác với bus sự kiện từ các công cụ bên ngoài và tập lệnh shell. Xe buýt sự kiện của Salt có thể được truy cập từ xa thông quaREST API. Nó được đại diện bởi - (URL mẫu).
curl -SsNk https://salt-api.example.com:8000/events?token = 05A3.
Tương tự, bạn cũng có thể truy cập các sự kiện từ các tập lệnh Python.
Nói chung, orchestrationlà sự điều phối và sắp xếp tự động của các hệ thống. Người chạy dàn nhạc được sử dụng để thực hiện dàn nhạc trong SaltStack.
Người chạy dàn nhạc
anh ấy Orchestrate Runner cung cấp tất cả các chức năng của OverState(hệ thống trước đó). Ban đầu nó được gọi làstate.slsngười chạy. Á hậu phối hợp này được sử dụng để tổng quát hóa hệ thống trạng thái Muối thành ngữ cảnh chính của Muối.
Các state.sls và state.highstate các hàm được thực thi trên mỗi minion Salt, nhưng state.orchestrateÁ hậu được thực hiện trên tổng thể. Cácstate.orchestrateÁ hậu cho phép bạn quản lý toàn bộ cơ sở hạ tầng của mình ở trạng thái đầy đủ. Hãy để chúng tôi hiểu cách thực hiện một quy trình thực hiện đơn giản.
Thực hiện đơn giản
Lệnh Orchestrate Runner giống như lệnh state.sls nhưng bạn có thể thực thi nó với "salt-run" thay vì muối.
Giả sử rằng bạn có một sample.sls tập tin nằm ở /srv/salt/orch/samples.sls. Thêm mã sau vào tệp đó.
sample.sls
install_nginx:
salt.state:
- tgt: 'web*'
- sls:
- nginx
Lệnh sau được sử dụng để chạy trên cái chính và nó sẽ áp dụng các trạng thái được xác định trong tệp đó.
salt-run state.orchestrate orch.sample
Nó sẽ tạo ra những thứ sau output -
saltmaster.local_master:
----------
ID: install_nginx
Function: salt.state
Result: True
Comment: States ran successfully.
Started: 11:54:56.308078
Duration: 63.401 ms
Changes:
Summary for saltmaster.local_master
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 63.401 ms
root@saltmaster:/home/vagrant#
Ở đây, theo Phiên bản hiện tại, chức năng chạy đã được đổi tên thành state.orchestrate. Điều này sẽ hữu ích để tránh nhầm lẫn với hàm thực thi state.sls, nhưng các phiên bản trước củastate.sls phải được sử dụng.
Thực thi chức năng
Để thực thi một hàm, bạn nên sử dụng salt.function. Xem xét một tệpdata.sls Đặt vị trí tại /srv/salt/orch/data.sls. Bây giờ, hãy thêm các thay đổi sau vào tệp đó.
data.sls
cmd.run:
salt.function:
- tgt: '*'
- arg:
- rm -rf /tmp/data
Lệnh sau được sử dụng để thực thi hàm Salt.
root@saltmaster:/home/vagrant# salt-run state.orchestrate orch.data
Nó sẽ tạo ra những thứ sau output -
saltmaster.local_master:
----------
ID: cmd.run
Function: salt.function
Result: True
Comment: Function ran successfully. Function cmd.run ran on minion1, minion2.
Started: 12:14:54.791635
Duration: 234.615 ms
Changes:
minion1:
minion2:
Summary for saltmaster.local_master
------------
Succeeded: 1 (changed = 1)
Failed: 0
------------
Total states run: 1
Total run time: 234.615 ms
Công thức muối được đóng gói và phân phối cho các bậc thầy về Muối bằng trình quản lý gói. Khái niệm này bị ảnh hưởng từRPM, Yum và Pacmanhệ thống đóng gói. Trạng thái muối, cột, tệp mẫu và các tệp khác được sử dụng bởi công thức và sau đó được đóng gói thành một tệp duy nhất.
Sau khi một gói công thức được tạo, nó sẽ được sao chép vào Hệ thống Kho lưu trữ để sử dụng cho Salt master. Trước khi chuyển sang trình quản lý gói, chúng ta hãy xem cách cài đặt gói “nginx” bằng lệnh Salt basic.
Cú pháp sau được sử dụng để cài đặt gói “nginx”.
root@saltmaster:/home/vagrant# salt '*' pkg.install nginx
Đây, pkg.install nginxlệnh được sử dụng để cài đặt một gói. Sau khi thực hiện, bạn sẽ thấy phản hồi sau.
Nó sẽ tạo ra những thứ sau output -
minion2:
----------
httpd:
----------
new:
1
old:
httpd-cgi:
----------
new:
1
old:
libxslt1.1:
----------
new:
1.1.28-2build1
old:
nginx:
----------
new:
1.4.6-1ubuntu3.7
old:
nginx-common:
----------
new:
1.4.6-1ubuntu3.7
old:
nginx-core:
----------
new:
1.4.6-1ubuntu3.7
old:
minion1:
----------
httpd:
----------
new:
1
old:
httpd-cgi:
----------
new:
1
old:
libxslt1.1:
----------
new:
1.1.28-2build1
old:
nginx:
----------
new:
1.4.6-1ubuntu3.7
old:
nginx-common:
----------
new:
1.4.6-1ubuntu3.7
old:
nginx-core:
----------
new:
1.4.6-1ubuntu3.7
old:
Bây giờ, bạn đã cài đặt một gói. Để bắt đầu các dịch vụ cho gói đó, hãy sử dụng lệnh dưới đây.
root@saltmaster:/home/vagrant# salt '*' service.start nginx
Sau khi chạy lệnh này, kết quả sẽ như được hiển thị trong khối mã bên dưới.
minion1:
True
minion2:
True
Do đó, chúng tôi đã cài đặt và khởi động các dịch vụ cho gói “nginx” bằng lệnh cơ bản. Bây giờ chúng ta hãy thảo luận về cách xây dựng và cài đặt các gói trong trình quản lý gói Salt.
Gói xây dựng
Các gói có thể được xây dựng trên bất kỳ hệ thống nào mà bạn có thể cài đặt Salt. Có ba loại gói và chúng như sau.
- Formula
- Reactor
- Conf
Bây giờ chúng ta hãy hiểu cách tạo các gói bằng cách sử dụng Fomula Tập tin.
Tệp công thức
Hầu hết các tệp từ gói được đặt tại thư mục - / srv / spm / salt / theo mặc định, nhưng tệp trụ cột có thể được đặt trong thư mục - / srv / spm / column /. Tệp Công thức mô tả gói.
Example
name: apache
os: RedHat
os_family: RedHat
version: 201607
release: 2
summary: Formula for installing Apache
description: Formula for installing Apache
Đây,
Name- Tên của gói. Đây, tên gói làapache.
os - Nó được sử dụng để biết hệ điều hành nào có thể hỗ trợ gói này.
os_family - Nó được sử dụng để biết họ hệ điều hành nào có thể hỗ trợ gói này.
Version- Phiên bản của gói. Nó được chỉ định ở định dạng YYYYMM.
Release - Trường này chủ yếu đề cập đến việc phát hành một phiên bản.
Summary - Mô tả dòng ngắn gọn về gói hàng.
Description - Mô tả chi tiết hơn về gói hàng.
REACTOR
Các tệp của lò phản ứng nằm trong /srv/spm/reactor/ danh mục.
CONF
Các tệp trong loại gói này là các tệp cấu hình cho Salt, thường nằm trong /etc/salt/danh mục. Các tệp cấu hình cho các gói không phải là Salt có thể và phải được xử lý bằng Salt State (sử dụng loại công thức của gói).
Hãy để chúng tôi tiếp tục với các bước sau để xây dựng một gói.
Tạo một tệp CÔNG THỨC và đặt nó trong thư mục gốc của gói.
Tập hợp các tệp công thức trong một thư mục trên hệ thống xây dựng.
Chạy spm build. Gói được xây dựng và đặt trong thư mục / srv / spm_build. Lệnh sau được sử dụng để xây dựng một gói.
spm build /path/to/salt-packages-source/formula
Bây giờ, sao chép .spm tập tin vào một thư mục trên hệ thống kho lưu trữ.
Bạn có thể chia sẻ srv/spm_build thư mục trên mạng hoặc sao chép các tệp vào FTP hoặc Máy chủ trang web của bạn.
Tạo siêu dữ liệu repo bằng lệnh sau.
spm create_repo /srv/spm_build
Cài đặt các gói
Phần này giải thích về cách cài đặt gói trình quản lý gói Salt.
Định cấu hình kho lưu trữ từ xa
Để cấu hình kho lưu trữ từ xa, Salt Master cần biết vị trí của kho lưu trữ thông qua quá trình cấu hình.
Các tệp nằm trong /etc/salt/spm.repos.d/spm.repo danh mục.
Example
file_repository:
url: https://spm.example.com/
Ở đây, tệp chứa tên của kho lưu trữ và liên kết đến kho lưu trữ. Bạn cũng có thể sử dụng http, https, ftp hoặc đường dẫn tệp. Để sử dụng đường dẫn tệp, bạn có thể truy cập nó bằng URL: tệp: /// srv / spm_build.
Cập nhật siêu dữ liệu
Sau khi kho lưu trữ được định cấu hình trên Salt master, siêu dữ liệu của kho lưu trữ được tải xuống bằng lệnh bên dưới.
spm update_repo
Cập nhật nguồn gốc tệp
Các gói SPM nằm trong thư mục srv / spm / salt. Thêm đường dẫn sau vào gốc tệp trên Salt master,
file_roots:
base:
1. /srv/salt
2. /srv/spm/salt
Bây giờ, hãy khởi động lại muối tổng thể.
Cài đặt gói Apache
Để cài đặt gói apache, hãy sử dụng lệnh sau.
spm install apache
Bạn cũng có thể cài đặt trực tiếp từ tệp SPM bằng lệnh bên dưới.
spm local install /srv/spm/apache-201607-1.spm
Loại bỏ một gói
Để xóa một gói, ví dụ - apache, hãy sử dụng lệnh sau,
spm remove apache
Lưu ý rằng, nếu bất kỳ tệp nào đã được sửa đổi, chúng sẽ không bị xóa.
Salt cung cấp quyền truy cập có lập trình vào tất cả các lệnh của nó. Salt cung cấp các mô-đun khác nhau cho mọi phần của hệ thống Salt. Hãy để chúng tôi tìm hiểu kiến thức cơ bản về python API và cách chạy các lệnh muối cơ bản trong chương này.
Cấu hình
Các salt.config được sử dụng để truy cập chi tiết cấu hình Salt.
import salt.config
opts = salt.config.client_config('/etc/salt/master')
Đây, client_config đọc tệp cấu hình muối và trả về chi tiết cấu hình dưới dạng từ điển.
Bộ tải
Các salt.loader mô-đun được sử dụng để tải từng mô-đun trong Muối như ngũ cốc, tay sai, v.v.
import salt.loader
opts = salt.config.minion_config('/etc/salt/minion')
grains = salt.loader.grains(opts)
Đây, grains đọc thông tin chi tiết của các hạt trong hệ thống Muối và trả về.
Mô-đun khách hàng
Các salt.client mô-đun được sử dụng để thực thi các lệnh Salt, salt-call và các lệnh salt-SSH theo lập trình.
Các lớp python quan trọng nhất như sau:
- salt.client.LocalClient
- salt.client.Caller
- salt.client.ssh.client.SSHClient
Chức năng chính được cung cấp bởi hầu hết các mô-đun khách là cmd. Hàm này bao bọc các tùy chọn CLI và thực thi nó, tương tự như dòng lệnh và trả về kết quả dưới dạng cấu trúc dữ liệu python.
LocalClient
LocalClient được sử dụng để gửi các lệnh từ chủ đến các minion muối và trả lại kết quả cho chính.
import salt.client
local = salt.client.LocalClient()
local.cmd('*', 'test.ping')
Nó sẽ tạo ra những thứ sau output -
{'minion1': True, 'minion2': True }
Người gọi
Người gọi được sử dụng để chạy salt-call theo chương trình và trả về kết quả.
import salt.client
caller = salt.client.Caller()
caller.cmd('test.ping')
Nó sẽ tạo ra những thứ sau output -
True
SSHClient
SSHCient được sử dụng để chạy salt-ssh theo chương trình và trả về kết quả.
import salt.client.ssh.client
ssh = salt.client.ssh.client.SSHClient()
ssh.cmd('*', 'test.ping')
Nó sẽ tạo ra những thứ sau output -
{'minion1': True, 'minion2': True }
CloudClient
Mô-đun Salt.cloud được sử dụng để thực thi các lệnh của đám mây muối theo chương trình.
client = salt.cloud.CloudClient(path = '/etc/salt/cloud')
Mô-đun đám mây cung cấp các chức năng tạo máy ảo (create), hủy máy ảo (tiêu diệt), liệt kê hình ảnh do nhà cung cấp đám mây cung cấp (list_images), liệt kê vị trí của nhà cung cấp đám mây (list_locations), liệt kê kích thước máy của nhà cung cấp đám mây (list_sizes), Vân vân.
Trong ví dụ làm việc này, chúng tôi sẽ tạo một công thức Salt sẽ cấu hình máy chủ web apache cùng với phần mềm PHP. Salt là một cách tuyệt vời để thực hiện các lệnh đặc biệt, nhưng bạn sẽ không thực sự muốn liên tục cấu hình cơ sở hạ tầng của mình theo cách này. Bằng cách tạo một bộ công thức Salt, bạn có thể tái tạo bất kỳ cấu hình nào một cách đáng tin cậy.
Salt Formulas là các tệp văn bản YAML đơn giản và theo mặc định nằm trên Salt Master của bạn trong /srv/salt/*. Chúng ta hãy bắt đầu bằng cách tạo Salt Formula để cài đặt máy chủ web Apache và PHP cùng một lúc.
Tạo một tệp có tên “websetup.sls” trong /srv/salt/ thư mục và thêm mã sau.
websetup.sls
websetup:
pkg:
- installed
- pkgs:
- apache2
- php5
- php5-mysql
Trong ví dụ này, hãy chú ý đến đối số “- pkgs:”. Mỗi mục trong danh sách dưới đây “- pkgs:” sẽ được chuyển cùng nhau đến trình quản lý gói của OS để được cài đặt cùng nhau. Bất cứ khi nào bạn có một danh sách lớn các gói để cài đặt, đây là cách hiệu quả nhất để cài đặt chúng.
Áp dụng Công thức này cho Salt master bằng lệnh sau.
root@saltmaster:/home/vagrant# salt 'minion2' state.sls websetup
Bây giờ, bạn sẽ thấy như sau output -
minion2:
----------
ID: websetup
Function: pkg.installed
Result: True
Comment: 3 targeted packages were installed/updated.
Started: 01:50:53.978396
Duration: 86738.132 ms
Changes:
----------
apache2:
----------
new:
2.4.7-1ubuntu4.13
old:
apache2-api-20120211:
----------
new:
1
old:
apache2-bin:
----------
new:
2.4.7-1ubuntu4.13
old:
apache2-data:
----------
new:
2.4.7-1ubuntu4.13
old:
libapache2-mod-php5:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
libapr1:
----------
new:
1.5.0-1
old:
libaprutil1:
----------
new:
1.5.3-1
old:
libaprutil1-dbd-sqlite3:
----------
new:
1.5.3-1
old:
libaprutil1-ldap:
----------
new:
1.5.3-1
old:
php5:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-cli:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-common:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-json:
----------
new:
1.3.2-2build1
old:
php5-mhash:
----------
new:
1
old:
php5-mysql:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-readline:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
phpapi-20121212:
----------
new:
1
old:
ssl-cert:
----------
new:
1.0.33
old:
Summary for minion2
------------
Succeeded: 1 (changed = 1)
Failed: 0
------------
Total states run: 1
Total run time: 86.738 s
Bây giờ, bạn đã cài đặt các gói trong minion2.
Highstate
"Highstate" là một cách để Salt xác định công thức Salt nào nên được áp dụng cho một tay sai nhất định. Thực thi một “trạng thái cao” bằng lệnh sau.
root@saltmaster:/home/vagrant# salt <targets> state.highstate
top.sls
Khi minion yêu cầu thực thi highstate, như đã đề cập trước đó, minion yêu cầu top.sls từ Salt master và tìm kiếm các công thức mà nó khớp. Theo mặc định, tệp này được đặt tại /srv/salt/top.sls. Hãy để chúng tôi thêm công thức của chúng tôi vào tệp top.sls và đặt minion2 làm mục tiêu.
base:
'*':
- common
'minion2’:
- websetup
Bây giờ, thực hiện highstate nhắm mục tiêu minion2 như hình dưới đây.
root@saltmaster:/home/vagrant# salt 'minion2' state.highstate
Sau khi áp dụng điều này, bạn có thể thấy những điều sau output -
minion2:
----------
ID: common_packages
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 01:55:17.998824
Duration: 461.615 ms
Changes:
Summary for minion2
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 461.615 ms
Bây giờ, máy chủ web Apache và PHP đã được cài đặt trong minion2. Bằng cách này, chúng ta phải nhắm mục tiêu vào lính bằng cách sử dụng cả haitop.sls và highstate và cài đặt phần mềm cần thiết với công việc tối thiểu và tính linh hoạt tối đa.