2016-12-01 61 views
1

在我的site.yml中,我運行了一些常見任務,然後添加了3個其他操作手冊。這三個劇本然後分別扮演一個角色。 我這樣做,所以我可以運行一個完整的site.yml安裝,或者我可以運行一個較小的劇本。檢查是否存在有問題的提示變量

我想在site.yml中提示輸入用戶名和密碼,我可以這樣做。 然後在其他3個劇本/角色中,我想檢查用戶名和密碼是否已經創建,如果沒有,則提示輸入。

我不想多次提示憑據。

site.yml

--- 
- hosts: all 

    vars_prompt: 
    - name: "username" 
    - prompt" "enter username" 

- include: 1.yml 

1.yml

--- 
- name: install one 
    hosts: all 

    # If username has not been defined - This is 
    # where I am confused how to check if it was defined in site.yml 
    vars_prompt: 
    - name: "userame" 
     prompt: "enter username" 
    roles: 
    - 1role 

如果我運行site.yml,它會得到用戶名,然後運行1.yml,我不希望它提示輸入用戶名,因爲它在site.yml中提示。

如果我只運行1.yml,我希望它提示輸入用戶名,因爲在這種情況下我沒有運行site.yml。

有沒有辦法提示從劇本中獲得憑據,然後在包含的劇本中檢查它們?

+0

http://docs.ansible.com/ansible/playbooks_conditionals.html –

回答

0

你應該創建一個文件,在主機上進行無效寫入,然後可以檢查這些證書是否已經被填入或者還沒有,或者你可以使用註冊(可能是最好的選擇),然後使用何時檢查(何時就像if語句)

例如:

site.yml

- name: "username" 
- prompt" "enter username" 
    register: username_check 

1.yml

- name: "userame" 
    prompt: "enter username" 
    when: username_check is not defined 

我希望這在某些方面有所幫助。我試圖評論,但它不會讓我。

+0

使用註冊表不起作用。我在site.yml中提示,然後在1.yml中再次提示。我會試着先檢查一下,寫一個文件,然後檢查文件。我不喜歡那種方法。 –

+0

我想這是有道理的,註冊不起作用,因爲他們是不同的劇本。如果有一種更簡單的方法將變量轉換爲真或假(這正是我用文件方法思考的問題)。 – Cloudish123

相關問題