簡體   English   中英

Test Kitchen-如何將本地用戶登錄作為Chef屬性傳遞?

[英]Test Kitchen - How can I pass the local user login in as a Chef attribute?

我們的開發環境包括本地VM,這些VM運行對雲中更大的共享資源的查詢。

它的設置方式是將本地用戶的登錄名作為屬性傳遞給Chef角色,該屬性用於定義SSH和DB連接。

當前,我們在Vagrantfile中使用Ruby提取登錄名,並使用vm.provision在來賓VM的文件系統上創建/ tmp文件。 我們對本地VM的Chef角色讀取該文件的內容,並將該值傳遞到屬性中。

Vagrantfile:

# -*- mode: ruby -*-
# vi: set ft=ruby :

(snip)

require 'etc'
user = Etc.getlogin

(snip)

analytics.vm.provision :shell, inline: "echo #{user} > /tmp/remote_user"

在Chef運行期間,以下內容將讀取/ tmp / remote_user的內容:

remote_user = File.open("/tmp/remote_user", "r").read.strip
sandbox = "_#{remote_user}"

default_attributes "remote_user" => remote_user,
    "sandbox" => sandbox,

有沒有更好的方法將當前用戶的登錄名作為屬性添加到本地Chef運行?

如果沒有,我如何在.kitchen.yml中復制舊Vagrantfile中具有的功能?

Test Kitchen通過ERB處理.kitchen.yml ,因此您只需在ERB文件中輸入以下內容即可:

attributes:
  foo: <%=  ENV['STUFF'] %>

然后node['foo']將包含$STUFF 根據您的情況將STUFF切換為USER。

暫無
暫無

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

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