Ansible development, inside your IDE
Ansibility brings deep semantic support for Ansible to PyCharm, IntelliJ IDEA, WebStorm, and PhpStorm. Instead of generic YAML highlighting, it models your entire Ansible project: multi-environment inventories, 22-step variable precedence, transparent vault editing, role argument specs, and live Jinja2 previews.
[web-prod-01, web-stage-01]. Target host context switches evaluate against this group hierarchy.Ctrl+B: Navigate to inventory group definitionlisten_portchoices: [...] list.Ctrl+Space: Trigger autocompletion for allowed choices: "postgres"
size_gb sub-option.:
meta/argument_specs.ymlport: type: int • default: 5432
engine: type: str • choices: ['postgres', 'mysql', 'mariadb']
storage: type: dict • required: ['size_gb']
Engineered around authentic ansible-core evaluation semantics, built in pure Kotlin for the IntelliJ Platform.
Switch target host context directly from the status bar widget or quick switcher to evaluate variables and tasks in their exact host environment.
Computes effective variable values adhering to Ansible's full 22-step precedence order, with interactive breakdown cards and override tracing.
Transparent secret editing without leaving the IDE, designed with disk-protection safeguards preventing unencrypted files from hitting disk.
First-class support for meta/argument_specs.yml providing documentation hover cards, auto-completion, and static type checking.
str, int, bool, list, dict, and pathDedicated file type for templates plus automatic Jinja2 expression injection into YAML template values and conditional directives.
AnsibleJinja file type and syntax highlightingwhen:, changed_when:, failed_when:, until:ansible_facts, item, filters, and testsLive rendered split preview for Jinja2 templates (*.j2) rendered against the active host and playbook context.
Comprehensive module intelligence with built-in parameter specs, documentation tooltips, and static validation.
Full IDE navigation and refactoring tools tailored specifically to Ansible repository architecture.
Structured repository tree explorer and live variable inspection window.
Ansible defines 22 levels of variable precedence. Ansibility implements the complete resolution graph in memory.
When inspecting variables or rendering templates, Ansibility computes the exact winning definition among all active layers:
-e / CLI)defaults/main.yml)Ansibility automatically infers which hosts each file applies to:
hosts: declaration and inventory group membership.meta/main.yml) and playbook invocations.Designed for safe everyday developer workflows with zero plaintext leaks.
Encrypted YAML values (!vault |) feature gutter lock icons for quick actions:
Open whole-file encrypted secrets directly in dedicated editor tabs. Background sync protection prevents unencrypted temporary files from being written to disk.
Static envelope linting verifies header formatting and block structure without requiring vault passwords.
Static analysis enforcing Ansible meta/argument_specs.yml contracts.
Value Rejected by Spec: Flags parameter values that violate documented types or fail type coercion.
Sub-option Validation: Detects missing required keys or undeclared options in dictionary specs.
Choice Mismatch: Validates values against declared choices: [...] lists with completion.
Witness Host Analysis: Identifies variables that are undefined on specific target hosts in the inventory.
Ansibility is verified against JetBrains 2026.2+ IDE builds (build 262+).
Ansibility is written in Kotlin and built with Gradle.
# Clone repository
git clone https://github.com/danielterletzkiy/ansibility.git
cd ansibility
# Build plugin ZIP distribution (plugin/build/distributions/)
./gradlew assemble
# Launch sandbox IDE with Ansibility pre-installed
./gradlew runIde