2017-07-24 73 views
0

我將變量ACTION傳遞給site.yml,如下所示。將變量作爲標籤傳遞給角色不起作用

ansible-playbook -v -i sslhost.txt -e "APP_NAME=ssl-perf ACTION=renewal, gen_cert" site.yml 

我的site.yml有一個叫做「經理」的角色,我將ACTION變量作爲標籤傳遞給它。見下文。

more site.yml 
- hosts: "{{APP_NAME}}" 
    user: "{{USER}}" 
    roles: 
    - { role: manager, APPLICATION_NAME: "{{ APP_NAME }}", tags: [ '{{ ACTION }}' ] } 

經理角色的任務/ main.yml看起來像這樣

more manager/tasks/main.yml 
--- 
# tasks file for manager 

- include: manager_pull.yml 
    tags: renewal 
- include: manager_gen.yml 
    tags: gen_request 
- include: manager_gencert.yml 
    tags: gen_cert 
- include: manager_push.yml 
    tags: install 

我所期待的只是manager_pull.yml和manager_gencert.yml被列入角色,但輸出顯示,所有包括在經理角色被包含/調用。

我ansible版本:2.1.0.0

能否請您解釋一下爲什麼我不能夠傳球動作變量作爲標籤ansible作用?

另外任何人也可以告訴我是否以及如何將標籤而不是ACTION變量傳遞給site.yml並讓它工作?

回答

0

您不能將標籤作爲參數傳遞給您的劇本中的角色。你在這裏有效地做的是給你的經理角色添加另一個標籤(renewal, gen_cert)。

而不是用變量定義標籤使用--tags標誌。

ansible-playbook -v -i sslhost.txt -e "APP_NAME=ssl-perf" --tags=renewal,gen_cert site.yml

+0

我想你的命令,但它仍然是包括經理/任務/ main.yml而不是僅僅兩個所有YMLs。我必須做出什麼樣的改變才能使其發揮作用?我如何將-tags = renewal,gencert傳遞給名爲manager/task/main.yml的角色? – shifahim

+1

您是否仍將具有'ACTION'變量的標籤添加到您的Playbook中的經理角色?是否有任何標籤附加到manager_pull.yml,manager_gen.yml,manager_gencert.yml或manager_push.yml中的任務? – kfreezy

+0

你是對的。隨着你的建議命令,我不得不從site.yml刪除標籤[],使其工作。問題解決之後,這就是現在在site.yml中角色的樣子 - {role:manager,APPLICATION_NAME:「{{APP_NAME}}」} – shifahim