Saya menggunakan boneka untuk mendistribusikan kunci SSH, seperti:
ssh_authorized_key { "[email protected]":
ensure => present,
key => 'xxxx',
type => 'ssh-rsa',
user => 'deploy',
}
File ~ / .ssh / authorized_keys pada akhirnya berisi campuran kunci dari beberapa kelas, yang merupakan hasil yang diinginkan. Namun, jika kunci ditambahkan secara manual ke $ HOME / .ssh / Authorized_key, Puppet akan membiarkannya di tempatnya. Apakah ada cara untuk selalu menghapus kunci apa pun yang belum secara eksplisit didefinisikan dalam manifes?
Saya punya boneka versi 2.7.1.
Jawaban:
Dimulai dengan Wayang 3.6 sekarang dimungkinkan untuk membersihkan kunci resmi SSH yang tidak dikelola melalui
user
jenis tersebut. Sebagai contoh,sumber
Alih-alih menggunakan
ssh_authorized_key
sumber daya, saya memutuskan untuk mendefinisikanauthorized_keys
sumber daya, yang mengambil daftar semua kunci SSH untuk satu pengguna. Definisinya terlihat seperti ini:$ssh_keys
parameter mengambil semua kunci yang diperlukan sebagai daftar. Theauthorized_keys.erb
Template terlihat seperti ini:Pemakaian
Menambahkan kunci SSH secara kondisional (misalnya di kelas yang berbeda) juga mudah, terima kasih kepada
+>
operator Wayang :Dengan metode ini, pengguna tidak akan pernah memiliki kunci yang tidak ditentukan secara eksplisit dalam konfigurasi Wayang. Untaian kunci digunakan dalam otor_keys sebagaimana adanya, sehingga menambahkan opsi dan pembatasan sepele.
Saya akan senang mendengar jika orang lain telah menggunakan metode ini dengan sukses!
sumber
Anda harus dapat melakukan ini menggunakan metatype sumber daya . MISALNYA
Pengaturan
noop => true,
mencegah penghapusan terjadi. Sebagai gantinya, boneka akan melaporkan apa yang akan dihapus. Jika itu yang Anda inginkan, hapus pernyataan noop .Sintaks yang ideal untuk melakukan operasi pada sumber daya yang tidak dikelola sedang dibahas .
EDIT: Seperti yang disebutkan dalam komentar, jawaban ini tidak berfungsi.
sumber
puppet-agent[9895]: (/Stage[main]//Resources[ssh_authorized_key]) Failed to generate additional resources using 'generate': Attribute 'user' or 'target' is mandatory.
Saya mencoba menambahkan pengguna, dan kemudian berkataCould not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter user
. Ada ide?On Puppet Forge, sebuah modul telah diterbitkan di bawah Lisensi Apache, Versi 2.0 yang menawarkan kemampuan ini.
Itu bergantung pada boneka Wayat bukan template.
https://github.com/nightfly19/puppet-ssh_keys/tree/master/manifests
Alih-alih meneruskan array kunci sebagai parameter, Anda menentukan entri terpisah untuk setiap kunci.
Berbeda pendekatan dari Mikko, tapi hasil bersihnya sama.
sumber