>
반복하고 싶은 Ansible 역할이 있습니다.

목표는 목록에서 새 사용자 계정을 만드는 것입니다. 플레이 북은 역할을 호출하고 목록을 반복하여 보냅니다.

OS (Linux Debian 8.8)는 모든 var 유니 코드 "[u'user ']"를 본다

다른 테스트를 수행 한 결과 신규 사용자 : ['테스트'] [u'test ']

정말로 원하는 것은 var를 문자열로 만드는 것이므로 새 사용자를 만들고 필요한 키와 다른 파일을 추가해야합니다. var를 키 및 기타 파일의 경로에 결합 할 수도 있습니다.

"| to_string"으로가는 쉬운 방법을 찾았습니다 (Ansible은 아님)
"to_yaml"필터는 "[]"가 아닌 유니 코드를 제거하고 끝에 "\ n"을 추가합니다.

다양한 id_ (type) .pub 파일의 경우 ssh 키 사본의 항목

나는 읽었다 :

사용 가능한 변수를 유니 코드에서 ASCII로 변환

코드

Playbook:
  vars_files:
    - /home/admin/common/vars/UserList 
  gather_facts: False
  roles:
    - { role: common, "{{ UserList }}" }

UserList file
---
UserList:
  - 'test'
...

role/common/main.yml 
---
  - name: Add user to server
    user:
      name: "{{ UserList }}"
      shell: /bin/bash
  - name: make direcotry
    file:
      path: "/home/{{ UserList }}/.ssh"
      state: directory
  - name: Copy ssh public key to user/.ssh/_key_.pub
    copy:
      src: "/home/{{ UserList }}/.ssh/{{ item }}"
      dest: "/home/{{ UserList }}/.ssh/{{ item }}"
      mode: 600
      force: no
    with_items:
      - id_rsa.pub
      - id_dsa.pub
      - id_ecdsa.pub
...

다른 형식이지만 여전히 아래와 같이 오류가 있습니다.

roles: 
  - role: common
  with_items: 
  - "{{ UserList }}"

오류

(item = id_rsa.pub) =>{ "failed": true, "호출": { "module_args": { "dest": "/home/[u'test']/.ssh/id_rsa.pub ","force ": false,"mode ": 600,"src ":"/home/[u'test']/.ssh/id_rsa.pub "},"module_name ":"copy "},"item " : "id_rsa.pub", "msg": "src =/home/[u'test '] /. ssh/id_rsa.pub를 찾을 수 없습니다"}

  • 답변 # 1

    해결 방법

    문제에 대한 해결 방법을 찾았습니다. 나는 그것을 해결책이라고 부를 것입니다. 이 경우 충분합니다. 내장 {{item}}을 사용하여 var로 "루프"해야합니다. 그런 다음 {{item}}이 문자열로 사용되며 필요한 PATH를 만들 수 있습니다. "with_nested"를 사용하여 일련의 항목을 반복 할 수도 있습니다.

     - name: create empty file
        file:
          path: "{{ '/home/' + item + '/.ssh/authorized_keys' }}"
          state: touch
        with_items:
          - "{{ UserList }}"
    
      - name: Copy ssh public key to user/.ssh/_key_.pub
        copy:
          src: "{{ '/home/' + item[1] + '/.ssh/' + item[0] }}"
          dest: "{{ '/home/' + item[1] + '/.ssh/' + item[0] }}"
          mode: 600
          force: no
        with_nested:
          - [ 'id_rsa.pub' , 'id_dsa.pub' , 'id_ecdsa.pub' ]
          - "{{ UserList }}"
    
    

관련 자료

  • 이전 sparql - wdqs - 쿼리가 잘못되었습니다
  • 다음 testing - botium webdriverio 커넥터에 대한 재정의 작업