RUN echo '[local]\nlocalhost\n' > /etc/ansible/hosts
이 줄은 내 dockerfile에 있습니다. 단지 ansible/hosts 파일에 localhost를 추가한다는 뜻인 것 같나요?
[local]\nlocalhost\n이 무엇인지 자세히 설명해 줄 수 있는 사람이 있나요?
답변1
이 줄은 Docker에게 셸 명령을 실행하도록 지시합니다.echo '[local]\nlocalhost\n' > /etc/ansible/hosts
이 셸 명령은 파일에 다음 텍스트 블록을 인쇄합니다 /etc/ansible/hosts
.
[local]
localhost
\n
이는 새 텍스트 줄의 시작을 나타내는 "개행" 문자이기 때문에 수행됩니다 . 이는 echo
다음이 지시되었음을 의미합니다: 텍스트를 인쇄한 [local]
다음 새 줄을 시작하고, 인쇄하고 localhost
마지막으로 다른 새 줄을 시작합니다. 출력은 >
특수 문자를 사용하여 리디렉션되며 리디렉션 대상은 으로 지정됩니다 /etc/ansible/hosts
. 파일에 .txt
확장자가 없을 수도 있지만 일반 텍스트 파일로 처리할 수 있습니다.
이 파일은 Ansible이 다른 호스트(이 경우 localhost)와 통신하는 데 사용하기 때문에 지정될 수 있습니다.재고 기능.
그렇습니다. 기본적으로 맞습니다. 이렇게 하면 Ansible 호스트 파일에 localhost가 추가됩니다. 이 명령은 /etc/ansible/hosts
.
답변2
문제가 있는 라인:
RUN echo '[local]\nlocalhost\n' > /etc/ansible/hosts
명령을 실행하면 명령 출력이 echo
쉘 리디렉션 문자를 사용하여 파일로 전송되는 것 같습니다 .>
echo
/etc/ansible/hosts
여기서는 두 가지 사항에 주목해야 합니다.
echo
명령 에서\n
시퀀스는 줄 바꿈( Enter키)을 나타냅니다. 따라서[local]
및 는localhost
실제로 연속된 줄로 파일에 에코됩니다. 이는 섹션에/etc/ansible/hosts
설명된 올바른 형식 에 해당합니다.여기. (localhost
여기서 IP 주소 대신 호스트 이름이 사용되는 이유를 설명할 만큼 Ansible에 대해 충분히 알지 못합니다127.0.0.1
.)쉘 리디렉션 문자
>
는씌우다/etc/ansible/hosts
(즉, 지우고 교체합니다)추가이 새 섹션을 파일 끝에 추가하십시오. (파일을 리디렉션하고 추가하려면 를 사용할 수 있습니다>>
.)