There are two methods of turning infrastructure configurations into code:
Declarative (functional) - defines the desired outcome/state of the final solution, but the automation tool chooses the method to achieve that
Imperative (procedural) - represents the steps/commands necessary to achieve the desired outcome