基于条件的Linux服务器上的应用程序重启自动化

xwmevbvl  于 2023-05-16  发布在  Linux
关注(0)|答案(2)|浏览(208)

我们需要在Linux机器上启动JFrog工具服务,并给出如下所述的某些条件。
我们有JFrog Artifactory和JFrog Xray托管在不同的服务器上。这两个应用程序都在PostgreSQL数据库服务器中托管数据库。
我们需要确保在两个JFrog应用程序启动之前,数据库服务器已经启动并且可以访问。操作的顺序需要是数据库服务器联机并可访问,然后需要启动Artifactory服务,一旦Artifactory启动,我们需要启动Xray服务。
我们尝试使用shell脚本沿着Azure DevOps管道,但由于无法启动JFrog生产服务器而受阻。Azure DevOps代理无法正确检查服务的状态并运行必要的启动脚本。
我们在组织中使用Ansible Tower。问题是,这是Ansible playbooks可以很好地处理的事情,还是我们应该考虑其他方法?

gfttwv5a

gfttwv5a1#

开始我们的...托管的服务...在某些条件下 *

  • ...如果数据库服务器已启动,并且可以从应用程序服务器访问数据库...需要启动Artifactory服务,一旦Artifactory启动,则需要启动X射线服务... *
  • ...这是Ansible剧本可以很好地处理的事情吗 *

是的,当然,这可以简单地通过

举个例子

- hosts: artifactory
  become: false
  gather_facts: false

  tasks:

  - name: Test connection
    wait_for:
      host: postgresql.example.com
      port: 5432
      state: drained         # Port should be open
      delay: 0               # No wait before first check (sec)
      timeout: 3             # Stop checking after timeout (sec)
      active_connection_states: SYN_RECV

  - debug:
      msg: "Several other tasks, in example starting Artifactory"

- hosts: xray
  become: false
  gather_facts: false

  tasks:

  - name: Test REST API connection
    URI:
      url: https://repository.example.com/artifactory/system/ping
      method: GET
      status_code: 200
      return_content: true
    register: result
    until: result.status == 200 and result.content == 'OK'
    retries: 10              # Retry n times
    delay: 30                # Pause between each call (sec)

  - debug:
      msg: "Several other tasks ..."

建议查看wait_for_http的所有示例,并定义JFrog Artifactory REST API的哪个状态,端点和结果被认为是GOOD/STARTED/UP。因此,在示例中,可以使用端点system/ping,它只返回OK作为How to use Artifactory Health Check

mrwjdhj3

mrwjdhj32#

你看过https://jfrog.com/help/r/jfrog-installation-setup-documentation/enable-postgresql-connectivity-from-remote-servers的文档了吗?
如果您使用脚本路由,您可以使用类似pg_isready -h someremotehost的东西来确定数据库服务器的状态(更多信息请参见https://www.postgresql.org/docs/current/app-pg-isready.html)。
要确定伪影何时出现,可以 curl 端点(更多信息请参见https://jfrog.com/knowledge-base/artifactory-how-to-use-artifactory-health-check/)。
下面是提供的示例之一:

curl -uadminuser:Password  -XGET http://localhost:8081/artifactory/api/system/ping -H 'Content-Type: text/plain'

Output Response : OK

在这个线程Docker wait for postgresql to be running中有一些可能有用的提示

相关问题