【问题标题】:Undefined variable error while passing extra variable through Ansible AWX通过 Ansible AWX 传递额外变量时出现未定义变量错误
【发布时间】: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


【解决方案1】:

您可以尝试为组和密码提供引号吗?

groups: 'nginx,mysql'

【讨论】:

    【解决方案2】:

    只需像这样定义你的额外变量:

    ---
    username: testuserxx
    groups: nginx,mysql
    password: $6$UxUZNNsVnWUSM9ge$0viDFuXUwtLYyx/U4tFmX8w3TknD3C19Oab.clfi67WGGqJUDrkGpMOvHE1zwudXyKl0gmqAw8piR8KFGi55R/
    

    【讨论】:

    • 试过这个并得到错误。 TypeError('%s cannot be converted to a list' % type(value).完整的回溯可以查看here
    猜你喜欢
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2022-01-03
    • 2022-11-07
    相关资源
    最近更新 更多