상황 정리
1. ad-hoc방식으로 원격지 서버에 모듈을 이용한 패키지 설치 등을 진행중이다.
2. 그 과정에서 매번 패스워드를 입력해줘야 한다.
// -k 옵션을 사용하여 매번 패스워드를 입력하고 있다.
ansible jeju -m shell -a 'cat /etc/ssh/sshd_config' -k
3. CI/CD 도구(gitlab-runner, jenkins 등)는 패스워드 입력을 할 수 없으므로
매번 패스워드를 입력하는 환경에서는 파이프 라인이 정상적으로 동작하지 않게 된다.
4. 이를 해결하기 위해서 -k 옵션을 없애고 실행을 할 수 있어야 한다.
5. 이러한 문제는 key-pair를 이용하여 해결이 가능하다.
Ansible key-pair 작업
// ansible key-pair 적용 작업
// 1-1. [centos03] jeju console 내의 sshd_config는 생략 가능하다.
virsh console centos03
vi /etc/ssh/sshd_config
========수정=========
PubkeyAuthentication yes
PasswordAuthentication no
=====================
// 1-2. [root] 로컬에만 변경해줘도 됨
vi /etc/ssh/sshd_config
========수정=========
PubkeyAuthentication yes
PasswordAuthentication no
=====================
// 2.src의 경로도 상세하게 설정해줘야 함 (/etc/ssh/sshd_config)
ansible all -m copy -a "src=sshd_config dest=/etc/ssh/sshd_config" -k
=>
ansible all -m copy -a "src=/etc/ssh/sshd_config dest=/etc/ssh/sshd_config" -k
// 3. ssh 디렉토리 생성 & .ssh 700 권한 부여
ansible all -m shell -a 'mkdir /root/.ssh && chmod 700 /root/.ssh' -k
// 4. 로컬에서 키페어 생성
ssh-keygen -q -N "" -f mykey.pem
// 5.
ansible all -m copy -a "src=mykey.pem.pub dest=/root/.ssh/authorized_keys" -k
// 6.
ansible all -m shell -a 'chmod 600 /root/.ssh/authorized_keys' -k
// 7.
ansible all -m shell -a 'systemctl restart sshd' -k
// 8.로컬에서 별도의 키지정이나 사용자 지정이 없어도 자동으로 원격지 User: root,
// 개인키 : mykey.pem 을 선택하도록 로컬에서 아래와 같이 config 파일을 생성한다.
[root@localhost ansible]# cat ~/.ssh/config
Host *
User root
IdentityFile /root/ansible/mykey.pem // 본인의 경로에 맞게 설정 필요
[root@localhost ansible]#
=> 수정한 코드
[root@localhost .ssh]# cat ~/.ssh/config
Host *
User root
IdentityFile /root/.ssh/mykey.pem // key가 있는 경로로 수정을 해주었다.
[root@localhost .ssh]# ls
authorized_keys config id_rsa id_rsa.pub known_hosts mykey.pem mykey.pem.pub
[root@localhost .ssh]# pwd
/root/.ssh
[root@localhost .ssh]# systemctl restart sshd // sshd 수정 후 restart 해주기!
// 9. 접속 테스트
[root@localhost .ssh]# ansible all -m yum -a "name=httpd state=present"
[root@localhost .ssh]# ansible all -m service -a "name=httpd state=started"
'🗂ㅤ인프라 | 네트워크 > IaC' 카테고리의 다른 글
[Terraform] 3주차 - 간단 실습 및 예시 정리 (0) | 2024.12.22 |
---|---|
[Terraform] 2주차 - 기본 구성 및 개념 정리 (2) | 2024.12.15 |