Thứ hai, 05/10/2015 | 00:00 GMT+7

saltstack-infrastructure-creating-salt-states-for-mysql-database-servers


Giới thiệu

SaltStack, hay Salt, là một hệ thống quản lý cấu hình và thực thi từ xa mạnh mẽ có thể được sử dụng để dễ dàng quản lý cơ sở hạ tầng theo cách có cấu trúc, có thể lặp lại. Trong loạt bài này, chúng tôi sẽ trình bày một phương pháp quản lý môi trường phát triển, dàn dựng và sản xuất của bạn từ việc triển khai Salt. Chúng tôi sẽ sử dụng hệ thống trạng thái Salt để viết và áp dụng các hành động có thể lặp lại. Điều này sẽ cho phép chúng tôi phá hủy bất kỳ môi trường nào của chúng tôi, an toàn khi biết rằng chúng tôi có thể dễ dàng đưa chúng trở lại trực tuyến ở trạng thái giống hệt nhau sau này.

Trong hướng dẫn cuối cùng của loạt bài này, chúng tôi thiết lập HAProxy làm công cụ cân bằng tải trước các máy chủ web của chúng tôi. Trong hướng dẫn này, chúng tôi sẽ thay đổi trọng tâm của mình để tạo các trạng thái sẽ cài đặt và quản lý máy chủ cơ sở dữ liệu MySQL của chúng tôi trong mỗi môi trường của chúng tôi. Bài viết này sẽ trình bày về cài đặt và thiết lập cơ bản của MySQL. Trong hướng dẫn trong tương lai, chúng tôi sẽ giải quyết nhiệm vụ phức tạp hơn là thiết lập sao chép.

Nhận thông tin nhắc nhở về MySQL với debconf-utils

Quá trình tạo trạng thái MySQL của chúng tôi sẽ phức tạp hơn một chút so với các ví dụ trước đây của chúng tôi với Nginx và MySQL. Không giống như hai bước cài đặt khác, cài đặt MySQL thường liên quan đến việc trả lời một tập hợp các lời nhắc để đặt mật khẩu gốc MySQL.

Trước khi bắt đầu với tệp trạng thái của mình, chúng ta nên thực hiện cài đặt thử nghiệm MySQL trên một trong các tay sai của mình. Sau đó, chúng tôi có thể sử dụng gói debconf-utils để nhận thông tin về các lời nhắc mà chúng tôi sẽ cần điền vào.

Nếu bạn chưa có sẵn môi trường dàn dựng của mình, bạn có thể sử dụng tệp bản đồ môi trường dàn dựng mà chúng tôi đã tạo trước đây để tạo ra môi trường:

  • sudo salt-cloud -P -m /etc/salt/cloud.maps.d/stage-environment.map

Sau khi máy chủ cơ sở dữ liệu của bạn hoạt động và khả dụng, hãy chọn một trong các máy chủ cơ sở dữ liệu của bạn để cài đặt MySQL để chúng tôi có thể lấy thông tin liên quan từ việc cài đặt:

  • sudo salt stage-db1 pkg.install mysql-server

Để dễ dàng truy vấn cơ sở dữ liệu debconf để biết thông tin nhanh chóng mà chúng ta cần, chúng ta cũng nên cài đặt gói debconf-utils trên minion cơ sở dữ liệu:

  • sudo salt stage-db1 pkg.install debconf-utils

Chức năng debconf trong Salt sẽ khả dụng ngay bây giờ khi gói này được cài đặt. Chúng ta có thể sử dụng chức năng mô-đun thực thi debconf.get_selections để lấy tất cả thông tin nhắc từ cơ sở dữ liệu minion. Chúng ta nên chia less điều này vì điều này sẽ trả về tất cả thông tin từ các gói được cài đặt trên máy chủ đó:

  • sudo salt stage-db1 debconf.get_selections | less

Trong đầu ra, hãy tìm phần liên quan đến MySQL. Nó sẽ trông giống như sau:

Output
. . .

mysql-server-5.5:
    |_
      - mysql-server/root_password
      - password
    |_
      - mysql-server/root_password_again
      - password
    |_
      - mysql-server-5.5/really_downgrade
      - boolean
      - false
    |_
      - mysql-server-5.5/start_on_boot
      - boolean
      - true

. . .

Hai mục trên cùng chứa các tên trường mà chúng ta cần ( mysql-server/root_passwordmysql-server/root_password_again ). Dòng thứ hai của các mục này chỉ định loại trường mà chúng ta sẽ cần chỉ định trong tệp trạng thái của mình.

Khi bạn đã sao chép thông tin này từ đầu ra debconf , chúng ta cũng nên tiếp tục và lấy tệp /etc/mysql/my.cnf . Chúng tôi sẽ cần điều này sau khi chúng tôi định cấu hình các trạng thái MySQL của mình:

  • sudo salt stage-db1 cp.push /etc/mysql/my.cnf

Sau khi đẩy tệp /etc/mysql/my.cnf trở lại Salt master, chúng tôi có thể xóa tài nguyên để chúng tôi có một phương tiện chặn sạch sẽ để kiểm tra sau trong hướng dẫn:

  • sudo salt-cloud -d stage-db1

Sau khi máy chủ bị xóa, bạn có thể tạo lại nó trong nền bằng cách nhập như sau. sm trong trường hợp này là tên của máy chủ chính Salt của chúng tôi, máy chủ này có thông tin đăng nhập đám mây thích hợp:

  • sudo salt --async sm cloud.profile stage-db stage-db1

Trong khi máy chủ cơ sở dữ liệu của bạn đang xây dựng lại, chúng tôi có thể bắt đầu xây dựng tệp trạng thái MySQL.

Tạo tệp trạng thái MySQL chính

Chúng tôi sẽ bắt đầu bằng cách tạo một thư mục cho trạng thái MySQL của chúng tôi trong thư mục /srv/salt :

  • sudo mkdir -p /srv/salt/mysql

Trong thư mục này, chúng ta có thể tạo và mở tệp init.sls để lưu trữ tệp trạng thái MySQL chính của chúng ta:

  • sudo nano /srv/salt/mysql/init.sls

Chúng tôi sẽ cần đảm bảo rằng gói debconf-utils được cài đặt trên minion để dễ dàng đặt các giá trị chúng tôi cần. Chúng tôi có thể làm điều này với mô-đun trạng thái pkg.installed :

/srv/salt/mysql/init.sls
debconf-utils:
  pkg.installed

Sau khi gói debconf-utils được cài đặt, chúng ta có thể gieo trước câu trả lời cho lời nhắc bằng mô-đun trạng thái debconf.set . Chúng tôi sẽ sử dụng thuộc tính name để chỉ định tên gói mà chúng tôi muốn đặt lời nhắc. Sau đó, chúng tôi tạo một cấu trúc data chứa từ điển thông tin có thể được sử dụng để điền vào các lời nhắc.

Cấu trúc data về cơ bản sử dụng thông tin về lời nhắc mà chúng tôi đã truy vấn từ cài đặt MySQL thử nghiệm của chúng tôi. Chúng tôi biết tên trường và kiểu dữ liệu sẽ được sử dụng cho các trường này. Để chỉ định mật khẩu thực sự, chúng tôi sẽ lấy từ hệ thống cột muối với chức năng mô-đun thực thi pillar.get .

Chút nữa chúng ta sẽ thiết lập mật khẩu trong hệ thống trụ. Điều này sẽ cho phép chúng tôi giữ dữ liệu mật khẩu riêng biệt với cấu hình của chúng tôi.

 

Ghi chú
Hãy chú ý đến phần thụt lề của từ điển được lưu trữ trong data . Toàn bộ khối được thụt vào thêm bốn dấu cách thay vì thụt vào hai dấu cách điển hình. Điều này xảy ra khi một từ điển được nhúng trong danh sách YAML. Bạn có thể tìm hiểu thêm bằng cách truy cập liên kết này .

 

/srv/salt/mysql/init.sls
debconf-utils:
  pkg.installed

mysql_setup:
  debconf.set:
    - name: mysql-server
    - data:
        'mysql-server/root_password': {'type': 'password', 'value': '{{ salt['pillar.get']('mysql:root_pw', '') }}' }
        'mysql-server/root_password_again': {'type': 'password', 'value': '{{ salt['pillar.get']('mysql:root_pw', '') }}' }
    - require:
      - pkg: debconf-utils

Để thực sự tương tác với MySQL, các thư viện Python thích hợp phải có sẵn trên các máy chủ cơ sở dữ liệu. Chúng tôi có thể cài đặt gói ptyhon-mysqldb để đảm bảo rằng chúng tôi có quyền truy cập vào các khả năng MySQL của Salt. Sau đó, chúng ta có thể cài đặt phần mềm máy chủ MySQL thực tế một cách an toàn. Chúng tôi sẽ sử dụng require để đảm bảo rằng debconf và các thư viện Python đều có sẵn.

Sau khi cài đặt, chúng ta có thể thêm trạng thái dịch vụ để đảm bảo rằng dịch vụ đang chạy. Điều này sẽ theo dõi các thay đổi trong gói máy chủ MySQL. Nó cũng sẽ xem tệp cấu hình MySQL cơ bản và sẽ tải lại dịch vụ nếu phát hiện thấy các thay đổi:

/srv/salt/mysql/init.sls
debconf-utils:
  pkg.installed

mysql_setup:
  debconf.set:
    - name: mysql-server
    - data:
        'mysql-server/root_password': {'type': 'password', 'value': '{{ salt['pillar.get']('mysql:root_pw', '') }}' }
        'mysql-server/root_password_again': {'type': 'password', 'value': '{{ salt['pillar.get']('mysql:root_pw', '') }}' }
    - require:
      - pkg: debconf-utils

python-mysqldb:
  pkg.installed

mysql-server:
  pkg.installed:
    - require:
      - debconf: mysql-server
      - pkg: python-mysqldb

mysql:
  service.running:
    - watch:
      - pkg: mysql-server
      - file: /etc/mysql/my.cnf

Có một vài tệp mà chúng ta sẽ cần quản lý bằng MySQL. Tệp rõ ràng nhất mà chúng ta cần quản lý là tệp /etc/mysql/my.cnf mà chúng tôi đã đề cập ở trên. Chúng tôi sẽ cần thực hiện một số thay đổi dựa trên thông tin biến, vì vậy tệp này sẽ phải là mẫu Jinja.

Các tệp khác mà chúng ta cần quản lý liên quan đến việc quản lý hệ thống MySQL của Salt. Để quản lý cơ sở dữ liệu, Salt minion phải có thông tin về cách kết nối với RDBMS. Đầu tiên, chúng ta có thể tạo một tệp đơn giản trong thư mục /etc/salt/minion.d . Điều này sẽ chỉ đơn giản là liệt kê tệp nơi có thể tìm thấy chi tiết kết nối của chúng tôi. Tệp có chi tiết kết nối cơ sở dữ liệu là tệp khác mà chúng tôi sẽ cần quản lý. Tệp kết nối cơ sở dữ liệu sẽ cần phải là một mẫu:

/srv/salt/mysql/init.sls
. . .

mysql:
  service.running:
    - watch:
      - pkg: mysql-server
      - file: /etc/mysql/my.cnf

/etc/mysql/my.cnf:
  file.managed:
    - source: salt://mysql/files/etc/mysql/my.cnf.jinja
    - template: jinja
    - user: root
    - group: root
    - mode: 640
    - require:
      - pkg: mysql-server

/etc/salt/minion.d/mysql.conf:
  file.managed:
    - source: salt://mysql/files/etc/salt/minion.d/mysql.conf
    - user: root
    - group: root
    - mode: 640
    - require:
      - service: mysql

/etc/mysql/salt.cnf:
  file.managed:
    - source: salt://mysql/files/etc/mysql/salt.cnf.jinja
    - template: jinja
    - user: root
    - group: root
    - mode: 640
    - require:
      - service: mysql

Cuối cùng, chúng ta cần bao gồm một trạng thái service.restart sẽ tải lại chính quá trình salt-minion . Điều này là cần thiết để tay sai của chúng ta nhận tệp /etc/salt/minion.d/mysql.conf . Chúng tôi chỉ muốn salt-minion được khởi động lại khi có các thay đổi đối với chính tệp /etc/salt/minion.d/mysql.conf . Chúng ta có thể sử dụng một watch cần thiết để thực hiện điều đó:

/srv/salt/mysql/init.sls
. . .

/etc/mysql/salt.cnf:
  file.managed:
    - source: salt://mysql/files/etc/mysql/salt.cnf.jinja
    - template: jinja
    - user: root
    - group: root
    - mode: 640
    - require:
      - service: mysql

restart_minion_for_mysql:
  service.running:
    - name: salt-minion
    - watch:
      - file: /etc/salt/minion.d/mysql.conf

Khi bạn hoàn tất việc thêm các chi tiết ở trên, hãy lưu và đóng tệp.

Tạo các trụ cột cho MySQL

Trong trạng thái MySQL của chúng tôi, chúng tôi đã sử dụng hàm mô-đun thực thi pillar.get để điền mật khẩu gốc MySQL với một giá trị từ hệ thống trụ cột. Chúng ta cần thiết lập trụ cột này để trạng thái có thể lấy dữ liệu cần thiết để xây dựng thông tin xác thực cơ sở dữ liệu.

Hệ thống trụ cột là hoàn hảo cho loại trường hợp sử dụng này vì nó cho phép bạn gán dữ liệu cho các máy chủ nhất định. Máy chủ không khớp sẽ không có quyền truy cập vào dữ liệu nhạy cảm. Cho đến nay, bang của chúng tôi chỉ cần mật khẩu gốc. Chúng tôi đã chỉ định vị trí trong hệ thống trụ cột là mysql:root_pw . Bây giờ chúng ta sẽ thiết lập khóa đó.

Tạo một tệp hàng đầu cho hệ thống trụ cột

Trước khi tạo các tệp trụ cột MySQL mà chúng ta cần, chúng ta cần tạo một tệp trụ cột “trên cùng”. Tệp trên cùng được sử dụng để khớp các tay sai của Salt với dữ liệu trụ cột. Những tay sai của Salt sẽ không thể truy cập vào bất kỳ dữ liệu trụ cột nào mà chúng không khớp trong tệp trên cùng.

Thư mục /srv/pillar nên được tạo trong quá trình cài đặt. Chúng ta có thể tạo tệp top.sls trong thư mục này để bắt đầu:

  • cd /srv/pillar
  • sudo nano top.sls

Bên trong, chúng tôi cần chỉ định môi trường base (chúng tôi không sử dụng quan niệm của Salt về các môi trường trong loạt bài này do sự phức tạp và một số hành vi không có giấy tờ. Tất cả các máy chủ của chúng tôi hoạt động trong môi trường base và sử dụng ngũ cốc để chỉ định môi trường). Chúng tôi sẽ sử dụng kết hợp phức hợp để so khớp các nút. Chúng tôi sẽ so khớp vai trò máy chủ và môi trường máy chủ để xác định trụ cột nào cần gán cho mỗi máy chủ.

Các trụ cột sử dụng ký hiệu dấu chấm để biểu thị các tệp trong một thư mục. Ví dụ, gốc của hệ thống trụ cột là /srv/pillar . Để gán cột mysql.sls nằm trong thư mục dev , chúng tôi sử dụng dev.mysql .

Bài tập chúng tôi sẽ cần cho hướng dẫn này trông giống như sau:

/srv/pillar/top.sls
base:
  'G@env:dev and G@role:dbserver':
    - match: compound
    - dev.mysql

  'G@env:stage and G@role:dbserver':
    - match: compound
    - stage.mysql

  'G@env:prod and G@role:dbserver':
    - match: compound
    - prod.mysql

Lưu và đóng tệp khi bạn hoàn tất.

Tạo các trụ cột dành riêng cho môi trường

Ở trên, chúng tôi đã chỉ định các trụ cột cho các máy chủ dựa trên vai trò và môi trường. Điều này cho phép chúng tôi chỉ định kết nối và thông tin xác thực khác nhau cho các môi trường khác nhau.

Bắt đầu bằng cách tạo các thư mục được tham chiếu trong tệp trên cùng của trụ cột:

  • sudo mkdir /srv/pillar/{prod,stage,dev}

Tiếp theo, chúng ta nên tạo một tệp myslq.sls trong mỗi thư mục này. Chúng tôi có thể bắt đầu với tệp /srv/salt/stage/mysql.sls , vì chúng tôi hiện đang sử dụng môi trường dàn để kiểm tra:

  • sudo nano /srv/pillar/stage/mysql.sls

Tệp trạng thái mà chúng tôi đã tạo muốn lấy mật khẩu gốc MySQL từ hệ thống trụ cột bằng cách sử dụng khóa mysql:root_pw . Đây thực sự là một khóa lồng nhau, nghĩa là root_pw là con của khóa mysql . Với ý nghĩ này, chúng tôi có thể chọn mật khẩu cho người dùng gốc MySQL của mình và đặt nó trong tệp như sau:

/srv/pillar/stage/mysql.sls
mysql:
  root_pw: staging_mysql_root_pass

Chọn bất kỳ mật khẩu nào bạn muốn sử dụng. Khi bạn hoàn tất, hãy lưu và đóng tệp. Đây là tất cả những gì chúng ta cần lúc này.

Tạo một tệp tương tự trong trụ cột phát triển của bạn:

  • sudo nano /srv/pillar/dev/mysql.sls
/srv/pillar/dev/mysql.sls
mysql:
  root_pw: development_mysql_root_pass

Làm tương tự cho trụ cột môi trường sản xuất của bạn:

  • sudo nano /srv/pillar/prod/mysql.sls
/srv/pillar/prod/mysql.sls
mysql:
  root_pw: production_mysql_root_pass

Chọn các mật khẩu khác nhau cho từng môi trường này.

Chúng tôi sẽ quay lại các trụ cột này sau vì chúng tôi cần thêm dữ liệu không thuộc về chính cấu hình. Hiện tại, hãy lưu và đóng mọi tệp đang mở.

Tạo Mẫu /etc/mysql/my.cnf.jinja

Chúng tôi đã tạo tệp trạng thái MySQL cơ bản của mình trước đó, nhưng chúng tôi chưa bao giờ tạo tệp được quản lý để cài đặt.

Khi chúng tôi thực hiện cài đặt thử nghiệm mysql-server trên mysql-server stage-db1 của chúng tôi trước đó, chúng tôi đã đẩy tệp /etc/mysql/my.cnf trở lại tệp chính. Điều đó sẽ vẫn có sẵn trong bộ nhớ cache chính của Salt của chúng tôi. Chúng tôi có thể sao chép toàn bộ cấu trúc thư mục dẫn đến tệp bộ đệm ẩn đó vào thư mục /srv/salt/mysql của chúng tôi bằng cách gõ:

  • sudo cp -r /var/cache/salt/master/minions/stage-db1/files /srv/salt/mysql

Đi tới thư mục chứa tệp mycnf sao chép trong thư mục trạng thái MySQL:

  • cd /srv/salt/mysql/files/etc/mysql

Sao chép tệp vì nó hiện đang tồn tại sang hậu tố .orig để chúng tôi có thể hoàn nguyên các thay đổi nếu cần:

  • sudo cp my.cnf my.cnf.orig

Tiếp theo, đổi tên tệp my.cnf để có hậu tố .jinja . Trong nháy mắt, điều này sẽ cho chúng tôi biết rằng tệp này là một mẫu, không phải là một tệp có thể được đưa vào máy chủ lưu trữ mà không cần hiển thị:

  • sudo mv my.cnf my.cnf.jinja

Mở tệp mẫu Jinja để bắt đầu với các chỉnh sửa cần thiết:

  • sudo nano my.cnf.jinja

Tất cả những thay đổi mà chúng tôi muốn tạo bây giờ phải thực hiện với việc cho phép kết nối MySQL từ xa. Như hiện tại, MySQL liên kết với giao diện loopback cục bộ. Chúng tôi muốn thiết lập điều này để lắng nghe trên địa chỉ mạng riêng của nút.

Để thực hiện việc này, hãy tìm dòng bind-address trong phần [mysqld] . Chúng tôi sẽ sử dụng chức năng mô-đun thực thi network.interface_ip để lấy địa chỉ được gán cho giao diện eth1 của minion.

/srv/salt/mysql/files/etc/mysql/my.cnf.jinja
. . .

[mysqld]

. . .

bind-address            = {{ salt['network.interface_ip']('eth1') }}

Một bổ sung khác mà chúng tôi cần thực hiện là tắt phân giải tên DNS cho các máy chủ của chúng tôi. Bằng cách thêm tùy chọn skip-name-resolve , MySQL sẽ không bị lỗi nếu nó không thể hoàn thành việc phân giải tên và tên đảo ngược:

/srv/salt/mysql/files/etc/mysql/my.cnf.jinja
. . .

[mysqld]

. . .

bind-address            = {{ salt['network.interface_ip']('eth1') }}
skip-name-resolve

Lưu và đóng tệp khi bạn hoàn tất.

Tạo tệp /etc/salt/minion.d/mysql.conf

Tiếp theo, chúng ta cần tạo tệp được quản lý được sử dụng để sửa đổi cấu hình của minion với kiến thức về cách kết nối với cơ sở dữ liệu MySQL. Thay vì giữ cấu hình trong chính tệp /etc/salt/minion , chúng ta sẽ đặt một tệp mới vào thư mục /etc/salt/minion.d cho minion biết nơi tìm thông tin kết nối.

Bắt đầu bằng cách tạo cấu trúc thư mục cần thiết trong thư mục /srv/salt/mysql/files :

  • sudo mkdir -p /srv/salt/mysql/files/etc/salt/minion.d

Chúng ta có thể tạo một tệp trong thư mục này có tên là mysql.conf :

  • sudo nano /srv/salt/mysql/files/etc/salt/minion.d/mysql.conf

Bên trong, chúng ta chỉ cần đặt một tùy chọn: vị trí của tệp thông tin kết nối. Trong trường hợp của chúng tôi, chúng tôi sẽ đặt tệp này thành tệp tại /etc/mysql/salt.cnf :

/srv/salt/mysql/files/etc/salt/minion.d/mysql.conf
mysql.default_file: '/etc/mysql/salt.cnf'

Lưu và đóng tệp khi bạn hoàn tất.

Tạo Tệp Mẫu /etc/mysql/salt.cnf

Bây giờ, chúng ta cần tạo tệp mà cấu hình minion của chúng ta đã tham chiếu. Đây sẽ là tệp mẫu vì chúng ta cần lấy một số chi tiết kết nối từ hệ thống trụ cột. Chúng tôi sẽ đặt tệp này trong thư mục /srv/salt/mysql/files/etc/mysql :

  • sudo nano /srv/salt/mysql/files/etc/mysql/salt.cnf.jinja

Bên trong, chúng ta cần mở phần [client] để chỉ định loại thông tin mà chúng ta đang xác định. Bên dưới tiêu đề này, chúng tôi có thể chỉ định cho máy khách kết nối với máy cục bộ với người dùng gốc MySQL tại ổ cắm Unix nằm tại /var/run/mysqld/mysqld.sock . Đây là tất cả các giá trị MySQL mặc định:

/srv/salt/mysql/files/etc/mysql/salt.cnf.jinja
[client]
host                = localhost
user                = root
socket              = /var/run/mysqld/mysqld.sock

Điều duy nhất chúng ta cần thêm bây giờ là mật khẩu. Một lần nữa, chúng ta sẽ lấy nó trực tiếp từ hệ thống trụ cột giống như cách chúng ta đã làm trong phần debconf của tệp trạng thái MySQL của chúng ta. Nó sẽ trông giống như sau:

/srv/salt/mysql/files/etc/mysql/salt.cnf.jinja
[client]
host                = localhost
user                = root
socket              = /var/run/mysqld/mysqld.sock
password            = {{ salt['pillar.get']('mysql:root_pw', '') }}

Lưu và đóng tệp khi bạn hoàn tất.

Cài đặt thử nghiệm và kiểm tra tình trạng

Bây giờ chúng ta có trạng thái cài đặt cơ bản và các tệp hỗ trợ được định cấu hình, chúng ta nên nhanh chóng kiểm tra thiết lập của mình để đảm bảo rằng nó đang hoạt động chính xác.

Chúng tôi sẽ bắt đầu bằng cách trải qua quá trình thử nghiệm điển hình của chúng tôi. Sử dụng hàm mô-đun thực thi state.show_sls để đảm bảo rằng nó có thể hiển thị tệp trạng thái của bạn:

  • sudo salt stage-db1 state.show_sls mysql

Xem qua kết quả đầu ra để đảm bảo rằng Salt không có vấn đề gì khi phân tích cú pháp tệp /srv/salt/mysql/init.sls của bạn.

Tiếp theo, chạy khô ứng dụng trạng thái bằng cách thêm test=True vào cuối chức năng mô-đun thực thi state.apply :

  • sudo salt stage-db1 state.apply mysql test=True

Lệnh này dự kiến sẽ không thành công . Bởi vì một số chức năng trạng thái trong tệp của chúng tôi không khả dụng cho đến sau khi các gói cụ thể được cài đặt, dự kiến sẽ xảy ra lỗi trong quá trình chạy khô. Trong quá trình chạy thực tế, thứ tự trạng thái sẽ đảm bảo rằng các gói điều kiện tiên quyết được cài đặt trước khi các trạng thái sử dụng chúng được gọi.

Tất cả các nhận xét cho trạng thái không thành công phải chỉ ra rằng "một hoặc nhiều điều kiện tiên quyết không thành công" ngoại trừ trạng thái mysql_setup , trạng thái này sẽ thất bại do debconf.set không khả dụng (đây chỉ là một lỗi tiên quyết khác). Sử dụng đầu ra ở đây để đảm bảo rằng không có lỗi không liên quan nào khác xuất hiện.

Sau khi chạy thử nghiệm, chúng tôi có thể áp dụng trạng thái bằng cách nhập:

  • sudo salt stage-db1 state.apply mysql

Điều này sẽ dẫn đến một trạng thái chạy thành công.

Chúng tôi cần kiểm tra xem Salt có thể kết nối và truy vấn cơ sở dữ liệu MySQL hay không. Đảm bảo rằng bạn có thể liệt kê các cơ sở dữ liệu mặc định bằng cách nhập:

  • sudo salt stage-db1 mysql.db_list

Bạn sẽ nhận được một danh sách trông giống như sau:

Output
stage-db1:
    - information_schema
    - mysql
    - performance_schema

Điều này cho thấy rằng Salt có thể kết nối với phiên bản MySQL bằng cách sử dụng thông tin được chỉ định trong tệp /etc/mysql/salt.cnf .

Bây giờ chúng tôi đã xác minh rằng trạng thái MySQL cơ sở của chúng tôi hoạt động chính xác, chúng tôi có thể xóa máy chủ stage-db1 :

  • sudo salt-cloud -d stage-db1

Tạo lại máy chủ trong nền để chúng tôi có nó để kiểm tra thêm sau này. Một lần nữa, sm là tên của máy chủ chính Salt của chúng tôi trong trường hợp này:

  • sudo salt --async sm cloud.profile stage-db stage-db1

Bây giờ, thiết lập MySQL cơ bản của chúng tôi đã hoàn tất.

Phần kết luận

Bây giờ bạn sẽ có các trạng thái sẽ cài đặt MySQL trên tay sai của bạn. Những điều này cũng sẽ khởi động quá trình salt-minion trên mỗi máy chủ này để Salt có thể kết nối và quản lý các cơ sở dữ liệu liên quan.

Trong khi các trạng thái hiện tại của chúng tôi cài đặt MySQL và định cấu hình các tay sai của chúng tôi để kiểm soát hệ thống cơ sở dữ liệu, thì hiện tại các cơ sở dữ liệu của chúng tôi hoàn toàn riêng biệt. Trong hướng dẫn trong tương lai, chúng tôi sẽ giải quyết sao chép cơ sở dữ liệu MySQL để dữ liệu của chúng tôi nhất quán trên mỗi cơ sở dữ liệu của chúng tôi trong mỗi môi trường.


Tags:

Các tin trước

Sử dụng UFW căn bản, các luật firewall phổ biến 2015-08-20

Nâng cấp lên Mysql 5.7 2015-04-20

Cấu hình xác thực bằng ssh-key trên server Linux 2014-10-20

Toàn tập làm việc với Openssl và chứng chỉ số 2014-09-12

Cài đặt Nginx trên CentOS 7 2014-07-22

Cài đặt Linux Apache MySQL PHP (LAMP) On CentOS 7 2014-07-21

Cài đặt Bảo mật cơ bản cho CentOS 7 2014-07-21

Cài đặt và sử dụng yum repositories trên Centos-6 vps 2013-10-01

Sử dụng SSH để kết nối tới Remote Server trong Ubuntu 2013-09-10

Backup postgresql databases trên Ubuntu vps 2013-08-28