2017-09-04 1 views
1

Ich habe versucht, Benutzer mit Ansible zu erstellen. Ich habe eine Variable namens users mit der Liste der Benutzer und anderen Optionen darin erstellt. Hier ist sie:So beheben Sie einen Fehler beim Abrufen von Werten aus einer Liste

users: 
    - { user_name: "user1", sudo_type: "full", password: "pass", ssh_pub_key: "ssh-rsa AAAAB..." } 
    - { user_name: "user2", sudo_type: "limited", password: "somepass", ssh_pub_key: "ssh-rsa AAAAB3..." } 

ich dann die folgende Aufgabe erstellt:

- name: create local users 
    local_action: user name={{ users.user_name }} createhome=yes state=present password={{ users.password }} shell=/bin/bash generate_ssh_key=yes ssh_key_type=rsa ssh_key_comment="{{ ansible_hostname }}-{{ users.user_name }}" 

Als ich das Textbuch lief, wurde sie mit folgendem Fehler fehlgeschlagen:

fatal: [10.60.16.1]: FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'list object' has no attribute 'user_name'\n\nThe error appears to have been in '/root/ansible-builds/roles/users/tasks/main.yml': line 11, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: create local users\n^here\n"} 

Wo liegt das Problem bei ?

+0

ich die Änderungen rückgängig gemacht, die Sie auf der ersten Version der Antwort basiert gemacht, die ein anderes Problem eingeführt. Jetzt stimmen die Frage und die Antwort überein. – techraf

Antwort

2

users ist eine Liste, die kein Attribut user_name hat. Es hat nur items und jedes item hat ein Attribut user_name. Sie müssen die Liste von users durchlaufen. Etwas wie:

vars: 
    users: 
    - { user_name: "user1", sudo_type: "full", password: "pass", ssh_pub_key: "ssh-rsa AAAAB..." } 
    - { user_name: "user2", sudo_type: "limited", password: "somepass", ssh_pub_key: "ssh-rsa AAAAB3..." } 

tasks: 
    - name: create local users 
    shell: echo {{ item.user_name }} 
    with_items: "{{ users }}" 

So wird Ihre Aufgabe sein wie:

- name: create local users 
    local_action: user name={{ item.user_name }} createhome=yes state=present password={{ item.password }} shell=/bin/bash generate_ssh_key=yes ssh_key_type=rsa ssh_key_comment="{{ ansible_hostname }}-{{ item.user_name }}" 
    with_items: "{{ users }}" 
+0

Ich habe das Playbook korrigiert, aber ich bekomme immer noch den gleichen Fehler. – zozo6015

+0

Dann poste dein korrigiertes Playbook. – helloV

+0

Ich habe es gerade getan – zozo6015

Verwandte Themen