Bagaimana cara menyalin file ke semua mesin menggunakan boneka wayang?

12

Saya telah menginstal puppetmaster di ubuntu 11.04 dan saya telah menginstal puppetmaster di semua klien saya. Saya telah bergabung dengan semua klien boneka saya dengan guru boneka. Apakah mungkin menyalin file ke semua klien wayang ini dari kepala boneka?

Sebagai contoh:

Saya memiliki file dengan nama data.xls di Desktop saya (Puppet Master). Bagaimana cara menyalin file ini ke semua klien boneka saya di lokasi berikut (/ home / operator1 / Desktop / Backup /)?

Memperbarui:

  • Hai file masih tidak dibagikan.
  • Bagaimana cara memodifikasi baris ini puppet:///modules/module_name/datas.xlsfile yang akan disalin berada di bawah lokasi ini /etc/puppet/modules/mymodule/manifests/datas.xls?

Kesalahan pada Klien: (Diselesaikan)

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

Kesalahan 2 pada Klien:

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/

Pembaruan Baru:

Bagaimana cara menerapkan modul ini ke semua node? Sedemikian rupa sehingga file tersebut akan disalin ke semua node.

karthick87
sumber
... tapi bukankah Anda sudah menanyakan pertanyaan ini? askubuntu.com/questions/61080/…
fossfreedom
Ya tapi solusinya tidak berfungsi lagi.
karthick87
Juga tidak terlalu jelas, pengguna hanya menyalin konten dari beberapa situs web.
karthick87
Masih bukan alasan untuk membuat pertanyaan baru (?) Tetapi saya menyalin satu dari tautan yang diberikan Jorge kepada saya dan dia mengatakan kepada saya untuk c / p;) afaik apa yang ada di jawaban itu masih berfungsi !?
Rinzwind
inilah referensi lain: serverfault.com/questions/200101/...
Rinzwind

Jawaban:

24

Wayang adalah semacam monster yang bisa membuat Anda berpikir, jadi belajar dengan memberi contoh bukanlah hal yang buruk. Di bawah ini saya mengasumsikan Anda menggunakan modul - silakan katakan dalam komentar jika Anda tidak atau jika Anda memerlukan detail lebih lanjut tentang cara menyatukan modul.

Katakanlah Anda memulai modul baru yang disebut mymodule. Dalam direktori home wayang (biasanya /etc/puppet) pada master wayang Anda harus membuat manifes modul dan direktori file:

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

Kemudian buat file di direktori itu bernama init.ppdan masukkan:

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',
    }
}

Kemudian masukkan datas.xlsfile ke filesdirektori modul - dalam contoh ini di modules/mymodule/files/. (Perhatikan juga ada templatesdirektori untuk templat ).

Dalam manifests/site.ppfile Anda perlu mengimpor modul dan memasukkan kelas dengan melakukan sesuatu seperti:

import 'mymodule'

node base {
    include myfile
}

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

Pastikan bahwa semua simpul Anda mewarisi dari basis dan itu yang harus Anda lakukan. Pada wayang 0.25 Anda dapat menggunakan ekspresi reguler dalam nama simpul, misalnya:

node server[0-9] inherits base {}

Beri tahu saya dalam komentar jika Anda memerlukan klarifikasi lebih lanjut.

Menyiapkan klien untuk berbicara dengan master boneka

Pada klien, Anda perlu melakukan:

sudo apt-get install puppet

Kemudian edit /etc/default/puppetdan ubah START=noke START=yes.

Juga edit /etc/puppet/puppet.confdan tambahkan baris ke [main]bagian untuk memberi tahu di mana menemukan master boneka:

server=puppet.mydomain.com

Lalu kita bisa melakukan uji coba dengan sudo puppetd --test. Jika Anda mendapatkan kesalahan kunci, Anda mungkin perlu pergi ke server master boneka dan menandatangani kunci klien. Untuk memeriksa nama persis yang dapat Anda lakukan sudo puppetca --listdan kemudian sudo puppetca --sign server1.mydomain.com(atau apa pun nama server dari perintah daftar).

Sekarang mulai layanan boneka dengan sudo service puppet startdan Anda harus pergi. Layanan boneka akan berjalan setiap jam, jadi jika Anda memperbarui resep boneka Anda maka semua klien Anda juga akan diperbarui.

Menghapus File

Saya perhatikan dalam pertanyaan awal yang Anda ingin tahu cara menghapus file. Anda akan mengedit manifests/init.ppmenjadi

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

Kiat bermanfaat lainnya

Jika Anda mengalami masalah, ada beberapa hal yang dapat Anda lakukan. Pada mesin apa pun dengan boneka yang terpasang, Anda dapat memeriksa sintaks Anda dengan menjalankan

puppet --parseonly --ignoreimport myfile.pp

atau periksa keseluruhannya dengan mengeluarkan --ignoreimportbenderanya, meskipun itu dapat menyebabkan beberapa pesan kesalahan lucu yang sebenarnya bukan kesalahan yang saya temukan. Anda juga dapat menjalankan boneka langsung di mesin klien boneka dengan melakukan:

sudo puppetd --test

yang menunjukkan berbagai hasil yang bermanfaat, dengan kesalahan dan peringatan disorot dalam berbagai warna. Jika Anda ingin lebih detail Anda bisa menjalankan:

sudo puppetd --test --debug

tetapi itu umumnya menghasilkan begitu banyak output sehingga sulit untuk dilalui, jadi hanya lakukan itu jika Anda sudah mencoba langkah-langkah sebelumnya dan macet dan perlu melihat semuanya dilakukan.

Catatan ini didasarkan pada boneka 0.25.x yang merupakan apa yang saya gunakan di tempat kerja saat ini, dan juga versi di Ubuntu 10,04. Kode boneka di bagian utama pasti masih akan berfungsi, tetapi versi boneka yang baru memiliki bendera baru yang dapat membantu dengan hasil debugging.

Hamish Downer
sumber
Biarkan saya mencoba solusi ini malam ini, dan beri tahu Anda pembaruannya. Terima kasih banyak :)
karthick87
Cara memodifikasi baris ini puppet:///modules/module_name/datas.xlsfile yang akan disalin berada di bawah lokasi ini/etc/puppet/modules/mymodule/manifests/datas.xls
karthick87
File yang akan disalin harus dimasukkan /etc/puppet/modules/mymodule/files/datas.xls- saya akan memperbarui jawabannya agar lebih jelas tentang itu.
Hamish Downer
Oke terima kasih ,. bagaimana menjalankan manifes?
karthick87
Bagaimana cara menerapkan modul ini ke semua node dari puppetmaster? Alih-alih menerapkannya ke setiap node secara paksa dengan menjalankanpuppet agent --test
karthick87