安赛后没有进入下一步

问题描述 投票:0回答:1

我有一个ansible shell任务执行一个sh脚本,这个:

#/bin/bash

echo Which version will you be using
read VERSION
export VERSION=$VERSION

sh deployvcenter.v1.sh

sh deployf5.v1.sh

sh deployadmin.sh

ansible任务看起来像这样:

- name: Run build scripts
  shell:
    cmd: echo "beta-1" | sudo sh /home/admin/buildscripts/deployall.sh >> /tmp/build.log
    chdir: /home/admin/buildscripts
  become: true
  become_method: su
  become_user: root

deployadmin.sh的最后一部分是这样的:

terraform init && terraform apply -var-file=static-ip.tfvars -auto-approve -input=false

terraform完成,因为/tmp/build.log最后有这个:

vsphere_virtual_machine.vm: Still creating... (1m10s elapsed)
vsphere_virtual_machine.vm: Creation complete after 1m17s (ID: 4226c091-bb3a-4d3a-d2af-c31933425991)

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Outputs:

ip_address = ip addy

但是ansible只是坐在那个任务上,而不是移动到下一个任务。

TASK [Run build scripts] *******************************************************

我不明白为什么它不移动到下一个或错误?

更新:

我让这个运行,大约一个小时后,我得到了这个:

TASK [Run build scripts] *******************************************************

fatal: [ip]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Shared connection to ip closed.\r\n", "unreachable": true}

这很奇怪,因为我在一个单独的终端上进入机器并再次执行它仍然在那里......任务确实成功完成所以我不太确定它试图做什么...

linux ansible
1个回答
0
投票

我将在这里发布我自己的答案作为一种解决方法,因为在几个小时之后,我无法弄清楚它不会移动到下一步。

绝对是效率最低的方式(更不用说其他问题了),但希望这能让其他任何遇到类似问题的人如果遇到类似的情况就能解决这个问题。

我最终用这样的nohup运行任务:

   - name: Run build scripts
      shell: cd /home/admin/buildscripts; nohup sh deployall.sh > /tmp/build.log 2>&1 &
      become: true
      become_method: su
      become_user: root

运行shell命令的任务完成,进程正确退出但不确定为什么ansible不会提取它。

然后,我添加了另一项任务,以查看vcenter服务器和其他服务器是否出现如下:

- name: Wait for Vcenter to come alive
  uri:
    url: "https://vcenter/vsphere-client/?csp"
    status_code: 200
    validate_certs: False
  register: result
  until: result.status == 200
  retries: 240
  delay: 30
  tags:
    - debug

- name: Wait for F5 to come alive and get token
  uri:
    url: https://{{ f5_addr }}/mgmt/shared/authn/login
    method: POST
    body_format: json
    body:
      username: '{{ f5_user }}'
      password: '{{ f5_pass }}'
      needsToken: true
    return_content: yes
    validate_certs: no
  register: token
  until: token.status == 200
  retries: 240
  delay: 30
  tags:
    - f5license

- name: Waits ws to come up
  wait_for:
    host: '{{ admin_ip }}'
    port: 22
© www.soinside.com 2019 - 2024. All rights reserved.