更改Ansible注册变量

时间:2018-11-09 16:37:46

标签: ansible

我正在编写一个Ansible角色,它将更新现有应用程序配置的设置。该角色必须从应用程序的API获取设置。更改部分设置。然后将POST完整集返回给应用程序。

 - name: Get Current Settings
  shell: curl -L -H "Accept: application/json" -u "{{auth}}" https://{{ server }}/api/settings
  register: settings

 - name: update settings
   <Do something to modify settings.stdout as JSON>
   register: newSettings  # Save
   when: settings.Changed = True

 - name: Post Settings
   shell: curl -L -u "{{auth}}" -X POST -H "Content-Type: application/json" -d {{newSettings}}

1 个答案:

答案 0 :(得分:1)

我会考虑使用Ansible的URI module

  

与HTTP和HTTPS Web服务进行交互,并支持Digest,Basic和WSSE HTTP身份验证机制。

您可以使用- uri: url: http://www.example.com return_content: yes register: webpage 做第一部分:

POST

进行数据按摩,然后执行- name: Example POST uri: url: https://your.example.com/rest/api/2/issue/ method: POST user: your_username password: your_pass body: "{{ lookup('file','issue.json') }}" force_basic_auth: yes status_code: 201 body_format: json

GET

编辑:

正如注释中所指出的,您可以使用set_fact来设置从- set_fact: one_fact="something" other_fact="{{ local_var }}" 调用中收到的信息中更改的值。

{{1}}

在看跌期权内,您将像访问Ansible中的任何其他变量一样访问新事实