带有变量

时间:2017-06-21 19:52:46

标签: ansible

我正在编写一个简单的任务来创建用户。作为此任务的一部分,我想从defaults / main.yml

中读取密码

默认/ main.yml

test_user:testuser
test_group:testgroup
test_user_password:somepassword

我的任务文件如下
- 名称:“为testuser创建组”
组:
  名称:“{{test_group}}”
   州:现在
- 名称:“创建testuser”
  用户:
   名称:“{{test_user}}”
   密码:“{{[test_user_password] | password_hash('sha512')}}”
    shell:/ bin / ksh
   组:“{{test_group}}”
    update_password:on_create

这给了我意想不到的模板错误。如何从main.yml读取密码并在密码过滤器中使用?

2 个答案:

答案 0 :(得分:2)

在创建testuser任务中,删除test_user_password周围的方括号。在Ansible中引用变量时,必须用{{}}括起来。

- hosts: localhost
  remote_user: user
  become: yes

  vars:
    test_user: testuser
    test_group: testgroup
    test_user_password: somepassword

  tasks:
    - name: Creating Group for testuser
      group:
         name: "{{ test_group }}"
         state: present

    - name: Creating testuser
      user:
         name: "{{ test_user }}"
         password: "{{ test_user_password | password_hash('sha512') }}"
         shell: /bin/bash
         group: "{{ test_group }}"
         update_password: on_create

答案 1 :(得分:1)

考虑到给定任务将始终标记为“已更改”,这意味着它不是幂等的。要避免此行为,您可以将salt作为第二个参数添加到password_hash函数中,如下所示:

- name: Creating testuser
  user:
     name: "{{ test_user }}"
     password: "{{ test_user_password | password_hash('sha512', test_user_salt) }}"
     shell: /bin/bash
     group: "{{ test_group }}"
     update_password: on_create