2017-05-19 8 views
0

나는 우리가 사용자 이름을 제공 할 수있는 가능성있는 플레이 북을 쓰고 싶다. 그리고 무언가는 그 사용자에 대한 인증 된 키를 표시 할 것이다. 권한이 부여 된 키의 경로는 {{user_home_dir}} /. ssh/authorized_keys입니다. 주어진 사용자의 authorized_keys 목록을 가져 오는 방법은 무엇입니까?

나는 다음과 같은 쉘 모듈을 시도 :

문제가
--- 
- name: Get authorized_keys 
    shell: cat "{{ user_home_dir }}"/.ssh/authorized_keys 
    register: read_key 

- name: Prints out authorized_key 
    debug: var=read_key.stdout_lines 

, 그것은 나에게 /home/ansible/.ssh/authorized_keys 내부의 파일을 보여줍니다. "ansible"은 원격 컴퓨터에 연결하는 데 사용하는 사용자입니다. 다음은

은 바르/main.yml

--- 
authorized_user: username 
user_home_dir: "{{ lookup('env','HOME') }}" 

어떤 생각인가? 참고하시기 바랍니다 나는 새롭다 무언가에 이것을 시도했다 link. 당신의 바르 파일에서

답변

0

, 당신은 ... 모든 조회가 제어 호스트에서 실행을 지적 콘스탄틴에

user_home_dir: "{{ lookup('env','HOME') }}" 

감사합니다. 그래서 env HOME에 대한 검색은 항상 anonymous가 호출되는 사용자의 홈 디렉토리로 해석됩니다.

getent 모듈을 사용하여 사용자의 정보를 검색 할 수 있습니다. 아래 스 니펫이 도움이 될 것입니다.

--- 

- hosts: localhost 
    connection: local 
    remote_user: myuser 
    gather_facts: no 

    vars: 
    username: myuser 

    tasks: 

    - name: get user info 
     getent: 
     database: passwd 
     key: "{{ username }}" 
     register: info 

    - shell: "echo {{ getent_passwd[username][4] }}" 
+0

틀린. 모든 조회는 권한있는 CLI를 실행하는 계정의 제어 호스트에서 실행됩니다. –

+0

@ ConstantinSuvorov 고맙습니다. 나는 이것에 대해 알지 못했습니다. 그에 따라 대답을 바꿀 것입니다. – tux

+0

ok. 그럼 어떻게 내 var 파일에 주어진 사용자의 홈 디렉토리를 설정할 수 있습니까? – Err0rr

0

아래의 내용을 참조하십시오. 우리는 이되어야합니다. 그렇지 않으면이됩니다. 그렇지 않으면 우리는 오류를 거부했습니다.

--- 
- hosts: local 
    remote_user: ansible 
    gather_facts: no 
    become: yes 
    become_method: sudo 

    vars: 
    username: myuser 

    tasks: 

    - name: get user info 
     getent: 
     split: ":" 
     database: passwd 
     key: "{{ username }}" 

    - name: Get authorized_keys 
     shell: cat "{{ getent_passwd[username][4] }}"/.ssh/authorized_keys 
     register: read_key 

    - name: Prints out authorized_key 
     debug: var=read_key.stdout_lines