Ansible任务基于调试输出

时间:2017-11-21 10:39:53

标签: web-services ansible

我正在使用Ansible对我们的Web服务运行一些测试用例。以下是我的剧本:

    - hosts: localhost
      connection: local
      tasks:
        - name: Testing the API...
          uri:
          url: https://api.example.com/v1/
          method: GET
          user: username
          password: password
          status_code: 200
          return_content: yes
          force_basic_auth: yes
        register: results

       - debug: var=results

上面的playbook工作正常并返回以下输出:

    ok: [localhost] => {
   "results": {
    "access_control_allow_origin": "*", 
    "cache_control": "max-age=864000, private", 
    "changed": false, 
    "connection": "close", 
    "content": "\r\n{\"id\":1,\"deleted\":false,\"first-name\":\"xxx\",\"last-name\":\"xxx\",\"name\":\"xxx\",\"title\":\"xxx\",\"background\":\"\",\"company-id\":xx,\"company-name\":\"example\",\"company-type-id\":2,\"company-type-name\":\"Customer\",\"email-address-work\":\"kk@example.info\",\"email-address-personal\":\"\",\"email-address-alternate\":\"\",\"email-address-other\":\"\",\"phone-number-work\":\1234567890\",\"phone-number-home\":\"\",\"phone-number-mobile\":\"252654789\",\"phone-number-alternate\":\"256471235\",\"business-street\":\"526574, usa\",\"business-city\":\"San Antonio\",\"business-state\":\"TX\",\"business-zip\":\"1234607\",\"business-country\":\"United States\",\"home-street\":\"\",\"home-city\":\"\",\"home-state\":\"\",\"home-zip\":\"\",\"home-country\":\"\",\"created-time\":\"2015-11-03T20:56:33.000Z\",\"last-modified-time\":\"2017-11-21T06:27:55.000Z\",\"tags\":[]}", 
    "content_length": "857", 
    "content_type": "application/json", 
    "date": "Tue, 21 Nov 2017 09:59:34 GMT", 
    "expires": "Fri, 01 Dec 2017 09:59:34 GMT", 

现在,如果'content'部分的花括号外有任何数据,我想运行另一个任务。在上面的输出中,它以'content": "\r\n{\"id\":1,\"deleted...'开头。知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

这种情况应该足够了:

when: "(results.content | regex_replace('{.*}', '')) != ''"

在删除{}之间的所有内容后,检查字符串是否为空。