【发布时间】:2019-10-10 09:46:58
【问题描述】:
我有一个创建用户的剧本,当所有三个变量都被硬编码时,剧本运行良好,而如果我传递变量,我会遇到错误。我通过带有额外变量的 AWX 控制台执行了这个剧本并得到“未定义变量错误”
手册
#User creation playbook
---
- hosts: "all"
gather_facts: yes
become: yes
become_method: sudo
#vars:
# users:
# - username: "{{ user }}"
# groups: "{{ groups }}"
# password: "{{ password }}"
#replace newpassword with whatever password you want to set for the user
# - username: "user2"
# groups: "groupC"
# password: "{{ 'newpassword' | password_hash('sha512') }}"
tasks:
- name: "Create user accounts"
user:
name: "{{ username }}"
groups: "{{ groups }}"
password: "{{ password }}"
update_password: on_create
#with_items: "{{ users }}"
#- name: "Add authorized keys"
# authorized_key:
# user: "{{ item.username }}"
# key: "{{ lookup('file', 'ssh_keys/'+ item.username + '.key.pub') }}"
# with_items: "{{ users }}"
额外变量
---
vars:
- username: testuserxx
groups: nginx,mysql
password: $6$UxUZNNsVnWUSM9ge$0viDFuXUwtLYyx/U4tFmX8w3TknD3C19Oab.clfi67WGGqJUDrkGpMOvHE1zwudXyKl0gmqAw8piR8KFGi55R/
我使用mkpasswd --method=sha-512创建了密码哈希
以下是我遇到的错误
fatal: [172.16.12.70]: FAILED! => {
"msg": "The task includes an option with an undefined variable. The error was: 'password' is undefined\n\nThe error appears to be in '/tmp/awx_56_skpglhjz/project/user_creation_AWXold.yml': line 17, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n tasks:\n - name: \"Create user accounts\"\n ^ here\n"
}
【问题讨论】:
-
user_creation_AWXold.yml 文件中的第 17 行是什么?
-
我在这里发布时删除了剧本中的所有注释行。现在更新了确切的剧本。
- name: "Create user accounts"是第 17 行。 -
您可以尝试删除用户名变量前面的连字符 (-)。
标签: python ansible ansible-tower ansible-awx