with_togetherとユーザー管理でのAnsibleエラー


0

わからないという厄介な問題があります。

これが私のコードです。グループとグループ変数を完全にコメントアウトすると、すべて正常に機能します。しかし、これは以下のエラーを吐き出します。

基本的に、グループが存在しないことを教えてくれます。この例では、msg: "Group" 'all'は存在しません。この問題を解決するために何をする必要があるかわかりません。

 - name: Add new group if it doesn't exist already
   group:
    name: "{{ group }}"
   when: group is defined

 - name: Add multiple users
   user:
    name: "{{ item.0 }}"
    comment: "{{item.1 }}"
    uid: "{{ item.2 }}"
    group: "{{ group }}"
    groups: "{{ groups }}"
    append: yes

   with_together:
     - "{{ name }}"
     - "{{ comment }}"
     - "{{ uid }}"
     - "{{ group }}"
And variable file:
name:
 - test1
 - test2

comment:
 - "comment1"
 - "comment2"

uid:
 - 150
 - 151

group: sudo

groups:
 - admin
 - test



However, now I am receiving this error.


failed: [127.0.0.1] => (item=[u'test1', u'comment1', 150, u'sudo']) => {"failed": true, "invocation": {"module_args": {"append": true, "comment": "comment1", "createhome": true, "expires": null, "force": false, "generate_ssh_key": null, "group": "sudo", "groups": "{'ungrouped': ['127.0.0.1'], 'all': ['127.0.0.1']}", "home": null, "login_class": null, "move_home": false, "name": "test1", "non_unique": false, "password": null, "remove": false, "shell": null, "skeleton": null, "ssh_key_bits": "2048", "ssh_key_comment": "ansible-generated on ubuntu-512mb-sfo1-01", "ssh_key_file": null, "ssh_key_passphrase": null, "ssh_key_type": "rsa", "state": "present", "system": false, "uid": "150", "update_password": "always"}, "module_name": "user"}, "item": ["test1", "comment1", 150, "sudo"], "msg": "Group  'all': ['127.0.0.1']} does not exist"}
failed: [127.0.0.1] => (item=[u'test2', u'comment2', 151, None]) => {"failed": true, "invocation": {"module_args": {"append": true, "comment": "comment2", "createhome": true, "expires": null, "force": false, "generate_ssh_key": null, "group": "sudo", "groups": "{'ungrouped': ['127.0.0.1'], 'all': ['127.0.0.1']}", "home": null, "login_class": null, "move_home": false, "name": "test2", "non_unique": false, "password": null, "remove": false, "shell": null, "skeleton": null, "ssh_key_bits": "2048", "ssh_key_comment": "ansible-generated on ubuntu-512mb-sfo1-01", "ssh_key_file": null, "ssh_key_passphrase": null, "ssh_key_type": "rsa", "state": "present", "system": false, "uid": "151", "update_password": "always"}, "module_name": "user"}, "item": ["test2", "comment2", 151, null], "msg": "Group  'all': ['127.0.0.1']} does not exist"}

回答:


1

問題は変数名の競合です。groups予約変数であり、インベントリからグループを保持します。またall、インベントリのすべてのホストを保持する自動生成グループです。

ドキュメントから

自分で定義しなかった場合でも、Ansibleはいくつかの変数を自動的に提供します。これらの中で最も重要なものはhostvarsgroup_names、とgroups。これらの名前は予約されているため、ユーザーは自分で使用しないでください。environmentも予約されています。

そして

groupsインベントリ内のすべてのグループ(およびホスト)のリストです。これは、グループ内のすべてのホストを列挙するために使用できます。

変数の名前を変更するだけで機能します。一般に、ロールのすべての変数の前にロール名を付けることをお勧めします。これは、競合を避けるために、たとえばAnsible Galaxyのサードパーティの役割を使用する場合により重要になります。したがって、代わりにgroups使用するmyrole_groupsことができ、競合が発生しないことを確信できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.