_Masalah ini awalnya dibuka oleh @alanbchristie sebagai hashicorp/terraform#17040. Itu dimigrasikan ke sini sebagai akibat dari pemisahan penyedia . Isi asli masalah ada di bawah._
Apakah mungkin untuk menambahkan argumen do_not_destroy
ke item konfigurasi local_file
sehingga ketika terraform destroy
dijalankan, file lokal yang dihasilkan dibiarkan utuh? Alasannya? Saya membuat konten dinamis untuk skrip Ansible pasca-penghancuran dan akan berguna untuk menyimpan konten file yang dibuat secara lokal untuk buku pedoman ini.
yaitu apakah dapat diterima untuk memberikan kemampuan untuk melakukan ini ...
resource "local_file" "cleanup_vars" {
content = "${data.template_file.cleanup_vars.rendered}"
filename = "../../../ansible/aws-cleanup/vars.yml"
do_not_destroy = true
}
Dengan di atas jika terraform apply
dijalankan ulang tidak apa-apa (dan diharapkan) untuk menimpa file yang ada.
Terraform v0.11.1
data "template_file" "cleanup_vars" {
template = "${file("../../../ansible/aws-cleanup/vars.yml.tpl")}"
vars {
aws_region = "${var.aws_region}"
}
}
resource "local_file" "cleanup_vars" {
content = "${data.template_file.cleanup_vars.rendered}"
filename = "../../../ansible/aws-cleanup/vars.yml"
}
tidak ada
tidak ada
tidak ada
tidak ada
tidak ada
tidak ada
tidak ada
Hai @alanbchristie! Terima kasih atas permintaan fitur ini dan maaf atas keterlambatan dalam menanggapinya.
Tim Terraform di HashiCorp tidak akan dapat mengerjakan ini dalam waktu dekat karena fokus kami berada di tempat lain, tetapi kami akan dengan senang hati meninjau permintaan penarikan jika Anda atau orang lain memiliki waktu dan motivasi untuk menerapkannya.
Ada beberapa preseden untuk opsi seperti ini untuk sumber daya di mana biasanya digunakan Terraform untuk membuatnya tetapi untuk meneruskan manajemen ke beberapa sistem lain setelah beberapa saat. Biasanya ini memiliki nama seperti verb_on_destroy
, di mana "kata kerja" adalah beberapa terminologi yang cocok untuk sumber yang dimaksud. Untuk situasi ini, saya sarankan untuk menamai argumen delete_on_destroy
, dengan default true
, dan kemudian memiliki konfigurasi eksplisit menjadi delete_on_destroy = false
. Ini konsisten dengan fitur serupa lainnya yang ada seperti argumen nomad_job
deregister_on_destroy
.
(Alasan dari terminologi *_on_destroy
di sini adalah bahwa "menghancurkan" dalam konteks ini adalah operasi Terraform, yang pada gilirannya menyebabkan operasi lain di sistem target. Menyebutnya do_not_destroy
dapat membingungkan karena menyetelnya tidak akan benar-benar mencegah Terraform menghancurkan instance sumber daya itu sendiri. Sebaliknya, itu menyesuaikan tindakan yang diambil Terraform _when_ ia menghancurkan instance sumber daya.)
@apparentlymart Saya telah mencoba resolusi di # 10, dengan senang hati menerima umpan balik.
Halo,
Kasus penggunaan yang sama dan masalah yang sama dengan @alanbchristie. ada update tentang tiket ini? Terima kasih sebelumnya.
Terima kasih atas kesabaran Anda @abn sementara kami meningkatkan proses triase kami untuk penyedia HashiCorp. Saya ingin memahami lebih lanjut tentang kasus penggunaan Anda di sini: karena Anda memanggil terraform destroy
tetapi ingin mempertahankan sumber daya ini, itu harus menjadi bagian dari konfigurasi yang lebih besar dengan jenis sumber daya tambahan yang ingin Anda hancurkan. Bisakah Anda menguraikan langkah-langkah proses ini dan bagaimana konfigurasi digunakan?
@kmoe Sejujurnya, ingatan saya tentang kasus penggunaan asli agak buruk. Namun, seperti yang dijelaskan dalam deskripsi, kasus khusus yang menyebabkan hal ini adalah karena kami membuat beberapa sumber daya di AWS yang menghasilkan token dan/atau konfigurasi yang perlu digunakan untuk membersihkan sumber daya yang dibuat pasca-pendaftaran di luar tf state, yang perlu dibersihkan menggunakan playbook yang memungkinkan setelah penghancuran dipanggil. Persyaratan sederhananya adalah tidak dapat menghapus file yang dihasilkan; ada berbagai kasus lain di mana ini akan berguna secara umum.
sama disini
masih sama dibutuhkan disini
Saya ingin mengatakan bahwa saya masih tertarik dengan masalah ini, tetapi tidak. Sebagai gantinya, seperti yang ditunjukkan di awal masalah, saya menggunakan Ansible sebagai pengontrol jadi saya hanya menyalin file dari cara Terraform setelah infrastruktur disediakan. Kemudian, setelah saya memanggil penghancuran, ketika kontrol beralih kembali ke buku pedoman Ansible saya, saya memiliki file sebelum dihapus dan dapat melakukan pemrosesan yang diperlukan.
Berkenaan dengan pertanyaan sebelumnya pada tahun 2020 mengapa ada orang yang ingin menyimpan file seperti itu? Tidak seperti sumber daya lain, fakta bahwa itu adalah sumber daya "lokal" harus mengisyaratkan bahwa itu biasanya tidak memainkan peran penting dalam infrastruktur ... itu "lokal" setelah semua (dan akan tetap ditulis ulang ketika Anda menjalankan apply
). Dan, mungkin fakta bahwa tiga orang lainnya juga berpikir ini adalah ide yang bagus mungkin juga menunjukkan bahwa, mungkin, memang demikian?
Bagaimanapun - sudah lebih produktif bagi saya untuk mengkodekan perilaku menggunakan alat eksternal.
Komentar yang paling membantu
Hai @alanbchristie! Terima kasih atas permintaan fitur ini dan maaf atas keterlambatan dalam menanggapinya.
Tim Terraform di HashiCorp tidak akan dapat mengerjakan ini dalam waktu dekat karena fokus kami berada di tempat lain, tetapi kami akan dengan senang hati meninjau permintaan penarikan jika Anda atau orang lain memiliki waktu dan motivasi untuk menerapkannya.
Ada beberapa preseden untuk opsi seperti ini untuk sumber daya di mana biasanya digunakan Terraform untuk membuatnya tetapi untuk meneruskan manajemen ke beberapa sistem lain setelah beberapa saat. Biasanya ini memiliki nama seperti
verb_on_destroy
, di mana "kata kerja" adalah beberapa terminologi yang cocok untuk sumber yang dimaksud. Untuk situasi ini, saya sarankan untuk menamai argumendelete_on_destroy
, dengan defaulttrue
, dan kemudian memiliki konfigurasi eksplisit menjadidelete_on_destroy = false
. Ini konsisten dengan fitur serupa lainnya yang ada seperti argumennomad_job
deregister_on_destroy
.(Alasan dari terminologi
*_on_destroy
di sini adalah bahwa "menghancurkan" dalam konteks ini adalah operasi Terraform, yang pada gilirannya menyebabkan operasi lain di sistem target. Menyebutnyado_not_destroy
dapat membingungkan karena menyetelnya tidak akan benar-benar mencegah Terraform menghancurkan instance sumber daya itu sendiri. Sebaliknya, itu menyesuaikan tindakan yang diambil Terraform _when_ ia menghancurkan instance sumber daya.)