web-dev-qa-db-ja.com

Ansibleプレイブックの実行時にボールトのパスワードを自動的に渡す方法は?

ボールトを含むAnsibleプレイブックを持っています。Webインターフェースの[プロンプト]ボックスからボールトのパスワードを要求し、Ansibleプレイブックを実行するときに投稿されたパスワードを渡します。私が使用しようとしました:

echo $password | ansible-playbook test.yml --ask-vault-pass

プレイブックにパスワードを渡すが、それが機能しない場合、エラーメッセージは次のとおりです。

"msg": "復号化しようとしていますが、ボールトシークレットが見つかりません"

一部の応答ではパスワードをファイルに保存したくないので、実行中に自動的にプレイブックにパスワードを渡そうとします。何かアドバイスはありますか? ansibleバージョンは2.4です。

11
snow

これが私が物事をやっている方法であり、それはうまくいきます。私のコマンドラインは次のようになります:

[Prompt/]$ansible-playbook -i <inventory>, /mnt/m/NetworkGetters/get_vpn_status.yml --extra-vars varsfilepath=/mnt/m/NetworkVars/Host_vars/test-oci-test-vpn-config.yml

私のサニタイズされたpasswords.yml(ボールトファイル)は次のようになります。

---
credentials:
  base: &base
    Host: "{{ansible_Host}}"
    timeout: 30
    transport: cli
  svc_rhelsystemrw:
    <<: *base
    username: svc_rhelsystemrw
    password: dWERE#@kds23

私のプレイブックはこの慣例に従っています:

name: Set VPN Configuration
  hosts: all
  connection: local
  gather_facts: no
  vars_files:
    - "{{ varsfilepath }}"
    - "/etc/ansible/NetworkVars/passwords.yml"
  vars:
    # ssh_auth credentials come from ansible vault
    provider_rw:
      username:  "{{ credentials['svc_rhelsystemrw'].username }}"
      password:  "{{ credentials['svc_rhelsystemrw'].password }}"

  tasks:
  - name: Capture Pre-change Configuration
    ios_command:
      provider: "{{ provider_rw }}"    
      commands:
        - show running-config
    register: running_config_before
    tags: vpn 

  - debug:
      var: running_config_before.stdout
    tags: vpn
0
RobWieters

@All vault_password_file =をansible.cfgファイルの[defaults]セクションに追加していることを確認してください。

[デフォルト]に移動した後で解決された別のセクションにvault_password_file =を追加すると、同じ問題に直面していました

それが役立つ場合は運を試してください。

0
user12043586