testFile.txt
Ansible 플레이북이 에서 로ServerB
가져오는 방법을 알 수 있도록 아래 코드에서 구체적으로 어떤 변경이 필요합니까ServerA
?
이들은 Amazon Linux 서버입니다.
ServerA
및 둘 다 중앙 ServerB
Ansible 서버에서 운영되는 원격 서버입니다.
중앙 Ansible 서버에서 생성된 플레이북 파일은 Ansible 서버로 다시 돌아가는 대신 런타임 ServerB
에 직접 복사/가져와야 합니다 .ServerA
ServerB
ServerA
또한 및(IP당 하나)에 대한 매니페스트는 원격 서버 나 원격 서버 ServerB
가 아닌 중앙 Ansible 서버에 정의되어 있습니다 . ServerA
ServerB
따라서 런타임 시 플레이북은 다음 줄에 도달하면 다음 오류를 발생시킵니다.
fatal: [ip.of.server.b]: FAILED! => {
"msg": "'ServerA' is undefined"
}
ServerA
그렇다면 런타임에 코드를 정의하려면 다음 코드에서 구체적으로 어떤 변경이 필요합니까?
스크립트는 다음과 같습니다.
# Then create a file on ServerB and copy/pull that file into ServerA
- name: File transfer example
hosts: ServerB
remote_user: server-b-user
become: true
become_method: sudo
become_user: root
tasks:
- name: Create a test file to copy
shell:
cmd: |
cat <<EOF > /path/on/ServerB/testFile.txt
this is a test file.
EOF
sudo: true
sudo_user: server-b-user
- name: Transfer conf file from master to admin
synchronize:
src: /path/on/ServerB/testFile.txt
dest: /path/on/ServerA/
mode: pull
delegate_to: "{{ ServerA }}"
답변1
그렇다면 런타임에 ServerA를 정의하려면 다음 코드에서 구체적으로 어떤 변경이 필요합니까?
- hosts: ServerB
vars:
ServerA: 192.168.0.0
ServerA
변수가 정의되지 않았음을 나타내는 오류 메시지를 해결해야 합니다 .
코드에서 변수를 호출 중입니다.서버 A. 변수를 정의하지 않았고 Ansible이 해당 이름에 "사실"을 등록하지 않았으므로 정의되지 않았으며 컨트롤러는 사용자가 무엇을 참조하고 있는지 전혀 모릅니다.
앤서블 문서delegate_to:
IP 주소에 대한 직접 호출에 대한 지원을 보여줍니다 . 네가 원한다면변수 사용이를 위해서는 당신이 필요합니다코드에서 직접 선언하세요., 또는 동적 재고 사실 중 하나를 사용하십시오.
이 작업은 다음을 통해 수행할 수도 있습니다.매직 변수 inventory_hostname
사실을 확인하세요. YMMV.