본문 바로가기
CS(Computer Science)/소프트웨어공학

8. Ansible - Configuration Management

by 동욷 2023. 2. 6.

#Ansible #Configuration #Management

Configuration Management

  • Automated CM
  • Manage large scale heterogeneous computer cluster
  • H/W monitoring
  • S/W install
  • Environment 불일치 문제 해소
  • 업무 Zero Downtime 달성을 위한 기본적인 도구
  • Basic tool for IT Automation

IAC(Infrastructure As Code)

  • IT operation을 자동화
  • 중앙에서 수백대 이상의 기기에 각 기기에 필요한 환경을 provisioning

CM Tools - Puppet, Chef, Saltstack, Ansible

특징

  1. Scalability
  2. Ease of Setup
  3. Ease of Management
  4. Interoperability( 어느 OS든 사용 가능)
  5. CM Language
  6. Popularity
  7. Cost

CM Architecture

  • Pull : Agent(client)가 주기적으로 master(server)에게 configuration 문의, 독자적인 기능 추가 편리

  • Push : Server가 주기적으로 node들에게 configuration 주입, No client side setup at all, Shell command with root privileges, SSH connection from server to machines, 간편함

Ansible

  • 상대적으로 새로운 도구, Red Hat이 인수
  • shell script 기반 / YAML로 관리사항 기재
  1. IT Automation
  2. Configuration Management
  3. Automatic Deployment

Ansible master와 node 사이의 ssh 연결

  1. Root가 아닌 일반 사용자로서 ansible 운영 필요
  2. Ansible 운영자들 사이에서 ssh 연결
  3. Ansible 운영자에게 sudo 권한 필요
  4. 마스터와 노드 기계 사이에서 ssh 연결에 필요한 키 공유
  • ssh -keygen
  • cat ~/.ssh/id_rsa.pub
  • ssh-copy-id <SSH key를 공유할 노드의 private ip address>

5. 노드에 SSH 연결을 위해 노드의 password 입력 필요

6. 매번 연결 시 password 묻지 않고 자동으로 연결되도록 노드의 ssh demon configuraton 수정

설치

$ sudo su -

$ apt update

$ apt install software-properties-common

$ add-apt-repository --yes --update ppa:ansible/ansible

$ apt install ansible

Ansible 시작하기

(master 기계에서)

• ansible --list-host all

• ansible <group name> –m ping

• ssh-keygen

• ls .ssh

• ssh-copy-id <private ip address of nodes> (node 기계들에서)

• /etc/ssh/sshd_config 파일 수정

• PasswordAuthentication yes

• PermitEmptyPasswords yes

• PermitRootLogin yes

• systemctl restart sshd (master 기계에서)

• ssh-copy-id <private ip address of nodes> (node 기계에서)

• passwd root 실행하여 적당한 root password 입력 (master 기계에서)

• ssh <private ip address of node machine> 을 실행하여 node로 들어가는 것 확인

• exit 명령 실행하여 node 기계에서 master로 복귀

• ssh-copy-id <private ip address of nodes>

Ansible yaml 파일

(master 기계에서)

  • hello txt 파일 작성
  • Hello, Hongik

  • test.yml 파일 작성
  • ---
  • - name : test

hosts : <group name>

gather_facts : true

tasks:

- copy : src=/root/hello.txt dest=/root/yap.txt

  • ansible-playbook test.yml --syntax-check
  • ansible-playbook test.yml (node 기계에서)
  • yap.txt 복제되어 생성된 것 확인

Ad-hoc commands

command hostgroups module/arguments[options]

ansible-doc -l | less

ansible-doc | grep -i user

ansible-doc user

ansible-doc apt

ansible <group name> reboot

ansible all -a uptime

ansible all -a "uname -a"

ansible all -m ping

ansible all -a "apt-get -y install apache2"

ansible all -m apt -a "name=apache2 state=latest"

728x90

'CS(Computer Science) > 소프트웨어공학' 카테고리의 다른 글

10. Jenkins  (0) 2023.02.06
9. Selenium - Automated Testing  (0) 2023.02.06
7. KUBERNETES  (0) 2023.02.06
6. Network Virtualization  (0) 2023.02.06
5. Docker3  (4) 2023.02.06