2016-12-28 4 views
2

私はAnsibleプレイブックのユーザー入力に基づいて特定の変数を選択したいと思います。具体的には、サーバーの場所に関するユーザー入力を求めてから、その入力に基づいて特定のアクションを実行したいと考えています。Ansible - 変数を選択するためのユーザー入力の使用

これは、現在のansible脚本です:脚本を実行している

- hosts: all 
     remote_user: root 
     gather_facts: True 
     vars: 
     loc1: "10.13.1.140" 
     loc2: "10.13.1.141" 
     loc3: "10.13.1.142" 

    vars_prompt: 
     - name: location 
     prompt: "Location of server? Input options: loc1/loc2/loc3" 
     private: no 

    tasks: 
     - name: Test connectivity to user selected location 
     wait_for: host={{ vars.location }} port=9999 delay=0 timeout=10 state=started 

出力:

[[email protected] cfengine]# ansible-playbook testpoo.yaml -i /tmp/test 
SSH password: 
Location of server? Input options: loc1/loc2/loc3: loc2 

PLAY  *************************************************************************** 

TASK [setup] ******************************************************************* 
ok: [hostname.domain.com] 

TASK [Test connectivity to user selected location] ***************************** 
fatal: [hostname.domain.com]: FAILED! => {"changed": false, "elapsed": 10, "failed": true, "msg": "Timeout when waiting for loc2:9999"} 

PLAY RECAP ********************************************************************* 
hostname.domain.com : ok=1 changed=0 unreachable=0 failed=1 
私は、ユーザー入力に読み取りリンクする方法または最善の方法を知っているしたいと思います

変数セクションの一番上に定義されているロケーションの実際の値(IPアドレス)を持つロケーション。おそらく評価や他の何か?

答えて

2

あなたのタスクはloc2、つまりメッセージTimeout when waiting for loc2:9999を待っています。

代わりにhost={{ vars[location] }}を使用してください。

は、次のタスクの出力を比較します

tasks: 
    - name: Show the value user entered 
    debug: var=vars.location 

    - name: Use the entered value as an index 
    debug: var=vars[location] 

結果(省略):

TASK [Show the value user entered] ********************************************* 
ok: [localhost] => { 
    "vars.location": "loc2" 
} 

TASK [Use the entered value as an index] *************************************** 
ok: [localhost] => { 
    "vars[location]": "10.13.1.141" 
} 
+0

それは魅力のように働きました。助けてくれてありがとう!!! – nickyt4free

関連する問題