如何从ansible中的tasks / main.yml动态设置defaults / main.yml值

时间:2016-07-13 06:12:24

标签: ansible

从tasks / main.yml文件中动态填充defaults / main.yml变量。

默认内容main.yml -

username:
password:

tasks / main.yml的内容 -

- name: Get username and password
  shell: python some_script.py
  register: result

现在,结果包含我的用户名和密码。有没有简单的方法可以更新defaults / main.yml中的用户名和密码?

output should be 
username: bob
password: getmein

目前我们正在这样做

- name: Retrieve username
  shell: echo {{ item | regex_replace('^.*:(.*)$', 'username:\\1')  }} >> playbooks/defaults/main.yml
  with_items: result.stdout_lines[1]

除了使用lineinfile之外,只是想知道是否有一种简单的方法。

如果在defaults / main.yml中设置了变量,我们可以通过{{username}}直接使用它。但是如何动态地反向设置变量?

1 个答案:

答案 0 :(得分:0)

我认为阅读用户输入的更好方法是使用Ansible Prompts(http://docs.ansible.com/ansible/playbooks_prompts.html)。这样,您就不需要调用脚本来读取用户输入。

---
- hosts: all
  vars_prompt:
    - name: username
      prompt: "enter username"
      private: no
    - name: password
      prompt: "enter password"
      private: yes

  tasks:
    - name: print
      debug:
        msg: "username = {{ username }}, password = {{ password }}"