Chuyển đến nội dung chính

ROLE, ENVIRONMENT TRONG CHEF LÀ GÌ VÀ CÁCH LÀM VIỆC CỦA CHÚNG.

Role là gì :
Ví dụ trong công ty bạn hạ tầng phát triển tới một mức có lưu lượng lớn, nhiều server và chúng thực thi một công việc cơ bản lặp đi lặp lại, và chúng có cùng cấu hình cơ bản và chúng ta gọi nó là “role”.

Environment là gì:
Như bạn đã biết trong quy trình làm phần mềm có nhiều  công đoạn như : dev, staging, QA, product, Environment là trạng thái môi trường của product của bạn, (stage of production). Mặc định môi trường là “_default”. Ví dụ: một môi trường có thể là “testing” có thể là “production” . Các môi trường này có code khác nhau và có thể có số lượng server khác nhau, tùy thuộc vào môi trường.
Cách dùng role:
1.    Tạo role sử dụng ruby DSL.
cd ~/chef-repo/roles
vi web_server.rb
có nội dung sau:
name "web_server"
description "A role to configure our front-line web servers"
run_list "recipe[apt]", "recipe[nginx]"
env_run_lists "production" => ["recipe[nginx::config_prod]"], "testing" => ["recipe[nginx::config_test]"]

trong file trên ta thấy: “config_prod” recipe chạy trong cookbook nginx trong môi trường “production”. Tuy nhiên, nếu node đó là “testing” thì recipe là config_test.
Bạn có thể dung attribute như ví dụ dưới:

name "web_server"
description "A role to configure our front-line web servers"
run_list "recipe[apt]", "recipe[nginx]"
env_run_lists "production" => ["recipe[nginx::config_prod]"], "testing" => ["recipe[nginx::config_test]"]
default_attributes "nginx" => { "log_location" => "/var/log/nginx.log" }
override_attributes "nginx" => { "gzip" => "on" }
2.     Tạo role sử dụng JSON file(cách này tôi hay dùng):
Knife role create test
{
  "name": "web_server",
  "description": "A role to configure our front-line web servers",
  "json_class": "Chef::Role",
  "default_attributes": {
    "nginx": {
      "log_location": "/var/log/nginx.log"
    }
  },
  "override_attributes": {
    "nginx": {
      "gzip": "on"
    }
  },
  "chef_type": "role",
  "run_list": [
    "recipe[apt]",
    "recipe[nginx]"
  ],
  "env_run_lists": {
    "production": [
      "recipe[nginx::config_prod]"
    ],
    "testing": [
      "recipe[nginx::config_test]"
    ]
  }
}
Upload json file này lên chef server dung lệnh sau:
knife role from file /path/file
Bạn muốn hiển thị role trên server và lưu chúng về máy dạng json dung:
knife role show web_server -Fjson > path/to/save/to

hiển thị các node :
knife node list
sau đó : knife node edit node_name
{
  "name": "client1",
  "chef_environment": "_default",
  "normal": {
    "tags": [

    ]
  },
  "run_list": [
    "role[web_server]"
  ]
}
Bạn them role [web_server] vào.
Đến đây bạn có thể bootstrap đệ tạo những server như bạn muốn.
Cách dùng environment:
Tương từ như cách tạo role , tạo environment cũng có 2 cách tạo là:
1.    Dùng ruby DSL (tạo trực tiếp file environments.rb.)
cd ~/chef-repo/environments
            vi development.rb
 name "development"
description "The master development branch"
cookbook_versions({
    "nginx" => "<= 1.1.0",
    "apt" => "= 0.0.1"
})
override_attributes ({
    "nginx" => {
        "listen" => [ "80", "443" ]
    },
    "mysql" => {
        "root_pass" => "root"
    }
})
Cách tạo theo dạng JSON :
Knife environment create development
Export EDITOR=vi
{
  "name": "development",
  "description": "The master development branch",
  "cookbook_versions": {
    "nginx": "<= 1.1.0",
    "apt": "= 0.0.1"
  },
  "json_class": "Cheff:Environment",
  "chef_type": "environment",
  "default_attributes": {
  },
  "override_attributes": {
    "nginx": {
      "listen": [
        "80",
        "443"
      ]
    },
    "mysql": {
      "root_pass": "root"
    }
  }
}
Sau đó bạn có thể upload lên chef server.
Set môi trường vào node:
knife node edit client1
{
  "name": "client1",
  "chef_environment": "_default",
  "normal": {
    "tags": [

    ]
  },
  "run_list": [
    "role[web_server]"
  ]
}
Sau đó bạn thay đổi biến:chef_environment như bạn mong muốn.


Nhận xét

Bài đăng phổ biến từ blog này

Cách sử dụng sys.argv trong python.

Cách sử dụng sys.argv trong python.

sys.argv là môt danh sách [list] trong python, nó được sư dụng khi bạn chạy một lệnh command-line nào đó trên hệ thống.
Và argument này được đẩy vào script python để thực thi khi chạy câu lệnh.

Ví dụ: python sys.argv arg1 arg2

Trước tiên bạn phải import mô đun sys trong script.



import sys print"This is the name of the script: ", sys.argv[0]print"Number of arguments: ", len(sys.argv)print"The arguments are: ", str(sys.argv)

Tên của script này : sysargv.py
Số lượng arg là : 1
Arg là : ['sysargv.py']


python test1020.py 111 This is the name of the script:  test1020.py
Number of arguments:  2
The arguments are:  ['test1020.py', '111']

Thiết kế một RESTful API bằng python và flask.

Như các bạn đã biết thì REST viết tắt bởi REpresentational State Transfer. Bạn có thể tham khảo thêm ở đây.

Vậy REST là gì:

Có 6 yếu tố của REST như sau:

1. Client-Server: phía server side phục vụ như một service còn phía client sẽ dùng service này.

2.Stateless:  Mỗi request từ client phải chứa tất cả các thông tin mà phía server yêu cầu phải có. Nói nôm na là mỗi request chứa các thông tin riêng rẽ không liên quan đến những request khác.

3. Cacheable : Phía server side phải cảnh báo chỉ ra cho client side biết là request đó có cache hay không.

4. Hệ thống phân lớp: Giao tiếp giữa server side và client side có thể thông qua lớp trung gian ở giữa để trả lời các request được gọi mà không cân phía client phải làm những động tác khác nữa.

5. Các cổng giao tiếp là giống nhau : Các phương thức giao tiếp giữa client và server là khuôn mẫu giống nhau.

6. Mã code linh động. Phía server có thể thực thi cho môt API gọi duy nhất mà không ảnh hưởng tới các API khác.

RESTful web service là gì :

Kiế…

Cài đặt docker trên windows server 2016.

1. Cài đặt Windows Server 2016 Container Feature:  Mở PowerShell : Cài đặt các container feature dùng powershell: Dùng lệnh: InstallWindowsFeature containers Restart lại windows: 2. Cài đặt windows server 2016 base image:  Cài đặt mô đun : ContainerImage Dùng lệnh: Install-PackageProvider ContainerImage -force List các image có giá trị: Cài đặt Windows Server Core : 3. Cài đặt docker trên windows server 2016. Download script để cài đặt docker : Chạy script : Kiểm tra các image có trên server :