하마롱크의 블로그
Ansible 시작하기 본문
Ansible을 시작하기 위한 기본 구성 과정을 정리했다.
GCP 플랫폼에서 CentOS8을 기반으로 하여 진행했다.
1. Control 노드 구성하기
Control 노드의 내부IP는 10.178.0.3로 고정했다.
sudo su -
#hostname 설정
vim /etc/hostname
hostnamectl set-hostname control.example.com
#SELINUX 모드 변경
sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux
setenofrce0
getenforce #permissive
#방화벽 비활성화
systemctl stop firewalld
systemctl disable firewalld
vim /etc/hosts
#host 구성하기
#127.0.0.1 localhost.localdomain localhost
#10.178.0.3 control.example.com control
#10.178.0.4 servera.example.com servera
#10.178.0.5 serverb.example.com serverb
#10.178.0.6 serverc.example.com serverc
#root 비밀번호 설정
passwd
#test 유저 생성, 비밀번호 설정 후 로그인
useradd test
passwd test
su - test
#키 생성하기
mkdir .ssh
ssh-keygen -t rsa
cat .ssh/id_rsa.pub
#생성된 키 복사하여 GCP 플랫폼의 메타데이터에 추가
exit
#test유저 슈퍼유저로 변경
vim /etc/group
#wheel:x:10:test
#sudo 패스워드 입력없이 사용할 수 있도록 설정
vim /etc/sudoers
#test유저로 로그인 후 sudo 패스워드 없이 사용 가능한지 확인
su - test
sudo yum install vsftpd
2. Managed Node 구성하기
Managed Nodes는 3개로 구성했다. 각각의 IP는 다음과 같이 설정했다.
servera : 10.178.0.4
serverb : 10.178.0.5
serverc : 10.178.0.6
sudo su -
#hostname 설정
hostnamectl set-hostname servera.example.com
#SELINUX 모드 변경
sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux
setenofrce0
getenforce #permissive
#방화벽 비활성화
systemctl stop firewalld
systemctl disable firewalld
#SSH 서버 암호 인증 활성화
vim /etc/ssh/sshd_config
#Passworuthenti nodetion yes
systemc#tl restart sshd
#control node에서
#ssh test@servera로 접속이 되는지 확인
su - test
sudo yum install -y vsftpd
3. Ansible 설치
#Control Node에서 Ansible 패키지 설치
sudo dnf install -y epel-release
sudo dnf install -y ansible
#inventory 파일 작성
vim inventory #servera \ serverb \ serverc
#ansible 설정파일 작성
vim ansible.cfg
#[defaults]
#inventory = ./inventory
#remote_user = test
#ask_pass = false
#[previlege_escalation]
#become = true
#become_method = sudo
#become_user = root
#become_ask_pass = false
4. Ansible 동작 확인
ansible --version
#managed node 서버 동작 확인
ansible servera -m ping
#servera | SUCCESS => {
# "ansible_facts": {
# "discovered_interpreter_python": "/usr/libexec/platform-python"
# },
# "changed": false,
# "ping": "pong"
ansible servera -m ping에서 servera는 명령어가 실행되는 대상 노드이며 -m은 ansible이 지원하는 모듈을 의미하며, ping은 ICPM ping을 수행하는 것이 아니라 관리 호스트에서 Python기반 모듈을 실행할 수 있는지 확인하는 것이다.
ansible에서 fact는 동적 할당 변수를 의미하며 여기에선 Python 기반 모듈의 해석기로서 platform-python이 할당되었다고 보여준다.
"changed": false,는 대상노드에서 이 명령어를 실행함으로서 변경사항이 발생하지 않았다는 의미이며,
"ping": "pong" 은 ping에 대한 반환값으로 ping모듈이 성공적으로 동작했다는 의미이다.
※ 이 글의 내용은 받고 있는 교육내용을 토대로 정리했습니다.