Anyway

[Ansible] Ansible Install & SSH 연결(원격 접속) 본문

Ansible

[Ansible] Ansible Install & SSH 연결(원격 접속)

dyana 2024. 8. 24. 10:00

상황 : Private Project를 진행하며 코드 작업 히스토리를 남기며 반복 작업도 줄이고 싶어 Ansible을 사용하게 됐다.

[Infra]

77.88.140.11 Ubuntu Ansible Server
77.88.140.23 Ubuntu nginx_web1
77.88.140.24 Ubuntu nginx_web2
77.88.140.25 Ubuntu tomcat_was1
77.88.140.26 Ubuntu tomcat_was2
77.88.140.27 Ubuntu mysql_db1
77.88.140.28 Ubuntu mysql_db1

 

[Ansible Installing]

1. Locating Python

python이 설치되어 있는지 확인

python3 -m pip -V

설치되어 있지 않다면

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
​
python3 get-pip.py --user
​
python3 -m pip -V

 

2. Installing Ansible

sudo apt-add-repository ppa:ansible/ansible
​
enter
sudo apt update
​
sudo apt install ansible
#버전 확인
ansible --version
​
#아래와 같이 나오면 완료
ansible [core 2.13.13]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/dyana/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/dyana/.local/lib/python3.8/site-packages/ansible
  ansible collection location = /home/dyana/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.8.10 (default, Nov 22 2023, 10:22:35) [GCC 9.4.0]
  jinja version = 3.1.4
  libyaml = True

✅ Ansible Install success

 

[SSH 원격 접속을 위한 Settings]

1. 원격 server user 생성

각 원격 서버마다 Ansible Server가 접속할 Ansible 전용 user 생성

#nginx_web1 server의 nginx_server 생성
sudo adduser nginx_server
​
#Passwd 설정
passwd nginx_server
​
#nginx_web2 server의 nginx_server 생성
sudo adduser nginx_server
​
#tomcat_was1 server의 tomcat_server 생성
sudo adduser tomcat_server
.
.
.
#이하생략

 

2. 원격 server visudo 설정

Ansible server에서 원격 server ssh 접속 시 비밀번호 없이 접속하기 위한 설정

sudo visudo
​
#추가 
nginx_server ALL=(ALL) NOPASSWD:ALL 
​
#저장하고 나가기
(^O > enter > ^X)
  • Ansible 전용 user가 sudo 권한을 비밀번호 없이 사용할 수 있도록 설정

3. ssh-keygen 생성

Ansible Server에서 실행

ssh-copy-id [원격 서버 새로 생성한 user]@[원격 서버 IP]

 

[SSH 원격 접속 Test]

1. hosts 파일 생성(hosts.ini)

[local]
127.0.0.1
​
[local:vars]
ansible_connection=local
ansible_user=local_user
​
​
#nginx
[nginx_server]
77.88.140.23
77.88.140.24
​
[nginx_server:vars]
ansible_connection=ssh
ansible_user=nginx_user
​
#tomcat
[tomcat_server]
77.88.140.25
77.88.140.26
​
[tomcat_server:vars]
ansible_connection=ssh
ansible_user=tomcat_user
​
#mysql
[mysql_server]
77.88.140.27
77.88.140.28
​
[mysql_server:vars]
ansible_connection=ssh
ansible_user=mysql_user
master=77.88.140.27

 

2. Ping Test

Ansible Server에서 원격 서버로 ping test

#Ansible Server에서 실행
​
#모든 host에 ping 
ansible -m ping -i hosts.ini all
​
#특정 host에 ping
ansible -m ping -i nginx_server

 

test결과 예시

이렇게 ping test가 완료되면 Ansible Server에서 원격 접속이 가능해진 것이다.

'Ansible' 카테고리의 다른 글

[Ansible] Ansible이란?  (0) 2024.08.23