【问题标题】:How to access task variables between the tasks in Ansible?如何访问 Ansible 中任务之间的任务变量?
【发布时间】:2018-06-18 20:39:24
【问题描述】:

我有一个像下面这样的简单剧本,其中包含一些任务。在剧本之上,我正在从提供的 CSV 文件创建 YAML 文件,但是如果我想在任务中定义一个变量,则该变量不会在另一个任务中定义。那么 Ansible 变量的可见性或/和范围是什么?我知道如果我在主机部分中定义变量,该变量将在所有任务中持续存在,但是由于我将动态定义变量,这不是一个好方法。

- name: Create IAM users
  vars:
    password: Sometestpassword123
  iam:
    iam_type: user
    name: "{{ item.username }}"
    password: "{{ password }}"
    access_key_state: create
    state: present
    groups: "{{ item.group }}"

  with_items:
    - "{{ users.users }}"
  register: user

- name: Create a file with user credentials
  local_action: template src=template.j2 dest=./users_credentials.csv

所以,如果我在任务中定义密码,这个变量被用作模块参数,但我不能在第二个任务中重用这个变量,我想在注册的第一个任务过滤输出中连接变量与定义的变量,将在循环的每次迭代中动态改变。

 TASK [Create a file with user credentials] *********************************************************************************************************************************************************************
    fatal: [localhost -> localhost]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'password' is undefined"}

基本上,我想创建一个 CSV 文件,该文件由保存在注册变量“用户”中的过滤后的 iam 模块返回值和“密码”变量的动态计算值组成。

很遗憾,AWS iam 模块不返回密码。

模板非常简单,出于测试目的,我只需要任务中定义的“密码”值的值。就这样吧。

{{ password }}

【问题讨论】:

  • @techraf 没错。我应该编辑问题。
  • 现在答案是“你不能”。
  • 为什么这样做而不是set_fact

标签: ansible


【解决方案1】:

总结@imjoseangel 提供的答案。 您可以使用 set_fact 定义变量,后续播放可以访问该变量。

示例 sn-p:

---
- name : Test set_fact Variable
  hosts : localhost
  tasks:
    - name : Set Password Variable
      set_fact:
        password : 'Abcd123'
    - name : Copy Template
      template :
        src : template.j2
        dest : ./template.csv

-

---
- name : Test set_fact Variable
  hosts : localhost
  tasks:
  - name : Set Password Variable
    set_fact:
      password : 'Abcd123'

- name :  Apply set_fact Variable
  hosts : localhost
  tasks:
  - name : Copy Template
    template :
      src : template.j2
      dest : ./template.csv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多