首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过Ansible Tower API将可变数据传递到剧本模板

如何通过Ansible Tower API将可变数据传递到剧本模板
EN

Stack Overflow用户
提问于 2021-11-10 17:03:12
回答 2查看 1.3K关注 0票数 1

我们使用Ansible进行操作,以执行流程重新启动。如果收到警报,表示进程已停止,则执行Ansible Tower作业,并从警报中提供主机名和进程名,作为“调查”变量。更多的事情发生了,我们不只是盲目地重启每一个失败。

我希望通过从警报中获取主机名和进程名,并调用Tower模板来自动化python。我希望将主机名和进程名作为"-e“变量传递,但是我找不到任何关于如何在python中编码"extra_vars”的文档。

带有服务变量的剧本部分如下所示:

代码语言:javascript
复制
- name: Check "{{ service }}"
  shell: systemctl status "{{ service }}".service | grep Active | awk -v N=2 '{print $N}'
  register: output
  tags: always

- name: Start "{{ service }}"
  service:
    name: "{{ service }}"
    state: started
  when: output.stdout == 'inactive'
  tags: start

python3代码的相关部分如下所示:

代码语言:javascript
复制
headers = {'Content-Type': 'application/json'}
data = see below, this is where I am stuck
response = requests.post('http://localhost/api/v2/job_templates/13/launch/', headers=headers, data =data, verify=False, auth=('user','pass')

我试过:

代码语言:javascript
复制
data = '{"service":"apache2"}'
data = '{"variables":["service","apache2"]}
data = '{"extra_vars":["service","apache2"]}

所有这些都失败了,导致请求失败,得到400个响应。

对于使用VariableManager(),在堆栈溢出中似乎有答案,但该方法似乎绕过了the和现有的模板。

对我如何通过"extra_vars“有什么想法吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-10 17:22:32

根据https://docs.ansible.com/ansible-tower/latest/html/towerapi/api_ref.html#/Job_Templates/Job_Templates_job_templates_launch_create,Per期望变量在JSON体中作为extra_vars

这种尝试是最接近的:

代码语言:javascript
复制
data = '{"extra_vars":["service","apache2"]}

但是,出于某种原因,您将其格式化为字符串列表,而不是将变量的标准表示形式用作字典/映射。

代码语言:javascript
复制
data = '{"extra_vars": {"service": "apache2"}}'
票数 3
EN

Stack Overflow用户

发布于 2021-11-10 17:26:45

找到了。

我继续运行"curl“命令,试图填充"service”变量,得到了一个错误:"variables_needed_to_start值缺失“,当我在googled上搜索到Ansible docs:(https://docs.ansible.com/ansible-tower/latest/html/userguide/job_templates.html#extra-variables)中的语法时

body ={“extra_vars”:{“变量”:“value”}}‘

谢谢

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69917346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档