转化为角色
Converting into roles
这是我编写的剧本的一部分。但是想要实现角色而不是使用 Api 的。在这里你可以看到有超过 2 个 api,我在脚本中也有一些。你能给出任何想法将其转换为 roles.How 以将其修改为角色
- 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
(未测试)创建一个包含以下内容的文件 <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'
这是我编写的剧本的一部分。但是想要实现角色而不是使用 Api 的。在这里你可以看到有超过 2 个 api,我在脚本中也有一些。你能给出任何想法将其转换为 roles.How 以将其修改为角色
- 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
(未测试)创建一个包含以下内容的文件 <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'