Happy to accept this as is but a couple of notes for any future PRs:
I typically prefer to keep as much as possible inline in the tests rather than accessing instance variables that may bleed across test boundaries. In this case, I feel it would be better to instantiate some sort of mock logger in each test and configure it on to RubyTerraform on a per test basis. If the setup became too much I'd prefer to pull out a method to make it clear what's being set up rather than using before each. That way you can see from looking only at the test what is in scope / configured and it's easier to move tests around in future.
Rather than capturing the logger from the config, I think it would be better to instantiate something in the test that meets the logger interface and completely replace the configured logger. Right now, if the code under test calls a method on the logger that isn't mocked, the real implementation will be invoked leading to noise in the test output. See what I did in the configuration tests for an alternative approach.
Add logger to
Clean
command