Làm cách nào để sao chép tập tin vào tất cả các máy bằng cách sử dụng con rối?


12

Tôi đã cài đặt con rối trong ubfox 11.04 và tôi đã cài đặt con rối trong tất cả các máy khách của mình. Tôi đã tham gia tất cả các khách hàng bù nhìn của tôi với bậc thầy bù nhìn. Có thể sao chép một tập tin cho tất cả các khách hàng bù nhìn từ chủ rối?

Ví dụ:

Tôi có tệp có tên data.xls trong Desktop (Puppet Master). Làm cách nào để sao chép tệp này vào tất cả các máy khách con rối của tôi ở vị trí sau (/ home / toán tử1 / Máy tính để bàn / Sao lưu /)?

Cập nhật:

  • Hi vẫn là tập tin không được chia sẻ.
  • Làm thế nào để sửa đổi dòng này puppet:///modules/module_name/datas.xlstập tin sẽ được sao chép dưới vị trí này /etc/puppet/modules/mymodule/manifests/datas.xls?

Lỗi trên Client: (Đã giải quyết)

root@testing:~# puppetd --test 
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class sudo at /etc/puppet/manifests/site.pp:2 on node testing.chn.jd.com
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

Lỗi 2 trên Máy khách:

root@tme13:~# puppetd --test
err: Could not run Puppet configuration client: Could not retrieve local facts: bad URI(is not URI?): http://169.254.169.254/2008-02-01/meta-data/<HTML><HEAD><TITLE>HTTP access denied</TITLE></HEAD><BODY><img src/

Cập nhật mới:

Làm thế nào để áp dụng mô-đun này cho tất cả các nút? Như vậy tập tin sẽ được sao chép vào tất cả các nút.


... nhưng bạn đã không hỏi câu hỏi này chưa? Askubfox.com/questions/61080/ trộm
fossfreedom

Có nhưng giải pháp không hoạt động nữa.
karthick87

Ngoài ra nó không rõ ràng lắm, người dùng chỉ cần sao chép nội dung từ một số trang web.
karthick87

Vẫn không phải là một lý do để đưa ra một câu hỏi mới (?) Tôi đã sao chép câu hỏi đó từ một liên kết mà Jorge đưa cho tôi và anh ấy bảo tôi c / p nó;) afaik câu trả lời trong câu trả lời đó vẫn hoạt động!?
Rinzwind

đây là một tài liệu tham khảo khác: serverfault.com/questions/200101/
Mạnh

Câu trả lời:


24

Con rối là một con quái vật để có được đầu óc của bạn, vì vậy học tập bằng ví dụ không phải là điều xấu. Trong phần bên dưới, tôi giả sử bạn đang sử dụng các mô-đun - vui lòng nói trong một nhận xét nếu bạn không hoặc nếu bạn cần thêm chi tiết về cách đặt mô-đun lại với nhau.

Giả sử bạn bắt đầu một mô-đun mới được gọi là mymodule. Trong thư mục con rối nhà (thường /etc/puppet) trên con rối chủ, bạn nên tạo tệp kê khai mô-đun và thư mục tệp:

mkdir -p modules/mymodule/manifests
mkdir -p modules/mymodule/files

Sau đó tạo một tệp trong thư mục đó có tên init.ppvà nhập:

class myfile {
    file { '/home/operator1/Desktop/Backup':
        ensure => directory,
        mode => '0755',
        owner => 'operator1',
        group => 'operator1',
    }

    file { "/home/operator1/Desktop/Backup/datas.xls":
        mode => "0644",
        owner => 'operator1',
        group => 'operator1',
        source => 'puppet:///modules/module_name/datas.xls',
    }
}

Sau đó đặt datas.xlstệp vào filesthư mục của mô-đun - trong ví dụ này trong modules/mymodule/files/. (Lưu ý cũng có thể có một templatesthư mục cho các mẫu ).

Trong manifests/site.pptệp bạn cần nhập mô-đun và bao gồm lớp bằng cách thực hiện một số thứ như:

import 'mymodule'

node base {
    include myfile
}

node server1 inherits base {}
node server2 inherits base {
    # extra config here
}

Đảm bảo rằng tất cả các nút của bạn kế thừa từ cơ sở và đó phải là tất cả những gì bạn cần làm. Kể từ con rối 0,25, bạn có thể sử dụng các biểu thức chính quy trong tên nút, ví dụ:

node server[0-9] inherits base {}

Hãy cho tôi biết trong các ý kiến ​​nếu bạn yêu cầu làm rõ thêm.

Thiết lập một khách hàng để nói chuyện với bậc thầy bù nhìn

Trên máy khách, bạn cần làm:

sudo apt-get install puppet

Sau đó chỉnh sửa /etc/default/puppetvà thay đổi START=nothành START=yes.

Đồng thời chỉnh sửa /etc/puppet/puppet.confvà thêm một dòng vào [main]phần để cho nó biết nơi tìm chủ nhân bù nhìn:

server=puppet.mydomain.com

Sau đó chúng ta có thể thực hiện chạy thử với sudo puppetd --test. Nếu bạn gặp lỗi chính, bạn có thể cần phải truy cập vào máy chủ chính rối và ký vào khóa máy khách. Để kiểm tra tên chính xác bạn có thể làm sudo puppetca --listvà sau đó sudo puppetca --sign server1.mydomain.com(hoặc bất cứ tên máy chủ nào từ lệnh danh sách).

Bây giờ bắt đầu dịch vụ con rối với sudo service puppet startvà bạn nên đi. Dịch vụ con rối sẽ chạy mỗi giờ, vì vậy nếu bạn cập nhật công thức nấu ăn cho con rối thì tất cả khách hàng của bạn cũng sẽ được cập nhật.

Xóa tập tin

Tôi lưu ý trong câu hỏi ban đầu bạn muốn biết cách xóa tập tin. Bạn sẽ chỉnh sửa manifests/init.ppthành

file { "/home/operator1/Desktop/Backup/datas.xls":
    ensure => absent,
}

Lời khuyên hữu ích khác

Nếu bạn gặp khó khăn, có một vài điều bạn có thể làm. Trên bất kỳ máy nào có cài đặt con rối, bạn có thể kiểm tra cú pháp của mình bằng cách chạy

puppet --parseonly --ignoreimport myfile.pp

hoặc kiểm tra toàn bộ lô bằng cách lấy --ignoreimportcờ ra, mặc dù điều đó có thể dẫn đến một số thông báo lỗi không thực sự là lỗi tôi đã tìm thấy. Bạn cũng có thể chạy rối trực tiếp trên máy khách rối bằng cách thực hiện:

sudo puppetd --test

trong đó hiển thị đầu ra hữu ích khác nhau, với các lỗi và cảnh báo được tô sáng bằng các màu khác nhau. Nếu bạn muốn biết thêm chi tiết, bạn có thể chạy:

sudo puppetd --test --debug

nhưng điều đó thường tạo ra rất nhiều đầu ra mà khó có thể lội qua, vì vậy chỉ làm điều đó nếu bạn đã thử các bước trước đó và bị mắc kẹt và cần phải xem mọi thứ đã được thực hiện.

Lưu ý rằng điều này dựa trên con rối 0.25.x, đây là những gì tôi sử dụng tại nơi làm việc và cũng là phiên bản trong Ubuntu 10.04. Mã con rối trong phần chính chắc chắn sẽ vẫn hoạt động, nhưng các phiên bản con rối sau này có cờ mới có thể giúp gỡ lỗi đầu ra.


Hãy để tôi thử giải pháp này tối nay, và cho bạn biết các bản cập nhật. Cảm ơn rất nhiều :)
karthick87

Cách sửa đổi dòng này puppet:///modules/module_name/datas.xls, tệp sẽ được sao chép ở dưới vị trí này/etc/puppet/modules/mymodule/manifests/datas.xls
karthick87

Tập tin sẽ được sao chép nên được đưa vào /etc/puppet/modules/mymodule/files/datas.xls- Tôi sẽ cập nhật câu trả lời để rõ ràng hơn về điều đó.
Hamish Downer

Oke cảm ơn bạn ,. Làm thế nào để chạy các bảng kê khai?
karthick87

Làm thế nào để áp dụng mô-đun này cho tất cả các nút từ Puppetmaster? Thay vì áp dụng nó cho mọi nút một cách mạnh mẽ bằng cách chạypuppet agent --test
karthick87
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.