{"id":51336,"date":"2025-08-06T08:29:48","date_gmt":"2025-08-06T08:29:48","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=51336"},"modified":"2025-08-06T08:29:48","modified_gmt":"2025-08-06T08:29:48","slug":"ansible-complete-guide-tutorial-of-ansible-vault","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/ansible-complete-guide-tutorial-of-ansible-vault\/","title":{"rendered":"Ansible: Complete Guide &amp; Tutorial of Ansible Vault"},"content":{"rendered":"\n<p>Here is a <strong>very detailed and comprehensive tutorial<\/strong> on using <strong>Ansible Vault<\/strong> with practical, real-world examples for each subcommand.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Ansible Vault Tutorial<\/strong><\/h1>\n\n\n\n<p>Ansible Vault is a powerful feature that allows you to <strong>encrypt sensitive data<\/strong>\u2014such as passwords, keys, and secrets\u2014within your Ansible projects. It\u2019s especially important for keeping secrets out of version control and enabling safe collaboration on automation projects.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why Use Ansible Vault?<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Security:<\/strong> Keeps secrets safe in your playbooks, variable files, and inventory.<\/li>\n\n\n\n<li><strong>Collaboration:<\/strong> Share code without exposing sensitive information.<\/li>\n\n\n\n<li><strong>Flexibility:<\/strong> Encrypt only the files or strings you need.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Vault Passwords<\/strong><\/h2>\n\n\n\n<p>By default, Vault asks you for a password interactively, but you can also use <code>--vault-password-file<\/code> for automation.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Main Ansible Vault Subcommands and Usage Examples<\/strong><\/h2>\n\n\n\n<p>Below, each subcommand is described <strong>with an example<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>Create<\/strong> \u2013 Create a new encrypted file<\/h3>\n\n\n\n<p><strong>Command:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ansible-vault<\/span> <span class=\"hljs-selector-tag\">create<\/span> <span class=\"hljs-selector-tag\">secrets<\/span><span class=\"hljs-selector-class\">.yml<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>What it does:<\/strong><br>Creates a new file, opens it in your <code>$EDITOR<\/code> (e.g., vim\/nano), and saves it <strong>encrypted<\/strong>.<\/p>\n\n\n\n<p><strong>Example Workflow:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ansible-vault<\/span> <span class=\"hljs-selector-tag\">create<\/span> <span class=\"hljs-selector-tag\">secrets<\/span><span class=\"hljs-selector-class\">.yml<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>You will be prompted for a new vault password.<\/li>\n\n\n\n<li>The editor opens. Enter your secret variables: <code>db_user: admin db_password: SuperSecret123<\/code><\/li>\n\n\n\n<li>Save and exit. Now <code>secrets.yml<\/code> is fully encrypted.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>Encrypt<\/strong> \u2013 Encrypt an existing file<\/h3>\n\n\n\n<p><strong>Command:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">ansible-vault encrypt group_vars\/all.yml\n<\/code><\/span><\/pre>\n\n\n<p><strong>What it does:<\/strong><br>Encrypts an existing plaintext file.<\/p>\n\n\n\n<p><strong>Example Workflow:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">ansible-vault encrypt group_vars\/all.yml\n<\/code><\/span><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>You\u2019ll be prompted for a password.<\/li>\n\n\n\n<li>The file is encrypted and can no longer be read as plain text.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">3. <strong>Decrypt<\/strong> \u2013 Decrypt an encrypted file<\/h3>\n\n\n\n<p><strong>Command:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ansible-vault<\/span> <span class=\"hljs-selector-tag\">decrypt<\/span> <span class=\"hljs-selector-tag\">secrets<\/span><span class=\"hljs-selector-class\">.yml<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>What it does:<\/strong><br>Decrypts a file, turning it back into readable plain text.<\/p>\n\n\n\n<p><strong>Example Workflow:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ansible-vault<\/span> <span class=\"hljs-selector-tag\">decrypt<\/span> <span class=\"hljs-selector-tag\">secrets<\/span><span class=\"hljs-selector-class\">.yml<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Enter the vault password.<\/li>\n\n\n\n<li><code>secrets.yml<\/code> is now unencrypted and can be viewed\/edited by anyone.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">4. <strong>Edit<\/strong> \u2013 Edit an encrypted file (without manual decrypt\/re-encrypt)<\/h3>\n\n\n\n<p><strong>Command:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ansible-vault<\/span> <span class=\"hljs-selector-tag\">edit<\/span> <span class=\"hljs-selector-tag\">secrets<\/span><span class=\"hljs-selector-class\">.yml<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>What it does:<\/strong><br>Decrypts the file <strong>in-memory<\/strong> for editing, then automatically re-encrypts it when you save and close the editor.<\/p>\n\n\n\n<p><strong>Example Workflow:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ansible-vault<\/span> <span class=\"hljs-selector-tag\">edit<\/span> <span class=\"hljs-selector-tag\">secrets<\/span><span class=\"hljs-selector-class\">.yml<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Enter your vault password.<\/li>\n\n\n\n<li>File opens in your editor. Make your changes: <code>db_password: EvenBetterSecret456<\/code><\/li>\n\n\n\n<li>Save and exit; file is re-encrypted.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">5. <strong>View<\/strong> \u2013 View the contents of an encrypted file (read-only)<\/h3>\n\n\n\n<p><strong>Command:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ansible-vault<\/span> <span class=\"hljs-selector-tag\">view<\/span> <span class=\"hljs-selector-tag\">secrets<\/span><span class=\"hljs-selector-class\">.yml<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>What it does:<\/strong><br>Allows you to <strong>read<\/strong> (but not edit) the contents of the encrypted file after entering the vault password.<\/p>\n\n\n\n<p><strong>Example Workflow:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ansible-vault<\/span> <span class=\"hljs-selector-tag\">view<\/span> <span class=\"hljs-selector-tag\">secrets<\/span><span class=\"hljs-selector-class\">.yml<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Enter password.<\/li>\n\n\n\n<li>The contents are displayed in your terminal.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">6. <strong>Encrypt_string<\/strong> \u2013 Encrypt a string to use in playbooks or variable files<\/h3>\n\n\n\n<p><strong>Command:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">ansible-vault encrypt_string <span class=\"hljs-string\">'MySecretValue'<\/span> --name <span class=\"hljs-string\">'api_key'<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>What it does:<\/strong><br>Encrypts a single string and prints the encrypted value, suitable for inline use in YAML files.<\/p>\n\n\n\n<p><strong>Example Workflow:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">ansible-vault encrypt_string <span class=\"hljs-string\">'MySecretValue'<\/span> --name <span class=\"hljs-string\">'api_key'<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Output: <code>api_key: !vault | $ANSIBLE_VAULT;1.1;AES256 6634663264633862653737363339383739616632663837623233633637356536 6632626164656236373861303962646531346535613936390a64346664616435 ...<\/code><\/li>\n\n\n\n<li>Copy-paste this directly into your vars file or playbook.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">7. <strong>Rekey<\/strong> \u2013 Change the password of an encrypted file<\/h3>\n\n\n\n<p><strong>Command:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ansible-vault<\/span> <span class=\"hljs-selector-tag\">rekey<\/span> <span class=\"hljs-selector-tag\">secrets<\/span><span class=\"hljs-selector-class\">.yml<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>What it does:<\/strong><br>Changes the vault password on one or more encrypted files.<\/p>\n\n\n\n<p><strong>Example Workflow:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ansible-vault<\/span> <span class=\"hljs-selector-tag\">rekey<\/span> <span class=\"hljs-selector-tag\">secrets<\/span><span class=\"hljs-selector-class\">.yml<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Enter <strong>current<\/strong> password.<\/li>\n\n\n\n<li>Enter <strong>new<\/strong> password.<\/li>\n\n\n\n<li>File is re-encrypted with the new password.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Vault Password Handling<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To avoid manual prompts, use: <code>ansible-playbook site.yml --ask-vault-pass # or ansible-playbook site.yml --vault-password-file ~\/.vault_pass.txt<\/code> <em>(Be sure to secure <code>~\/.vault_pass.txt<\/code> with proper file permissions!)<\/em><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Using Encrypted Files in Playbooks<\/strong><\/h2>\n\n\n\n<p>Ansible automatically decrypts vault files if you provide the password:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># In your playbook:<\/span>\n- hosts: all\n  vars_files:\n    - secrets.yml\n  tasks:\n    - debug:\n        msg: <span class=\"hljs-string\">\"The DB password is {{ db_password }}\"<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Run with:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ansible-playbook<\/span> <span class=\"hljs-selector-tag\">playbook<\/span><span class=\"hljs-selector-class\">.yml<\/span> <span class=\"hljs-selector-tag\">--ask-vault-pass<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Summary Table: Ansible-vault Commands<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Command<\/th><th>Purpose<\/th><th>Example<\/th><\/tr><\/thead><tbody><tr><td><code>create<\/code><\/td><td>Make a new encrypted file<\/td><td><code>ansible-vault create secrets.yml<\/code><\/td><\/tr><tr><td><code>encrypt<\/code><\/td><td>Encrypt an existing file<\/td><td><code>ansible-vault encrypt vars.yml<\/code><\/td><\/tr><tr><td><code>decrypt<\/code><\/td><td>Decrypt an encrypted file<\/td><td><code>ansible-vault decrypt secrets.yml<\/code><\/td><\/tr><tr><td><code>edit<\/code><\/td><td>Edit an encrypted file securely<\/td><td><code>ansible-vault edit secrets.yml<\/code><\/td><\/tr><tr><td><code>view<\/code><\/td><td>View an encrypted file (read-only)<\/td><td><code>ansible-vault view secrets.yml<\/code><\/td><\/tr><tr><td><code>encrypt_string --name VAR<\/code><\/td><td>Encrypt a single string for use as a variable<\/td><td><code>ansible-vault encrypt_string 'value' --name var<\/code><\/td><\/tr><tr><td><code>rekey<\/code><\/td><td>Change the vault password for a file<\/td><td><code>ansible-vault rekey secrets.yml<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Best Practices<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Only encrypt what\u2019s sensitive<\/strong> (not all files).<\/li>\n\n\n\n<li><strong>Keep vault passwords secure<\/strong>\u2014don\u2019t commit them to version control.<\/li>\n\n\n\n<li><strong>Rotate passwords regularly<\/strong> using the <code>rekey<\/code> command.<\/li>\n\n\n\n<li><strong>Audit encrypted files<\/strong> so you know what\u2019s protected.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Extra: Vault IDs for Multiple Passwords (Advanced)<\/strong><\/h2>\n\n\n\n<p>You can use <strong>Vault IDs<\/strong> to encrypt different files with different passwords (e.g., one for dev, one for prod).<\/p>\n\n\n\n<p><strong>Encrypt with a vault ID:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ansible-vault<\/span> <span class=\"hljs-selector-tag\">encrypt<\/span> <span class=\"hljs-selector-tag\">--vault-id<\/span> <span class=\"hljs-selector-tag\">dev<\/span><span class=\"hljs-keyword\">@prompt<\/span> dev-secrets.yml\nansible-vault encrypt --vault-id prod@prompt prod-secrets.yml\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>And use both in a playbook:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ansible-playbook<\/span> <span class=\"hljs-selector-tag\">site<\/span><span class=\"hljs-selector-class\">.yml<\/span> <span class=\"hljs-selector-tag\">--vault-id<\/span> <span class=\"hljs-selector-tag\">dev<\/span><span class=\"hljs-keyword\">@prompt<\/span> --vault-id prod@prompt\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>References<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/vault.html\" target=\"_blank\" rel=\"noopener\">Ansible Vault Documentation<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here is a very detailed and comprehensive tutorial on using Ansible Vault with practical, real-world examples for each subcommand. Ansible Vault Tutorial Ansible Vault is a powerful feature that allows&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-51336","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/51336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=51336"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/51336\/revisions"}],"predecessor-version":[{"id":51337,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/51336\/revisions\/51337"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=51336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=51336"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=51336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}