【问题标题】:Ansible, How to modify a variable during a loop?Ansible,如何在循环期间修改变量?
【发布时间】:2017-12-19 07:53:13
【问题描述】:

我正在使用 Ansible 2.3.0.0,并且我在 Ansible 2.4.0.0 中进行了测试,得到了相同的结果。我的问题很简单。 我有以下清单:

vars:
     password_text_to_encrypt:
          - { line: "{{truststore_pass }}" , result: }
          - { line: "{{ keystore_pass }}" , result: }
          - { line: "{{ gp_pass }}" , result: }
          - { line: "{{ datasource_password }}" , result: }
          - { line: "{{ server_password }}" , result: }
          - { line: "{{ sftp_password }}" , result: }
          - { line: "{{ db_userpassword }}" , result: }
     roles:
       - basic_role

我想加密列表中每个项目的行值并将其保存在其结果属性中。 我正在尝试使用此 Ansible 代码,但它在任务分配中失败:

- name: "Encrypt password"
  uri: 
     url: http://122.81.10.1:8910/Cloud/encrypt
     method: POST
     body: "{{ item.line}}"
     return_content: yes
  register: "r"
  with_items:
    - "{{password_text_to_encrypt}}"


- name: "Replace var in result"
  set_fact: item['0']['result']="{{ item.1.content}}"
    #replace: '{{ item.1.content}}'
  with_nested:
    - "{{password_text_to_encrypt}}"
    - "{{r.results}}"
  when: item.1.item.line==item.0.line

- name: "print Results"
  debug: 
      msg: "The Item is :{{item.result}}"
  with_items: 
    - "{{password_text_to_encrypt}}"

输出消息是:

"msg": "The variable name 'item['0']['result']' is not valid. Variables must start with a letter or underscore character, and contain only letters, numbers and underscores."}

我已经测试了其他可能性,但我没有实现每个 item.results 都保存其加密值

【问题讨论】:

  • 您可以使用json_query 过滤器从r.results 构造所需的数据。

标签: ansible ansible-2.x ansible-facts


【解决方案1】:

最后,set_fact方法必须这样使用:

我没有使用相同的变量,而是创建了另一个具有相同结构的变量。

- name: "Replace var in result"
  set_fact: 
    encrypted: "{{encrypted|default([]) + [ {'line': item.1.content, 'regexp': item.0.regexp} ]}}"
  with_nested:
    - "{{password_text_to_encrypt}}"
    - "{{r.results}}"
  when: item.1.item.line==item.0.line

但我无法重写对象内的字段

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    相关资源
    最近更新 更多