Terraform-provider-aws: Hentikan instance

Dibuat pada 13 Jun 2017  ·  38Komentar  ·  Sumber: hashicorp/terraform-provider-aws

_Masalah ini awalnya dibuka oleh @johnjelinek sebagai hashicorp/terraform#1579. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Isi asli masalah ada di bawah._


Bagaimana saya bisa menentukan status instance saya menjadi stopped ?

enhancement servicec2

Komentar yang paling membantu

Hai, hanya pengingat bahwa argumen 'instance_state' yang memecahkan masalah ini masih belum didokumentasikan di https://www.terraform.io/docs/providers/aws/d/instance.html

Pengguna: lihat contoh di tambalan: https://github.com/artburkart/terraform-provider-aws/commit/03adc67a0c20e61619e00e3041e4e885f87b63be#diff -aa349804f7de2200d450db00820fe64fR274

Semua 38 komentar

_Komentar ini awalnya dibuka oleh @phinze sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -94523309. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Pertanyaan bagus - ini bukan sesuatu yang bisa dilakukan di Terraform hari ini, tapi ini jelas merupakan fitur yang telah kita bicarakan. Ditandai.

_Komentar ini awalnya dibuka oleh @knuckolls sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -94551365. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Ini adalah pertanyaan yang sangat bagus dan saya pikir itu tidak dibahas. Saya berasumsi maksud Anda instance EC2. Kemungkinan harus ada tanda stop_on_destroy = true yang ditambahkan ke sumber daya itu. Itu akan membutuhkan logika tambahan dalam fungsi penghancuran sumber daya itu. Saya tidak melihat apa pun yang menunjukkan bahwa Terraform saat ini mendukungnya, tetapi seharusnya.

Salah satu kerumitannya adalah bagaimana fungsi create akan bekerja bersama dengan statefile. Haruskah instance baru dibuat? Haruskah instance yang dihentikan dimulai? Bagaimana Terraform tahu untuk mengakhiri dan membuat ulang versus menghentikan dan memulai. Inspirasi.

_Komentar ini awalnya dibuka oleh @knuckolls sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -94551452. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Heh, saya harus me-refresh tab lama sebelum saya membalas.

_Komentar ini awalnya dibuka oleh @mitchellh sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -95117648. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Saya pikir ini harus ditambahkan. Ini rumit karena Terraform sekarang perlu tahu bagaimana melakukan transisi keadaan dari hampir semua hal. yaitu perlu tahu bagaimana mendapatkan dari terminated ke stopped . Saya tidak mengatakan itu sulit, sama seperti kita perlu membangun pengetahuan itu ke dalam TF itu sendiri.

Kita perlu melakukannya, hanya menjelaskan situasinya.

_Komentar ini awalnya dibuka oleh @maartensl sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -98125937. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


+1 untuk stop / start dan spesifikasi status lainnya di TF

_Komentar ini awalnya dibuka oleh @sebastiang sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -112642406. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Untuk lingkungan sementara seperti kotak dev atau lingkungan pementasan khusus, akan menyenangkan untuk menghentikan semua instans dalam semalam dan memulainya lagi ketika kita mulai bekerja untuk menghemat biaya tetapi mempertahankan beberapa keadaan sementara. +1

_Komentar ini awalnya dibuka oleh @mtekel sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -118806540. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Terraform juga harus memeriksa apakah keadaannya sama dengan yang diinginkan. Saat ini ketika saya menghentikan VM terraform tidak mengubah status.

_Komentar ini awalnya dibuka oleh @jevonearth sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -175475155. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Saya juga menantikan ini.

Situasi saya, dan pekerjaan saya saat ini adalah;

Saya memiliki instance c4.2xlarge yang saya gunakan sebagai pembuat sistem operasi. Saya hanya membutuhkan ini untuk dijalankan sesekali. Saya tidak suka membangun kembali ini dari awal setiap saat, karena membutuhkan waktu lebih lama.

Untuk saat ini, saya hanya mematikan instance secara manual melalui antarmuka web AWS. Ini menyebabkan kesalahan di terraform karena alamat IP mesin saya hilang, dan terraform mencoba memperbarui catatan route53 terkait dengan string kosong.

Ini kemungkinan merupakan kasus sudut yang perlu ditangani saat Anda menambahkan kemampuan untuk menghentikan instans dari terraform.

1 error(s) occurred:

* aws_route53_record.packages_builder: InvalidChangeBatch: Invalid Resource Record: FATAL problem: ARRDATAIllegalIPv4Address encountered at
        status code: 400, request id: b221dee7-c4ca-11e5-9bcd-b5f8c0509fb2

_Komentar ini awalnya dibuka oleh @charity sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -237110221. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Saya memiliki banyak lingkungan, beberapa di antaranya memiliki status. sebagai startup yang bangkrut, saya ingin dapat menerapkan "stop" ke seluruh lingkungan tf, jadi saya tidak perlu membuatnya kembali setiap kali saya ingin menjalankan sesuatu di cluster.

_Komentar ini awalnya dibuka oleh @spkane sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -240884545. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Untuk sedikit memperluas ini:

Akan lebih baik jika terraform dapat mengidentifikasi status instance, memberi tahu Anda selama rencana status itu (seperti instance yang dihentikan), dan kemudian mentransisikan status instance tersebut (yang bukan adalah status yang benar).

_Komentar ini awalnya dibuka oleh @jmehnle sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -263413711. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Teman-teman, demi Cthulu! Silakan tekan simbol :+1: reaksi di bawah tanggapan pertama @phinze di bagian atas masalah ini daripada mengeposkan "+1" trilyun kali. Semua orang yang berlangganan masalah ini benar-benar tidak perlu diberi tahu melalui email setiap kali orang lain setuju, ini adalah ide yang bagus.

_Komentar ini awalnya dibuka oleh @stumyp sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -280030606. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Anda dapat menggunakan data pengguna/cloud-init untuk menghentikan instans setelah penyediaan.

https://cloudinit.readthedocs.io/en/latest/topics/examples.html#reboot -poweroff-when-finished

_Komentar ini awalnya dibuka oleh @in4mer sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -285588403. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Masalah ini sudah hampir dua tahun. Saatnya bergerak di sini; ini adalah batasan mendasar dari manajemen negara! Itu telah disebutkan dalam masalah terkait-tetapi-tertutup, tetapi mampu 1) mengubah data pengguna, dan 2) mengubah ukuran instance (sedikit lebih rumit) daripada membuat ulang akan menjadi file . Ada begitu banyak kasus penggunaan untuk fungsi ini, kami membutuhkannya.

_Komentar ini awalnya dibuka oleh @spkane sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -286314870. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Saya perhatikan bahwa komit baru-baru ini ( https://github.com/hashicorp/terraform/pull/11998) yang "memungkinkan aws_instances diubah ukurannya daripada memaksa instance baru" tampaknya memiliki beberapa benih kode untuk mengatasi ini ( https://github.com/hashicorp/terraform/pull/11998/files).

Apakah ada rencana untuk membuat ini lebih didukung secara umum?

_Komentar ini awalnya dibuka oleh @mitchellh sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -286320943. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


@spkane Saya percaya itulah tujuannya! :)

Untuk @in4mer , kami telah mengerjakan kedua kasus tersebut selama beberapa minggu terakhir (di antara masalah lain juga) dan kami semakin dekat.

_Komentar ini awalnya dibuka oleh @reubenavery sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -290841453. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


+1 untuk ini pada saya. Sangat dibutuhkan, terutama untuk kasus penggunaan seperti pipa C/I di mana saya menguji pada dasarnya membuat seluruh rangkaian instans agar sesuai dengan lingkungan produksi. jika saya kemudian dapat menjalankan katalog yang sama tetapi sebaliknya memberikan argumen aws_instance misalnya "ensure=${var.instance_state}" di mana itu bisa berjalan, berhenti, hadir, tidak ada (tip topi untuk Wayang) -- yah, itu akan luar biasa dan penghemat biaya yang besar.

Namun, itu akan membutuhkan beberapa fitur build-out di provisioner, menambahkan sesuatu yang mirip dengan argign_changes di blok siklus hidup untuk mengabaikan server offline.

Tentu saja ada cara lain untuk melakukan ini, tetapi menurut saya paling cocok untuk Terraform.

_Komentar ini awalnya dibuka oleh @kollender sebagai https://github.com/hashicorp/terraform/issues/1579#issuecomment -306044714. Itu dimigrasikan ke sini sebagai bagian dari pemisahan penyedia . Komentar asli ada di bawah._


Jadi, dapatkah saya menghentikan instance melalui TF atau haruskah saya melakukannya secara manual melalui AWS console (GUI)?
@phinze @mitchellh

Hai, hanya pengingat bahwa argumen 'instance_state' yang memecahkan masalah ini masih belum didokumentasikan di https://www.terraform.io/docs/providers/aws/d/instance.html

Pengguna: lihat contoh di tambalan: https://github.com/artburkart/terraform-provider-aws/commit/03adc67a0c20e61619e00e3041e4e885f87b63be#diff -aa349804f7de2200d450db00820fe64fR274

@jeffgage : jadi haruskah ini ditutup atau tetap terbuka sampai dokumentasi disediakan?

Hai @johnjelinek ,
Pendapat saya adalah bahwa masalah tersebut tidak terselesaikan sampai argumen tersebut memiliki dokumentasi sehingga pengguna dapat mengetahui solusinya.

Tautan Anda ke sumber data aws_instance , tetapi utas ini tampaknya lebih banyak tentang sumber daya. Apakah Anda mengatakan bahwa kami sekarang dapat mengontrol status sumber daya aws_instance ?

@bchallenor Anda benar, saya menempelkan tautan yang salah di komentar pertama saya. Namun instance_state tidak didokumentasikan dalam sumber daya, yang URL yang benar adalah https://www.terraform.io/docs/providers/aws/r/instance.html

Tambalan oleh @artburkart pada 10-19 2017 yang mengimplementasikan fitur ini ditautkan di atas.

@jeffgage Tampaknya itu belum digabungkan. PR yang sesuai ditutup.

@jeffgage ya itu tidak pernah digabungkan dan kemudian ditinggalkan di PR.

Benar, 2 bulan terlalu lama untuk duduk di PR. Jika saya ingat dengan benar, itu sudah memiliki konflik penggabungan yang signifikan pada saat ditinjau oleh siapa pun, dan perubahan yang diminta umumnya tidak terkait dengan PR yang ada; itu semua adalah hal yang dapat ditambahkan kemudian dan tidak saat itu juga. Dengan demikian, tidak masuk akal untuk mempertahankan PR, karena minat dari kekuasaan yang ada sangat kecil.

Kasus penggunaan saya adalah membuat instans EC2 dalam keadaan berhenti.

Terraform v0.11.11
provider.aws: versi = "~> 1,59"

Error: aws_instance.blah: "instance_state": this field cannot be set

Guys, Apakah ada solusi untuk menghentikan instance (tidak ada penghentian) hanya menghentikan instance di terraform?

Satu-satunya solusi yang saya miliki adalah skrip penyedia lokal-exec yang menunggu a
while dan kemudian menghentikan instance.

Pada Senin, 25 Maret 2019, 17:39 mssaisandeep [email protected] menulis:

Guys, Apakah ada solusi untuk menghentikan instance (tidak ada penghentian)
hentikan saja instance di terraform?


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/terraform-providers/terraform-provider-aws/issues/22#issuecomment-476429583 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AOjVUnhGp5_7P1Buax6hlJKiGg7wSQtmks5vaWw3gaJpZM4N4fBl
.

Disebutkan bahwa sulit untuk menangani semua transisi status, tetapi tidak bisakah boolean ditambahkan untuk membuat instance "dihentikan", yang diblokir untuk jenis penyimpanan instans, dan penghentian akan ditangani melalui penghancuran?

Saya bertanya-tanya mengapa solusi yang lebih sederhana tidak disarankan dan mungkin saya melewatkan sesuatu.

Local-exec tampaknya menjadi satu-satunya kemungkinan sejauh ini, dapat mengontrol status instance dengan logika yang lebih maju daripada on/off sederhana

Solusi lain yang mungkin adalah menggunakan user_data untuk mematikan instance setelah disiapkan, dengan asumsi instance_initiated_shutdown_behavior disetel ke "stop"

Apakah mungkin untuk menghentikan instans EC2 menggunakan terraform. Seiring berkembangnya terraform, saya ingin tahu, bagaimana mereka mengatasinya.

Saya dalam kasus penggunaan di mana saya perlu membuat 10-15 instance EC2 untuk sebuah acara. Setelah dikonfigurasi / disetel, instance tersebut perlu dihentikan hingga acara dimulai. Semua instance harus dijalankan untuk acara tersebut, dan setelah itu, mereka dapat dimusnahkan.
Masalahnya adalah skenario ini akan terjadi beberapa kali dalam setahun, dan tanpa pengaturan state ini di aws_instance, saya tidak tahu cara mengelolanya dengan benar.

Adakah berita tentang menghentikan/memulai instance dengan terraform? Ada solusi yang diketahui? Terima kasih

Saya tidak berpikir ini mungkin pada saat ini. Penyedia terraform AWS hanya dapat melakukan apa yang dapat dilakukan oleh AWS API. dan panggilan API RunInstances tidak memiliki pengaturan ini.

Cukup gunakan local-exec untuk menghentikan mereka pada waktu penyediaan.

Bagaimana Anda akan melakukannya? @stumyp

@kalote
Dokumentasinya cukup sederhana untuk itu:

https://www.terraform.io/docs/provisioners/local-exec.html

resource "aws_instance" "web" {
  # ...

  provisioner "local-exec" {
    command = "echo ${aws_instance.web.private_ip} >> private_ips.txt"
  }
}

ganti command dengan aws ec2 stop-instances --instance-ids ${aws_instance.web.id}

@stumyp yang sebenarnya bisa sangat sulit dilakukan dalam praktiknya jika Anda memiliki pengaturan non-sepele untuk penyedia aws Anda, karena perintah tidak memiliki akses ke kredensial aws dari penyedia. Khususnya, jika Anda menggunakan opsi assume_role , mungkin sulit untuk membuat perintah aws sederhana dengan kredensial yang tepat.

@tmccombs Saya setuju, ini mungkin kurang dapat digunakan dengan assume_role . Dugaan saya adalah bahwa kita perlu meminta sumber daya baru aws_instance_state alih-alih memperluas sumber daya aws_instance yang ada.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat