2016-10-26 4 views
2

다른 질문에서이 문제가 논의되었으며 다양한 옵션을 시도했지만 아무 것도 내 문제를 해결하지 못하는 것 같습니다.Ansible 무비에서 역할을 수행 할 때 원격 컴퓨터에서 사용자가되는 법

난 배우기 시작하고 장난을 치려고합니다. 나는 그것에 업무가있는 하나의 역할을 가지고있다. 원격 컴퓨터에서 사용자 john으로 전체 플레이 북을 실행하고 싶습니다. 플레이 북은 복사 작업으로 시작됩니다. 내가 become와 become_user를 사용할 때까지 모든 것이 잘 작동했다. 나는 주요 playbbok에 지정하여 사용자 존과 역할을 실행하려고 :

SUDO password: 

저를 묻는

ansible-playbook -s major.yml -K 

: 플레이 북을 실행할 때 다음

--- 
- hosts: target-machine.com 
    roles: 
    - role: installSoftware 
    become: yes 
    become_user: john 

, 나는 다음과 같은 실행 원격 대상 컴퓨터에있는 사용자 john의 암호를 입력합니다. 이 작전을 실행하기 시작하자마자, 그것은 존으로 사용자가 필요하며 불평 작업에 응답 : 사용자로 전체 작전을 실행하기 위해

--- 
- hosts: target-machine.com 
    become: yes 
    become_user: john 
    roles: 
    - role: installSoftware 

:

fatal: [target.com]: FAILED! => {"failed": true, "msg": "Failed to get information on remote file (/home/john/software.zip): MODULE FAILURE"} 

은 또한 다음과 같은 시도 남자. 다시 SUDO 암호를 묻고 5 분 후에 불평을합니다.

fatal: [openam.ansible-target.com]: FAILED! => {"changed": false, "failed":  true, "module_stderr": "", "module_stdout": "\r\nSorry, try again       .\r\n[sudo via ansible, key=kchjtpjorgnvaksspqvgwzzkgtjnxsyv] password: \r\nsudo: 1 incorrect password attempt\r\n", "msg": "MODULE FAILURE"} 

내가 입력 한 암호가 맞지만. 그래서 그것이 내가 ansible.cfg 파일에했던 SSH 제한 시간을 증가시키기 위해 제안되었다

[ssh_connection] 
ssh_args = -o ServerAliveInterval=60 -o ControlMaster=auto -o ControlPersist=1m 

I 미러링 할 모든 내가 대상 시스템에서 실행되는 것 인 것이다 :

su john 
    Enter Password: 
    john$ 

어떤 도움이됩니다 감사하겠습니다. 고맙습니다.

답변

0

기본적으로 becomesu이 아니라 sudo을 사용합니다. 결과적으로, Ansible 비밀번호는 변경하려는 사용자가 아닌 의 비밀번호와으로 로그인 한 사용자를 묻습니다. 이 번호는 by settingbecome_method에서 su으로 변경할 수 있습니다.

항상 호스트의 모든 작업을 다른 사용자로 실행하려면 ansible_user을 설정하고 싶을 것입니다. 자세한 내용은 the inventory documentation을 참조하십시오.

+0

답장을 보내 주셔서 감사하지만 "로그인 한 사용자"라고 말하면 제어 컴퓨터의 사용자 또는 대상 컴퓨터의 사용자를 언급하고 있습니까? ansible.cfg 파일을 변경하지 않고 두 번째 방법을 시도하고 john 사용자 비밀번호를 입력했으나 같은 결과가 나타납니다. 나는 또한 쉘을위한 디버그를 추가했다. echo $ USER는 어떤 부분도 가지지 않고 "루트"를 보여 주었다. 즉, 전환하려는 대상 컴퓨터의 루트 사용자로서 기본 사용자로서 플레이 북을 실행했다는 것을 의미한다. 어떤 포인터? – user3044240

+0

"답장을 보내 주셔서 감사합니다. 그러나"로그인 한 사용자 "라고 말하면 제어 기계의 사용자 또는 대상 컴퓨터의 사용자를 언급하고 있습니까?" - 대상 컴퓨터의 사용자. 'ansible_user'를 어떻게 설정 했습니까? 때로는 적절한 장소에 있는지를 확인하는 것이 까다로울 수 있으며 Anipal이이를 집어 들고 있습니다.당신의 명령에'-vvv'를 추가하면, ssh 명령에 관한 정보를 출력 할 것이고주의 깊게 보면 어떤 사용자로 연결되어 있는지 볼 수 있습니다. –

+0

I ansible-playbook -s major.yml -K -vvv .. 만약 나의 호스트 파일에 john에 설명되어있는 ansible_user가 있다면 22 번 포트에서 대상 컴퓨터에 연결하려고 시도하지만 다음과 같은 인증 실패가 발생합니다 : [machine-target.com] : 도전 할 수 없다! => { "changed": false, "msg": "인증에 실패했습니다.", "unreachable": true} 올바른 암호를 입력했지만. – user3044240