atlantis icon indicating copy to clipboard operation
atlantis copied to clipboard

Support `atlantis destroy` subcommand

Open kennethtxytqw opened this issue 4 years ago • 13 comments

Wondering if a command atlantis destroy -d <dir> will be useful. It will:

  1. User creates empty MR
  2. User comments atlantis destroy -d <dir>
  3. Atlantis generate destroy plan for <dir> and show it on the MR
  4. User commentsatlantis apply
  5. Atlantis destroys
  6. Atlantis makes a commit to the MR with <dir> deleted and merges the MR

Number 6, might be a little uncomfortable for some people.

kennethtxytqw avatar Mar 05 '20 02:03 kennethtxytqw

I will say, the removal part of atlantis, is the most cumbersome part of our workflow.

We have things, that can only run from atlantis, so we endup having to create a BS pull request, something like adding a comment to a .tf file, then doing the destroy, then deleting the folders, pushing again, and finally merging.

jseiser avatar Mar 24 '20 16:03 jseiser

@jseiser That has been what my team and I have been doing too.

kennethtxytqw avatar Mar 28 '20 07:03 kennethtxytqw

Having this as an available option would be fairly concerning.

If this was to be implemented I think you would also surely need to implement the ability to blacklist commands on the server side for people who did not want to expose this. It should probably also be defaulted to the blacklist and only available if you explicitly allow it.

nwsparks avatar Jul 16 '20 14:07 nwsparks

I think it would be more user friendly creating the PR with the deletion of the directory. Atlantis could then detect it and destroy the project using the directory from the target branch?

Symbianx avatar Jul 17 '20 15:07 Symbianx

I like @Symbianx 's suggestion and it seems if implemented as per that suggestion would address the concern @nwsparks has?

kennethtxytqw avatar Jul 17 '20 15:07 kennethtxytqw

That does seem like a good workflow since you're gonna want to delete the directory anyway. Might be a bit tricky to implement though.

lkysow avatar Jul 17 '20 22:07 lkysow

That would be a lovely workflow. We currently plan destroy and apply outside of atlantis, then make the PR.

mwarkentin avatar Jul 18 '20 14:07 mwarkentin

I think it would be more user friendly creating the PR with the deletion of the directory. Atlantis could then detect it and destroy the project using the directory from the target branch?

We at our company are currently also struggling with this problem and came to the same conclusion that it would be best for Atlantis to detect deleted folders and run a ... plan -destroy per deleted folder. That would allow mixing changes, additions and deletions in the same pull request.

Would you be open for a contribution to implement the destroy workflow? If so we would draft a suggestion.

Silthus avatar Aug 26 '22 08:08 Silthus

This is a related issue here https://github.com/runatlantis/atlantis/issues/193

And this is the workaround is here https://github.com/runatlantis/atlantis/issues/193#issuecomment-730614386

tldr here are the options

  1. Use an enabled = true input var or local, set everything to use it, then set it to enabled = false in a PR to do a destroy, then delete the terraform.
  2. Put in a PR (such as a no-op RR), use atlantis plan -- -destroy, get approval, then atlantis apply in order to destroy

nitrocode avatar Nov 19 '22 15:11 nitrocode

I do not believe this will be supported via atlantis destroy. Please see the above workarounds to see if it works better for you. We should probably document this on the website.

Closing for now unless the workarounds do not work for people.

nitrocode avatar Jan 17 '23 16:01 nitrocode

I wonder if this issue can be reopened. Workaround does not work when terragrunt with custom workflows, multi-providers and required checks are in place ( Having workflow like below to destroy resources is too complicated image

SerhiiSokolov avatar Jun 02 '23 07:06 SerhiiSokolov

Project is community driven at this point so some of you will have to create a PR to get this feature.

jamengual avatar Jun 02 '23 16:06 jamengual

Do we have some high-level design/acceptance criteria for this issue? I want to take a stab at implementing this.

ShankyJS avatar Jun 27 '24 20:06 ShankyJS