Puppet là công cụ tự động hóa cấu hình, quản lý hệ thống qua mã nguồn, hỗ trợ đa nền tảng (Unix/Linux/Windows).
Yêu cầu hệ thống (System Requirements)
Yêu cầu | Mô tả | Ghi chú |
---|---|---|
Gói cài đặt | Cài puppet , puppet-common , puppetmaster |
Trên Ubuntu: sudo apt install puppet puppet-common puppetmaster |
Hệ điều hành | Unix/Linux hoặc Windows (chỉ hỗ trợ Agent, không có Puppetmaster trên Windows) | Khuyến nghị Linux cho Puppetmaster |
Thu thập thông tin hệ thống (System Facts)
Lệnh | Mô tả | Ví dụ đầu ra |
---|---|---|
facter |
Liệt kê tất cả thông tin hệ thống (facts) để dùng trong script Puppet | osfamily => Debian, memoryfree => 1.5 GB |
facter [fact] |
Lấy giá trị cụ thể của fact | facter hostname => server1 |
Thực thi script Puppet (Running Puppet Scripts)
Lệnh | Mô tả | Ghi chú |
---|---|---|
puppet apply install-java.pp |
Chạy script Puppet trong thư mục hiện tại | File phải có đuôi .pp |
sudo puppet apply --verbose install-java.pp |
Chạy với chi tiết đầu ra | Hữu ích để debug |
Script Puppet (PP Script Examples)
Định nghĩa đường dẫn mặc định (Default Path)
Exec {
path => [
"/bin/",
"/sbin/",
"/usr/bin/",
"/usr/sbin/"
]
}
Giải thích: Đặt đường dẫn hệ thống để Puppet tìm lệnh shell khi thực thi.
Chạy lệnh Shell (Execute Shell Commands)
exec { "install-stdlib":
command => "sudo puppet module install --force puppetlabs-stdlib",
path => "/usr/local/bin:/bin:/usr/bin",
}
Giải thích: Cài đặt module stdlib từ Puppetlabs.
Ghi log thông tin hệ thống (Log System Facts)
file { "/tmp/facts.yaml":
content => inline_template("<%= scope.to_hash.reject { |k,v| !(k.is_a?(String) && v.is_a?(String)) }.to_yaml %>"),
}
Giải thích: Lưu facts từ Facter vào file YAML để phân tích sau.
Cấu hình lớp (Class Configuration)
class { 'eclipse':
method => 'download',
release_name => 'kepler',
service_release => 'SR2',
ensure => 'present',
}
Giải thích: Gọi class Eclipse với các tham số để cài đặt phiên bản cụ thể.
Thiết lập Node
node 'default' {
include eclipse
notice { 'Well done!': }
}
Giải thích: Áp dụng class Eclipse cho node mặc định và hiển thị thông báo.
Cài đặt dịch vụ Tomcat
tomcat::instance { 'tomcat8':
catalina_base => '/opt/apache-tomcat/tomcat8',
source_url => 'http://mirror.nexcess.net/apache/tomcat/tomcat-8/v8.0.15/bin/apache-tomcat-8.0.15.tar.gz',
}
tomcat::service { 'default':
catalina_base => '/opt/apache-tomcat/tomcat8',
}
Giải thích: Tải và chạy Tomcat 8 làm dịch vụ.
Quản lý module (Module Management)
Lệnh | Mô tả | Ví dụ |
---|---|---|
puppet module list |
Liệt kê module đã cài | sudo puppet module list |
puppet module search java |
Tìm module liên quan đến Java | – |
puppet module uninstall puppetlabs-stdlib |
Gỡ module stdlib | – |
puppet module install puppetlabs-stdlib |
Cài module stdlib | Thêm --force để ghi đè |
puppet apply --modulepath ~/puppet-modules/modules/ script.pp |
Chạy script với đường dẫn module tùy chỉnh | – |
Xây dựng và cài đặt module (Building & Installing Modules)
Bước | Mô tả | Lệnh/Ví dụ |
---|---|---|
1 | Tạo file Modulefile trong thư mục module |
(Lưu ý: Bổ sung metadata.json ) |
2 | Build module từ thư mục cha | puppet module build [moduledir] |
3 | Cài module từ file build | puppet module install [moduledir]/pkg/[vendor]-[module]-[version].tar.gz --force |
4 | Kiểm tra module cục bộ | puppet apply test.pp |
5 | Tải lên Puppet Forge | Đăng nhập và dùng web upload |
Mẹo sử dụng
- Quyền root: Trên Ubuntu, luôn dùng
sudo
cho lệnh Puppet (ví dụ:sudo puppet module list
). - Debug: Thêm
--debug
hoặc--verbose
vàopuppet apply
. - Kiểm tra facts: Dùng
facter -p
để xem facts tùy chỉnh từ module.