preloader
  • Home
  • Quản lý cấu hình trên Cloud với AWS Opsworks

AWS OpsWorks

blog-thumb

1. Giới thiệu về AWS Opsworks

Trước khi DevOps trở thành một hot keyword hay hot job trên thị trường lao động, việc phát triển (development) và vận hành (operation) là hai việc tách lập nhau, được vận hành bởi các đội khác nhau. Và đặc biệt hơn, nếu không có các công nghệ điện toán đám mây (Cloud Computing), việc cấp phát (provision) máy chủ được thực hiện một cách … thủ công.

Việc cấp phát máy chủ kiểu này cũng ổn thỏa nếu không phải tạo các kiến trúc quá lớn, các việc lập lại. Ví dụ: Sẽ là thế nào nếu Sếp bạn yêu cầu tạo 100 môi trường Dev giống nhau? Việc này không thể làm bằng tay.

Việc tự động quá triển khai và tích hợp là một yêu cầu sống còn đối với IT. Từ đây DevOps ra đời.

AWS là cloud với kinh nghiệm lâu đời nhất, 10 năm liên tiếp dẫn đầu trong thị trường Cloud theo Gartner đánh giá offer rất nhiều dịch vụ hỗ trợ DevOps. Nếu nói đến dịch vụ gợi nhớ đầu tiên mọi người chắc đề đã nghĩ đến AWS CloudFormation, một dịch vụ rất nổi tiếng. Giúp bạn provision hầu hết các dịch vụ của AWS thông qua những dòng code, người ta gọi việc này là Infrastructure As Code (IaC). Thật là magic đúng không.

CloudFormation có thể là một công cụ giúp bạn thực hiện các hạ tầng ở bất kỳ scale nào trên AWS, bù lại bạn có thể phải học nhiều hơn chút để có thể sử dụng dịch vụ này, các bạn cần phải biết một chút về lập trình. Các định dạng của CloudFormation sẽ là JSON hoặc YAML. Không phải ai cũng master những thứ này dễ dàng trong một vài ngày.

AWS offer một dịch vụ ở giữa CloudFormation và DIY (Do It Yourself) đó chính là OpsWorks.

cloud.vn

AWS OpsWorks là một dịch vụ quản lý cấu hình cho phép chúng ta xây dựng và vận hành ứng dụng và có nhiều thay đổi thường xuyên.

AWS OpsWorks is a configuration management service that helps you build and operate highly dynamic applications, and propagate changes instantly.

2. OpsWorks Offer

AWS OpsWorks có 03 loại offers khi đi vào triển khai:

– AWS OpsWorks Stacks - dịch vụ quản lý máy chủ và ứng dụng (app & server). Đúng như bản chất tên gọi, AWS OpsWorks Stacks chia ứng dụng thành các layer như là: Load Balancing, Web App, và Database. Với mỗi layer bạn có thể provision, enable auto scaling, và cấu hình các instances với Chef Recipes thông qua Chef Solo (Chúng ta sẽ thảo luận sau các thuật ngữ mới này ở phần cuối bài). Cho phép bạn tự động hóa một số tác vụ ví dụ: cài đặt các gói phần mềm, thư viện, ngôn ngữ, framework, cấu hình phần mềm…

– AWS OpsWorks for Chef Automate - một dịch vụ fully managed service, host Chef Automate. Đây là một bộ các công cụ tự động đến từ Chef.IO với lợi ích chính là quản trị cấu hình, compliance và security, continuous deployment. OpsWorks sẽ maintain máy chủ Chef và tự động update, patching, và backing up máy chủ.

– AWS OpsWorks for Puppet Enterprise - Đây cũng là một dịch vụ fully managed service, host Puppet. Nhìn chung ý nghĩa khá giống với AWS OpsWorks for Chef Automate.

Chef Automate và Puppet là 02 công cụ phổ biến trong quản trị cấu hình (configuration manager). Việc sử dụng lựa chọn nền tảng nào phần lớn do kỹ năng mà team bạn đang có là gì. Theo quan điểm cá nhân thì cách viết Chef hướng đến đối tượng là developer hơn, còn Puppet cách viết hướng đến đối tượng là system engineer hơn. Hãy cùng xem chi tiết hơn ở phần dưới.

3. Puppet vs Chef

Đầu tiên ta cần định nghĩa configuration manager là gì?

Đó là một lớp quản lý phía bên trên (astraction layer) so với hạ tầng, cấu hình máy chủ. Ví dụ: để thay đổi địa chỉ IP của một máy chủ linux, bạn cần mở các file cấu hình /etc/network/interfaces và sử một cách thủ công. Với Configuration Management Service bạn có thể làm việc này dễ dàng, tự động.

Điểm chung của cả Puppet và Chef là sử dụng ngôn ngữ Ruby để viết. Nhưng bạn cũng ko cần phải quá master về Ruby mới có thể dùng chúng. Tuy nhiên để làm việc tốt có thể bạn nên tìm hiểu một chút về version control (Ví dụ GIT) để dễ dàng phối hợp với team.

Một vài ví dụ về Chef vs Puppet

Example #1 - Creating new directory

# Puppet
file { '/tmp/example'
 ensure => 'directory',
}
# Chefdirectory '/tmp/example'

Example #2 - Writing content to file

# Puppet
file { '/tmp/hello'
 ensure => 'present',
 content => "hello, world!",
}
# Chef
file '/tmp/hello' do
 content 'hello, world!'
end

Example #3 - Installing & Enabling Apache

# Puppet
class apache2 {
 # Package name differs between distributions.
 # Here we select appropriate one
 if $::osfamily == 'RedHat' {
   $apachename = 'httpd'
 } elseif $::osfamily == 'Debian' {
   $apachename = 'apache2'
 } else {
   print "This is not a supported distro."
 }

 package { 'apache'
   name => $apachename,
   ensure => 'present',
 }

 service { 'apache-service':
   name => $apachename,
   enable => true,
   ensure => 'running',
 }
}
# Chef
case node[:platform]
 when 'ubuntu', 'debian'
   # Update apt cache every 86400 seconds (that is once a day)
   apt_update 'Update the apt cache daily' do
     frequency 86_400
     action :periodic
   end

   apachename = 'apache2'
 when 'redhat', 'centos'
   apachename = 'httpd'
end

# Install 'apache2' package
package 'Install apache2' do
 package_name apachename
end

# Enable and start the service
service apachename do
 supports :status => true
 action [:enable, :start]
end

Về mặt giá cả thì AWS OpsWorks for Chef rẻ hơn AWS OpsWork for Puppet Enterprise một chút, bạn bị charge theo số lượng server agents kết nối đến Chef/Puppet server theo giờ (node hour). Cả hai đều có Free Tier cung cấp khoảng 10 nodes hàng tháng (tương đương 7500 node hours per month).

Bạn không phải trả upfront bất cứ phí nào với cả 03 options. Bạn sẽ phải trả cho các hạ tầng sinh ra bởi OpsWorks ví dụ như EC2, DB, LB.

4. Ansible

Trong thế giới configuration manager bạn còn có thể nghe đến một cái tên nữa là Ansible. Ansible được sử dụng cho cùng mục đích cấp phát tài nguyên, quản trị cấu hình, triển khai ứng dụng nhưng thường sử dụng cho các hạ tầng cần nhanh, cũng như đơn giản.

AWS OpsWorks hiện không hỗ trợ Ansible.

Khác biệt lớn nhất giữa Ansible và Puppet hay Chef

Puppet và Chef hoạt động theo mô hình client/server thông qua việc cài đặt một agent ở client thực hiện việc giám sát hay control. Ansible chỉ có master, kết nối với client thông qua SSH mà không cần một special setup.

Về điểm này thì Ansible nhanh hơn về mặt setup.

Với Chef sử dụng thuật ngữ cookbook, Puppet sử dụng thuật ngữ manifests, Ansible sử dụng thuật ngữ Playbooks.

Cơ chế hoạt động: – Chef, client sẽ pull từ server các phần configuration. Configuration này viết bằng Ruby DSL, bạn có thể cần một chút kỹ năng về lập trình để quản lý file này. – Ansible sử dụng YAML (Yet Another Markup Languages)

comments powered by Disqus