2016-11-06 64 views
0

我寫的ansible劇本將:Ansible:無法存取寄存器的值

  1. 登錄到Windows中,如果
  2. 檢查我正在部署的應用程序的版本已經存在
  3. 下載應用從混帳
  4. 提取應用程序的zip文件
  5. 它移動到正確的目錄

我在一段代碼中遇到了一堆麻煩,我需要找到提取的目錄。我解壓GIT壓縮文件,當然,通過Github壓縮文件包含git哈希目錄。我所做的是我通過一個簡單的find-like命令在windows中尋找這個目錄。問題是,在調試過程中,我可以看到stdout_lines中的結果......但實際上,它似乎不起作用。

下面是代碼:

--- 
# Register our work path to do work in 
- name: Registering {{apm_work_path}} as our working path 
    tags: install 
    win_stat: path={{apm_work_path}} 
    register: my_apmworkpath 

# First check to see if an agent is already installed in our 
# destination. We want to make sure we dont install multiple 
# agents 
- name: Checking if {{apm_root_path}} path exists on our remote server 
    tags: install 
    win_stat: path={{apm_root_path}} 
    register: my_apmrootpath 

# Check if the apm agent is installed in the root path 
- name: Checking if {{apm_root_path}}\\{{apm_install_path}} path exists 
    tags: install 
    win_stat: path={{apm_root_path}}/{{apm_install_path}} 
    register: my_apminstallpath 

# Check if the apm version is installed in the root path 
- name: Checking if {{apm_version}} path exists 
    tags: install 
    win_stat: path={{apm_root_path}}\\{{apm_install_path}}\\{{apm_version}} 
    register: my_apmversionpath 

# We also want to make sure that we keep track of the path 
# that we want our agent to be placed 
- name: An agent already exists on server 
    tags: install 
    debug: msg="APM {{apm_version}} is already installed under {{apm_install_path}}" 
    when: my_apminstallpath.stat.exists == true 

# Create our work directory 
- name: Creating Work directory 
    tags: install 
    win_file: path={{apm_work_path}} state=directory mode=0755 
    when: my_apmworkpath.stat.exists == false 

# Create our application directory 
- name: Creating APM Agent directory 
    tags: install 
    win_file: path={{apm_root_path}}\\{{apm_install_path}} state=directory mode=0755 
    when: my_apminstallpath.stat.exists == false 

# Create our versioning directory 
- name: Create APM version directory 
    tags: install 
    win_file: path={{apm_root_path}}\\{{apm_install_path}}\\{{apm_version}} state=directory mode=0775 
    when: my_apmversionpath.stat.exists == false 

# Export our agent from our version control repo (GIT) 
- name: Exporting Agent from GIT 
    tags: install 
    win_get_url: 
    url: http://git.sys.a.com/APM/apm-agent-{{apm_version}}-base-win/repository/archive.zip?ref=master 
    dest: "{{apm_work_path}}\\agent.zip" 
    when: my_apmversionpath.stat.exists == false 

# Make sure we succesfully got our agent downloaded 
- name: Checking our agent download 
    tags: install 
    win_stat: path={{apm_work_path}}\\agent.zip 
    register: my_agentarchive 

# Create the base-nix directory 
- name: Creating base-nix directory 
    tags: install 
    win_file: path={{apm_root_path}}\\{{apm_install_path}}\\{{apm_version}}\\base-win state=directory mode=0755 
    when: 
    - my_apmversionpath.stat.exists == false 
    - my_agentarchive.stat.exists == true 

# Extract our GIT tarball to our new directory 
- name: Extracting Agent 
    tags: install 
    win_unzip: 
     src: "{{apm_work_path}}\\agent.zip" 
     dest: "{{apm_work_path}}" 
     rm: True 
    when: 
    - my_apmversionpath.stat.exists == false 
    - my_agentarchive.stat.exists == true 

############################################################### 
##### THIS SECTION ############################################ 
# Get the extract directory 
- name: Locate the Extracted Directory 
    tags: install 
    win_shell: for /d %d in (*apm-agent*) do echo %d 
    args: 
     executable: cmd 
     chdir: "{{apm_work_path}}" 
    register: extout 

###### UNABLE TO SEE RESULTS HERE ############ 
- debug: msg={{ item }} 
    with_items: extout.stdout_lines 

# Copy data from our work directory to the base-win directory 
- name: Migrate Agent Files 
    tags: install 
    win_copy: 
     src: "{{apm_work_path}}\\{{ item }}\\" 
     dest: "{{apm_root_path}}\\{{apm_install_path}}\\{{apm_version}}\\base-win" 
    with_items: 
     extout.stdout_lines 
    ignore_errors: no 
    when: 
    - my_apmversionpath.stat.exists == false 
    - my_agentarchive.stat.exists == true 

# Now create a symbolic link for the agent path 
- name: Creating Symlink 
    tags: install 
    win_file: src={{apm_root_path}}\\{{apm_install_path}}\\{{apm_version}}\\base-win dest={{apm_root_path}}\\{{apm_install_path}}\\base-win state=link 
    when: 
    - my_apmversionpath.stat.exists == false 
    - my_agentarchive.stat.exists == true 

# And cleanup after ourselves 
#- name: Removing downloaded files 
# tags: install 
# win_file: path={{apm_work_path}} state=absent 
# when: 
# - my_apmversionpath.stat.exists == false 
# - my_agentarchive.stat.exists == true 

相關章節

############################################################### 
##### THIS SECTION ############################################ 
# Get the extract directory 
- name: Locate the Extracted Directory 
    tags: install 
    win_shell: for /d %d in (*apm-agent*) do echo %d 
    args: 
     executable: cmd 
     chdir: "{{apm_work_path}}" 
    register: extout 

###### UNABLE TO SEE RESULTS HERE ############ 
- debug: msg={{ item }} 
    with_items: extout.stdout_lines 

我可以看到我的註冊

changed: [ciwsdbxd8559.silver.com] => { 
    "changed": true, 
    "cmd": "for /d %d in (*apm-agent*) do echo %d", 
    "delta": "0:00:00.062173", 
    "end": "2016-11-06 07:56:51.816995", 
    "invocation": { 
     "module_name": "win_shell" 
    }, 
    "rc": 0, 
    "start": "2016-11-06 07:56:51.754822", 



    "stderr": "", 
    "stdout": "\r\nE:\\SA\\tmp\\apm>echo apm-agent-10.3.0.15-base-win-master-541edbf478cc5e960c33e90b394a9b9cd822def3 \r\napm-agent-10.3.0.15-base-win-master-541edbf478cc5e960c33e90b394a9b9cd822def3\r\n", 
    "stdout_lines": [ 
     "", 
     "E:\\SA\\tmp\\apm>echo apm-agent-10.3.0.15-base-win-master-541edbf478cc5e960c33e90b394a9b9cd822def3 ", 
     "apm-agent-10.3.0.15-base-win-master-541edbf478cc5e960c33e90b394a9b9cd822def3" 
    ], 
    "warnings": [] 
} 

但是下面的調試命令GIV的值es我以下內容:

TASK [../roles/apm_windows : debug] ******************************************** 
task path: /home/SILVER/c53259/ansible/apm_deployment/roles/apm_windows/tasks/agent.yml:95 
ok: [ciwsdbxd8559.silver.com] => (item=extout.stdout) => { 
    "invocation": { 
     "module_args": { 
      "msg": "extout.stdout" 
     }, 
     "module_name": "debug" 
    }, 
    "item": "extout.stdout", 
    "msg": "extout.stdout" 
} 

對發生了什麼有什麼想法?

使用Ansible 2.2 的Python 2.7

+0

您可以發佈代碼的相關部分而不是整個代碼嗎? – helloV

+0

你好。我添加了一個註釋塊,指出相關部分,但是我會提取它以使其更加突出。 –

回答

1

你確定這個工程沒有一個錯誤?因爲mesg在調試中不是有效的選項。你的意思是msg

- debug: mesg={{ item }} 

無論如何,問題是你使用了一個錯誤的參數。因爲您正在打印變量的值,所以請使用var

- debug: var={{ item }} 
    with_items: extout.stdout_lines 
+0

對不起,我的代碼有味精,但我認爲我的拼寫檢查做了一些大聲笑。我會給你一個鏡頭!感謝您及時的回覆。 –

+0

這個伎倆!很簡單。再次感謝您的幫助 –