2017-08-01 14 views
0

最初にまず - 私はAnsible wizではありません。これを行うにはより良い方法があると思いますが、これが私がこれをどうやってやったかです。 Linuxサーバーでユーザーを作成する必要がありましたが、これを使用してファイルからユーザー・パラメーターを読み取り、 'with_items'を使用してallを作成しました。リストからエントリを選択する(ユーザを作成する)

これは完全に機能しました。

リストから1人のユーザーだけを作成するオプションを追加したかったのです。

これは私のYMLスクリプトです:

--- 
- hosts: all 
    user: deploy 
    become: yes 

    tasks: 
    - include_vars: ../variables/users.yml 
    # - command: echo {{ Guser }} 
    - debug: msg={{ users }} 

    - name: Create DevOps team users 
    user: name={{ item.username }} shell=/bin/bash createhome=yes comment='Created by Ansi' groups={{ item.use_sudo }} uid={{ item.use_uid }} group={{ item.use_group }} state=present 
    ignore_errors: yes 
    with_items: 
     - '{{ Guser }}' 
    when: Guser is defined 

そして、これは私がそれを実行する方法である:

ansible-playbook --extra-vars "Guser=gilil2" -l myserver /home/devops/roles/create-users/tasks/create_user_by_name.yml -u deploy 

スニップ私の変数/ users.yml

--- 
users: 
    - username: gilil 
    use_sudo: 
    use_uid: 2005 
    use_group: users 

    - username: gilil2 
    use_sudo: 
    use_uid: 1010 
    use_group: users 

    - username: gilil3 
    use_sudo: 
    use_uid: 1011 
    use_group: users 

答えて

0

使用selectattr Jinja2のからフィルタ:

- name: Create DevOps team users 
    user: name={{ item.username }} shell=/bin/bash createhome=yes comment='Created by Ansi' groups={{ item.use_sudo }} uid={{ item.use_uid }} group={{ item.use_group }} state=present 
    ignore_errors: yes 
    with_items: "{{ users | selectattr('username','equalto',Guser|default('uknown')) | list }}" 

これはGuserが未定義の場合username属性がGuser VARS'の値またはunknownに等しい要素のリストに、元usersリストを削減します。私はuknownのユーザ名がないと仮定しているので、selectattrはこの場合空リストを生成することができます。

関連する問題