#+TITLE: Ansible layer #+TAGS: layer|tool [[file:img/ansible.png]] * Table of Contents :TOC_5_gh:noexport: - [[#description][Description]] - [[#features][Features:]] - [[#install][Install]] - [[#configuration][Configuration]] - [[#ansible-vault][ansible-vault]] - [[#password][Password]] - [[#automatic-encryption-and-decryption][Automatic encryption and decryption]] - [[#key-bindings][Key bindings]] * Description This layer adds support for editing Ansible configuration files in Spacemacs. ** Features: - Syntax highlighting for Ansible-flavored YAML and Jinja2 templates. - Auto-completion via =company-ansible=. - Integration of =ansible-vault= into emacs for automatic encryption/decryption of files. * Install To use this configuration layer, add it to your =~/.spacemacs=. You will need to add =ansible= to the existing =dotspacemacs-configuration-layers= list in this file. * Configuration ** ansible-vault *** Password To use =ansible-vault= you have to provide the path to a file containing the password to use somewhere in your =dotspacemacs/user-config= function. For instance: #+BEGIN_SRC emacs-lisp (setq ansible::vault-password-file "path/to/pwd/file") #+END_SRC The default value is the ansible-vault default value: =~/.vault_pass.txt=. For now Ansible does not handle multiple passwords in the vault file (see [[https://github.com/ansible/ansible/issues/13243]]). To work around this limitation directory local variables can be used to define a different password file for a given environment. Example: #+BEGIN_SRC emacs-lisp ;;; Directory Local Variables ;;; For more information see (info "(emacs) Directory Variables") ((yaml-mode . ((ansible::vault-password-file . "path/to/vault_file")))) #+END_SRC *** Automatic encryption and decryption This layer comes preconfigured with automatic encryption/decryption of encrypted files using =ansible-vault= so it is possible to edit seamlessly any encrypted files. If you want to disable this feature then set the layer variable =ansible-auto-encrypt-decrypt= to =nil=. #+BEGIN_SRC emacs-lisp (ansible :variables ansible-auto-encrypt-decrypt t) #+END_SRC * Key bindings | Key binding | Description | |-------------+------------------------------------------| | ~SPC m b e~ | encrypt the buffer using =ansible-vault= | | ~SPC m b d~ | decrypt the buffer using =ansible-vault= | | ~SPC m h a~ | looks up documentation using [[https://github.com/lunaryorn/ansible-doc.el][ansible-doc]] |