다음 문제를 해결하기 위해 여러 가지 방법을 시도했지만 운이 좋지 않았습니다. 재고는 다음과 같습니다.
#cat Inventory/common/group_vars/all/inventory_pwd.yml
Remote1_user: "devops"
#cat Inventory/nonprod/fdc/group_vars/all/inventory.txt
[원격] xxxx ansible_ssh_user="{{remote1_user }}" ansible_port=22 ansible_password="test@12"
제어 시스템에서 원격 시스템으로 파일을 복사하기 위해 다음 플레이북을 실행하고 있습니다.
PB.yml
---
- name: "Copy test"
hosts: remote
become: true
tasks:
- name: Copying content to the remote vm
synchronize:
src: /ansible/playbooks/Hello
dest: /home/devops/
delegate_to: localhost
컨트롤러 머신에서는 루트로 로그인했고 원격 서버에 연결하는 사용자는 devops입니다.
그러나 스크립트를 실행한 후 다음 오류가 발생합니다.
ansible-playbook -vvv -i Inventory/common -i Inventory/nonprod/fdc/group_vars/all/inventory.txt pb.yml
TASK [Copying content to the remote vm] *********************************************************************************************task path: /ansible/playbooks/pb.yml:9
fatal: [x.x.x.x -> localhost]: FAILED! => {
"changed": false,
"cmd": "sshpass -d3 /usr/bin/rsync --delay-updates -F --compress --archive --rsh=/usr/bin/ssh -S none -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null --rsync-path=sudo rsync --out-format=<<CHANGED>>%i %n%L /ansible/playbooks/Hello {{remote1_user}}@x.x.x.x:/home/devops/",
"invocation": {
"module_args": {
"_local_rsync_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"_local_rsync_path": "rsync",
"_substitute_controller": false,
"archive": true,
"checksum": false,
"compress": true,
"copy_links": false,
"delete": false,
"dest": "{{remote1_user}}@x.x.x.x:/home/devops/",
"dest_port": null,
"dirs": false,
"existing_only": false,
"group": null,
"link_dest": null,
"links": null,
"mode": "push",
"owner": null,
"partial": false,
"perms": null,
"private_key": null,
"recursive": null,
"rsync_opts": [],
"rsync_path": "sudo rsync",
"rsync_timeout": 0,
"set_remote_user": true,
"src": "/ansible/playbooks/Hello",
"ssh_args": null,
"times": null,
"verify_host": false
}
},
"msg": "remote username contains invalid characters\r\nrsync: connection unexpectedly closed (0 bytes received so far) [sender]\nrsync error: unexplained error (code 255) at io.c(235) [sender=3.1.3]\n",
"rc": 255
}
여기'"dest": "{{remote1_user }}@xxxx:/home/devops/"'는 다음과 같아야 합니다.'[이메일 보호됨]:/home/devops/'. 그러나 "remote1_user"를 "devops"로 바꾸지는 않습니다.
누구든지 이 문제를 해결하도록 도와줄 수 있나요?
답변1
이것이 문제인지는 확실하지 않지만 항상 중괄호 앞뒤에 공백이 있는 변수를 인코딩합니다. - {{remote1_user }}@xxxx:/home/devops/
답변2
이름에 문제가 있을 수 있습니다. Ansible이 변수 파일을 찾았는지 확실하지 않습니다. Inventory/nonprod/fdc/group_vars/all/inventory.txt가 호스트 파일인 경우 Inventory/nonprod/fdc/inventory.txt로 변경한 다음 그룹 var 파일을 Inventory/nonprod/fdc/group_vars /all/로 변경해 보세요. Inventory_pwd .yml