홈>
반복하고 싶은 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
관련 자료
- mysql - Python에서 SQL 출력을 문자열로 변환
- c++ - const 문자열에서 const uint8_t *로 오류 변환
- python - 개체를 문자열로 변환 할 수 없습니다
- dart - flutter - list as string을 api에서 list of string으로 변환하는 방법
- node.js - (yyyymmddhhss) 형식의 날짜-시간 문자열을 Javascript에서 dd/mm/yyyy로 변환하는 방법은 무엇입니까?
- flutter/dart - 문자열을 색상으로 변환 하시겠습니까?
- 리눅스 쉘에서 패턴 문자열을 반복하는 방법?
- type conversion - 줄리아의 파일에서 문자열을 배열로 변환
- 자바 스크립트에서 문자열을 이름 값 쌍으로 변환하는 방법
- datetime - PowerShell에서 문자열 값을 "SystemInt32"유형으로 변환하는 방법
- excel - VBA에서 문자열로 할당 된 답변을 다시 긴 변수로 변환하려면 어떻게해야합니까?
- python - 판다 - 2 개의 문자열 열을 부울로 변환하고 결합
- csh - 쉘에서 변수의 문자열을 변환하는 방법
- postgresql - 파이썬에서 시간대를 사용하여 날짜 문자열을 타임 스탬프로 변환
- c# - Net을 사용하여 Pascal Case 문자열에서 Dash Case로 변환
- python - 문자열을 datetime pandas로 변환
- C에서 선행 0을 사용하여 정수를 문자열로 변환하는 방법은 무엇입니까?
- '문자열'을 'SystemDateTime'C # WPF로 변환 할 수 없습니다
- python - 형식이 잘못된 문자열을 사전으로 변환 하시겠습니까?
- python - 여러 팬더 열을 문자열 부울에서 부울로 변환하는 방법은 무엇입니까?
관련 질문
- Linux 터미널을 통해 로컬 파일을 서버에 업로드하는 방법
- 가상 환경을 사용하여 가능한 플레이북에서 python 스크립트를 실행하는 방법은 무엇입니까?
- SSH Linux의 원격 창에서 애플리케이션 GUI 시작
- linux : Azure Ubuntu VM에 연결할 수 없음 -공개 키 거부됨
- ubuntu : Oracle Cloud에 매트릭스를 설치합니다. 액세스 거부됨(공개 키)
- linux : ssh -i를 통해 로그인하려고 할 때 개인 키를 제시해야 하는 이유는 무엇입니까?
- linux : 연결이 끊긴 ssh 세션에 다시 연결하는 방법
- linux : SSH 액세스 권한이 없는 사용자에게 쉘 액세스 권한을 부여할 수 있습니까?
- linux : 오류: 게시할 때 예외가 발생했습니다. 예외 메시지 [Exec 종료 상태가 0이 아닙니다. 상태 [1]]
- linux : SSH는 서약에서 멈춥니다: 네트워크
해결 방법
문제에 대한 해결 방법을 찾았습니다. 나는 그것을 해결책이라고 부를 것입니다. 이 경우 충분합니다. 내장 {{item}}을 사용하여 var로 "루프"해야합니다. 그런 다음 {{item}}이 문자열로 사용되며 필요한 PATH를 만들 수 있습니다. "with_nested"를 사용하여 일련의 항목을 반복 할 수도 있습니다.