簡體   English   中英

在其他變量中使用加密變量

[英]Ansible use encrypted variables in other variables

我正在構建一些可以執行各種維護任務的劇本。 為此,他們需要MySQL登錄帳戶。 有幾個數據庫服務器,所以我創建了一個包含所有信息的變量。 舉例說明事情:

./vars/main.yml

  # 'secret' variables
  host1url: some_url
  host1user: user
  host1pass: pass
  host2url: some_url
  host2user: user
  host2pass: pass


  # array of db hosting info
  dbhosts:
    - name: host1
      host: {{ host1url }}
      user: {{ host1user }}
      pass: {{ host1pass }}
    - name: host2
      host: {{ host2url }}
      user: {{ host2user }}
      pass: {{ host2pass }}

./roles/the_role/tasks/main.yml
    - name: create script to perform task
      template:
        src=do_something.sh
        dest=do_something_{{ item.name }}.sh
      with_items:
        dbhosts

    - name: perform task
      command: do_something_{{ item.name }}.sh
      with_items:
        dbhosts

這可行,但是我想將“秘密”變量移動到另一個文件,這樣我可以:

  • 根據特定的劇本或情況添加不同的用戶集
  • 加密文件以供Ansible Vault使用

如何將dbhosts結構保留在main.yml文件中以供參考,並將“秘密”變量移動到其他文件中?

我所能找到的只是如何在運行時在任務中添加帶有變量的文件的信息,但是是否不應該在加載變量“ dbhosts”之前加載它,以便在dbhosts中擴展變量將起作用?

從此處的博客文章中: http : //www.reinteractive.net/posts/167-ansible-real-life-good-practices

我相信這是您要尋找的:

我們喜歡Ansible的地方在於可讀性,而加密可以使事情變得更好,更不易讀。

ansible-vault命令將加密或解密整個var文件,您不能僅加密變量的值。 解決方案非常簡單:僅創建第二個var文件,僅用於敏感數據。 但這又引起了另一個問題:您的變量現在分布在多個文件中,其中一些已加密。 這會變得凌亂。 例如,如果您定義了一個變量字典,而其中只有一個是敏感變量,則必須對整個字典進行加密。

葉子加密是一項功能請求,但與此同時,有一種保持其可讀性和安全性的優雅方法:嵌套變量。

對於每個敏感變量,您都創建一個前綴雙精度型,該雙精度型放入加密文件中。

# var_file
db_password: {{ vaulted_db_passord }}
# and for a dctionnary
aws: 
  - "access_key_id='abcdefgh'"
  - "secret_access_key='{{ vaulted_aws_secret_access_key }}'"

# vault_file
vaulted_db_passord: a_super_secret
vaulted_aws_secret_access_key: the_aws_secret

這樣,您就可以像以前一樣操作所有var,知道Vault版本保持加密狀態。 您甚至可以解決由負責加密文件的人員負責的問題,而團隊的其他成員卻看不到其內容,但仍然能夠根據需要管理var文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM