이전 포스팅에서 제어 노드와 관리 호스트와의 연결을 확인할때 아래와 같은 명령어를 사용했다.

ansible server2.example.com -m ping -u devops --ask-pass

디폴트 옵션은 암호를 물어보지 않아 에러가 발생해,

의도적으로 암호를 물어보게 --ask-pass를 붙여야 한다.

하지만 모든 장비에서 계속 암호를 적을 수는 없고 이것을 해결하기 위해 공개키를 생성, 등록하여 자동으로

연결이 되게 해야한다.

공개키를 생성하면 ssh로 작업할때 암호를 물어보지 않고도 에러가 발생하지 않는다.

ansible에서 관리 노드와 통신할 때 기본적으로 ssh 네트워크 프로토콜을 사용한다.

[ansible 관리자 계정으로 설정한 devops계정에서 실행]

*공개키 생성

ssh-keygen

*서버2와 서버3에 공개키 업로드

ssh-copy-id server2.example.com 
ssh-copy-id server3.example.com

*확인

ssh server2.example.com touch /tmp/file.txt -> 실행됨. 
ssh server2.example.com touch /etc/file.txt -> 실행되지 않음. 허가 거부.

 

여기서 touch /etc/file.txt 이 실행되지 않은 이유는

devops계정에서 명령어를 실행했으므로

server2의 devops계정이 etc 밑에 파일을 만들려고 한것이라 허가 거부된 것이다.

(devops@server2.example.com)

이 명령어를 실행하려면

ssh root@server2.example.com touch /etc/file.txt

즉, devops계정에서의 공개키만 업로드 해줬으니 root계정의 명령어를 실행하고자 한다면

ansible all -a 'touch /etc/a.txt' -u root --ask-pass
ansible all -a 'touch /etc/a.txt' -u root --ask-pass

 

모든 장비에 ' ' 명령어를 전달.(ad-hoc 명령)

become_user=root 가 디폴트값이므로 옵션을 --become로 넣어주면 root 계정으로 된다.

*ansible 연결 확인

ansible all -m ping

 

'Ansible' 카테고리의 다른 글

[Ansible] 인벤토리, 구성 파일 관리  (0) 2021.05.24
[Ansible] ansible 개요  (0) 2021.05.22
[Ansible] virtual box centos7 ansible 설치  (0) 2021.05.18

+ Recent posts