【问题标题】:Converting into roles转换为角色
【发布时间】:2020-03-03 19:37:35
【问题描述】:

这是我编写的剧本的一部分。但是想要实现角色而不是使用 Api 的。在这里你可以看到有超过 2 个 api,我在脚本中也有更多。您能给出任何想法将其转换为角色吗?如何将其修改为角色

- name: Get df 
  uri:
    url: "{{ci}}"
    method: GET
    user: '{{ lookup("env", "@@@@@@") }}'
    password: '{{ lookup("env", "@@@@@@") }}'
    HEADER:
    Content-Type: application/json
    #body: "{{req_body|to_json}}"
    force_basic_auth: true
    status_code: 200,400,401
    timeout: 15
    validate_certs: false
    body_format: json
  delegate_to: ########
  register: df_response
- set_fact:
    df_response: "{{df_response}}"
    df: "{{df_response.json.result[0].comments}}"
  when: df_response.status == 200

- name: Get GroupName based on CI Name
  uri:
    url: "{{getgroup}}={{ BotCI_name}}"
    method: GET
    user: "{{!!!!!!!}}"
    password: "{{######}}"
    headers:
      #Authorization: "{{token}}"
      Content-Type: application/json
    #body: "{{BotCI_name/json}}"
    force_basic_auth: true
    status_code: 200,400,401,404
    timeout: 60
    validate_certs: false
    body_format: json
  register: inventorygroup

- name: Get HostName based Group Name
  # Get this from Ansible Tower
  uri:
    url: "{{^^^^^}}{{inventorygroup_hostresponse}}"
    method: GET
    user: "{{$$$$$$$$$$}}"
    password: "{{%%%%%%%%%%%}}"
    headers:
      #Authorization: "{{token}}"
      Content-Type: application/json
    #body: "{{/json}}"
    force_basic_auth: true
    status_code: 200, 400, 401,404
    timeout: 15
    validate_certs: false
    body_format: json
  register: hostname

【问题讨论】:

    标签: python api ansible roles


    【解决方案1】:

    (未测试)使用以下内容创建文件<main folder>/roles/gen_token/tasks/main.yml

    ---
    - name: Generate Token to run API calls to Ansible
      uri:
        url: {{url}}
        method: POST
        user: '******'
        password: 'aa********'
        HEADER:
        Content-Type: application/json
        #body: "{{req_body|to_json}}"
        force_basic_auth: true
        status_code: 200,400,401
        timeout: 15
        validate_certs: false
        body_format: json
      delegate_to: per0dans01
      register: yutoken
    - set_fact:
        t_token_response: "{{yutoken.token}}"
      when: yutoken.status == 200
    
    - debug:
        msg: "Token printed: {{yutoken}}"
    

    然后调用主剧本<main folder>/main.yml中的角色

    ---
    - hosts: all
      roles:
      - { role: gen_token, url: "http://1.1.0.1/api/v2/user/******/personal_token*/" }
      - { role: gen_token, url: "http:another/url/personal_token*/" 
    
    
    

    ---
    
    - hosts: all
      tasks:
      - include_role:
           name: gen_token
        vars:
          url: 'url1'
      - include_role:
           name: gen_token
        vars:
          url: 'url2'
    
    

    【讨论】:

    • 我目前正在为一个剧本使用三个类似的文件。除了所有代码都相同之外,每个文件都有不同的 url。如何用单个更改这些文件?
    • 更新了答案,请检查是否是你需要的
    • 我再次编辑了这个问题...请检查一下
    • 每当api调用有差异时,如果将变量传递给角色有什么问题
    • 你可以传递角色中的所有变量。 - {角色:gen_token,url:“http:another/url/personal_token*/,方法:GET,用户名:用户”。但我不确定寄存器变量
    猜你喜欢
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2014-07-22
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多