#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
특징
- Scalability
- Ease of Setup
- Ease of Management
- Interoperability( 어느 OS든 사용 가능)
- CM Language
- Popularity
- 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로 관리사항 기재
- IT Automation
- Configuration Management
- Automatic Deployment
Ansible master와 node 사이의 ssh 연결
- Root가 아닌 일반 사용자로서 ansible 운영 필요
- Ansible 운영자들 사이에서 ssh 연결
- Ansible 운영자에게 sudo 권한 필요
- 마스터와 노드 기계 사이에서 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"
'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 |