[ansible] 설치 및 기본 사용법 (ssh-key 교환 포함)
- IT2/ansible
- 2023. 1. 27. 20:47
반응형
ansible 설치
# yum -y install ansible
- 로컬(자기자신)서버 ping 테스트
# ansible localhost -m ping
ssh-key 교환
ssh key 교환을 통해 비밀번호 묻지 않고도 바로 접속가능한 상태로 만들기
# ssh-keygen
(엔터, 엔터, 엔터, 엔터!!)
# ssh-copy-id 원격지ID@원격지IP // 공개키 원격지로 전달
inventory(인벤토리) 작성 - 간단하게
우선 서버의 hosts 파일 수정부터
# cat /etc/hosts
10.106.110.223 webserver1
10.106.110.224 webserver2
/etc/ansible 하위에 존재하는 hosts 파일을 인벤토리 파일이라고 부르며, 별도의 inventory 파일을 만들어서 사용하기도 함
# cat /etc/ansible/hosts
[web]
webserver1
webserver2
ansible 테스트 1 - 간단하게
ping test로 정상 동작 여부 확인
# ansible webserver1 -m ping
webserver1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
# ansible webserver2 -m ping
webserver2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
인벤토리 내 모든 서버에 명령 실행하고자 할 때는 all을 사용한다
# ansible all -m ping
webserver1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
webserver2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
ansible 테스트 2 - 간단하게
인벤토리 내 모든 서버에 파일 복사 명령을 실행하고자 할 때는 copy 모듈을 사용하며, -a라는 모든 인자값을 의미하는 플래그를 사용한다.
아래 예시는 관리 호스트 서버의 /home/test.txt 파일을 인벤토리 내 모든 호스트 서버의 /home 디렉토리 밑에 test.txt파일로 저장하는 방법이다.
# ansible all -m copy -a "src=/home/test.txt dest=/home/test.txt"
webserver1 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true, // 동일한 task가 수행되어 아무런 변경이 없을 때는 true가 아닌 false 값이 출력된다.
"checksum": "80d765b3df6efce0b484aca8fb0da14d6c1c15d2",
"dest": "/home/test.txt",
"gid": 0,
"group": "root",
"md5sum": "4ef440e7901f1acf0d87891cd1c05291",
"mode": "0644",
"owner": "root",
"size": 34,
"src": "/root/.ansible/tmp/ansible-tmp-1674028338.52-27200-223585600184088/source",
"state": "file",
"uid": 0
}
webserver2 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true, // 동일한 task가 수행되어 아무런 변경이 없을 때는 true가 아닌 false 값이 출력된다.
"checksum": "80d765b3df6efce0b484aca8fb0da14d6c1c15d2",
"dest": "/home/test.txt",
"gid": 0,
"group": "root",
"md5sum": "4ef440e7901f1acf0d87891cd1c05291",
"mode": "0644",
"owner": "root",
"size": 34,
"src": "/root/.ansible/tmp/ansible-tmp-1674028338.51-27198-28772977035569/source",
"state": "file",
"uid": 0
}
호스트 서버에서 확인한 결과 파일이 정상적으로 복사된 걸 확인함
[webserver1]
# cat /home/test.txt
2023.01.18
ansible test text file
[webserver2]
# cat /home/test.txt
2023.01.18
ansible test text file
반응형
'IT2 > ansible' 카테고리의 다른 글
[ansible] playbook 개념/작성/예시 (0) | 2023.02.12 |
---|---|
[ansible] yaml(yml)을 위한 vi(vim) 꿀팁 설정 (0) | 2023.02.11 |
[ansible] inventory(인벤토리) 작성법-① (0) | 2023.01.29 |
[ansible] playbook 작성/실행 - SSH Public key 배포 (ssh-key 교환 방법) (0) | 2023.01.29 |
[ansible] ping 테스트 실패 (Failed to connect to the host via ssh: Permission denied) 해결 방법 (0) | 2023.01.28 |