In this section:
Prerequisites
Before you start working with Puppet, make sure that the Puppet Support plugin is enabled. The plugin is bundled with IntelliJ IDEA and is activated by default. If the plugin is not activated, enable it on the Plugins page of the Settings / Preferences Dialog as described in Enabling and Disabling Plugins.
Also, puppet gem should be installed on your Ruby SDK.
Puppet support
Puppet files are marked with
.
Puppet support in IntelliJ IDEA includes:
- Compliance with the Puppet Style Guide
. - Syntax and error highlighting.
- Ability to rename Puppet elements.
- Code completion in
*.ppfiles. - Configuring code style for Puppet files.
- Structure view:

- Code completion:

Moreover, with the dependencies installed, navigation and completion for each module work in strict accordance with the dependencies. For example, if you are editing a module depending on
puppetlabs-apache, then you seeapachein code completion:
- Navigation to a class definition, symbol, class or a usage is available:

-
Future parser
.
Creating a Puppet module
- On the main menu, choose . You can also click the link on the Welcome Screen.
- On the first page of the wizard, specify the project SDK, author's username and module name.

If Puppet gem is not installed, then instead of the Puppet gem version you'll see the suggestion to install the gem:

For the macOS and *NIX users: When choosing project SDK, you can select an RVM gemset from the existing ones, or create a new one:
Refer to the page Configuring Gemsets for details.
Click Next
- On the second page of the wizard, specify the project name and location:

- When ready, click Finish.
The project is created in the specified location. So doing, the created project features the structure of a
Puppet module. Refer the Puppet documentation
for details.

Installing dependencies
There is an action in the Project tool window that enables installing dependencies into a Puppet module:

Puppet modules recognize dependencies from 3 different sources:
- If the file
.fixtures.ymlexists in a Puppet module, then the dependencies are installed into the directoryspec/fixtures/modules, no other sources being checked. - If a
Puppetfileexists in a Puppet module, then the dependencies are installed usinglibrarian-puppetinto.dependenciesdirectory. If aPuppetfileexists,librarian-puppetignores dependencies specified inmetadata.json. - If a
metadata.jsonfile exists in a Puppet module, then the dependencies are installed usinglibrarian-puppetinto.dependenciesdirectory.
Typical workflow
Here’s how it works...
- Open or create a Puppet module.
- If installing dependencies from the files
Puppetfileormetadata.json, make sure that the gem librarian-puppet
is installed. If the gem is not yet
installed, IntelliJ IDEA notifies you about the missing gem and suggests you to install it:

(If the dependencies are installed from
.fixtures.ymlfile, this gem is not required, and no notification will be shown.)IntelliJ IDEA can find all modules/environments in a project automatically, based on dependencies files, and updates the project structure accordingly, if anything has changed. Even if IntelliJ IDEA fails to update your project structure after installing additional modules into the project using the terminal, you can manually rescan the directory for modules or environments by using Scan for modules and environments action on the context menu.
- Having placed the dependencies in the file
.fixtures.yml,Puppetfileormetadata.json, right-click the Project tool window, and then choose Install dependencies for module <module name> on the context menu.So doing, the dependencies are taken from the files
.fixtures.yml,Puppetfileormetadata.json, located in the project root. The folder.dependencies(in case of creating dependencies fromPuppetfileormetadata.json) orspec/fixtures/modules/(in case of creating dependencies from.fixtures.yml) is created under the project root, if it didn't exist before.
If you want to add more dependencies, invoke this command again.