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

默认值/ main.yml

test_user:testuser
test_group:测试组
test_user_password:密码

我的任务文件如下
-名称:“为测试用户创建组”
组:
名称:“ {{test_group}}”
状态:存在

-名称:“创建测试用户”
用户:
名称:“ {{test_user}}”
密码:“ {{[test_user_password] | password_hash('sha512')}}”
外壳:/ bin / ksh
组:“ {{test_group}}”
update_password:on_create

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

最佳答案

在“创建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

08-07 03:54