IT study/Linux
01. ansible 및 yaml 실습
by 핸조
2022. 12. 10.
yaml 설정파일 및 명령어
실습장비
control node: server1.example.com
NIC 타입 및 ip address: NAT type , 192.168.10.10
hostname: server1.example.com
------------------------------------------------
managed node(관리대상) : server2.example.com
NIC 타입 및 ip address: NAT type , 192.168.10.20
hostname: servera.example.com
------------------------------------------------
managed node(관리대상) : server3.example.com
NIC 타입 및 ip address: NAT type , 192.168.10.30
hostname: serverb.example.com
* ansible 테스트를 위해서는 managed node 가 최소 2대는
필요하고 좀 더 원활한 테스트를 위해서는 3대 이상으로 하는게
좋다.
------------------------------------------------
managed node(관리대상) : server4.example.com
NIC 타입 및 ip address: NAT type , 192.168.10.40
hostname: serverc.example.com
server1 에서 할일
1. yum -y install ansible (ansible 설치)
2. /etc/hosts 파일에 managed node 등록
192.168.10.10 server1.example.com server1
192.168.10.20 servera.example.com servera
192.168.10.30 serverb.example.com serverb
192.168.10.40 serverc.example.com serverc
3. ansible 로 작업할 일반계정을 manager 라는
id 로 생성 및 암호설정
4.manager 계정으로 login 해서 공개키/개인키 생성후
공개키는 managed nodes 로 upload
5. 각 managed nodes 에 devops 계정을 생성하고 sudo 권한 부여
vim /etc/sudoers.d/devops
devops root=(root) NOPASSWD: ALL
6.server1 에서 manager 계정 생성 후 ssh-keygen : 물어보는것들은 전부 엔터키 쳐서 디폴트로 옵션으로 키 생성
공개키업로드: server1에서 manager 계정으로 ssh-copy-id 명령어로 managed nodes 의 devops 계정으로 공개키 업로드
==>devops@servera.example.com ~ serverc@example.com
server1 에서 manager 계정으로 홈디렉토리에 test 디렉토리 생성후
ansible.cfg 아래처럼 작성
[defaults]
inventory=./inventory
remote_user = devops
[privilege_escalation]
become=True
become_method=sudo
become_user=root
7. /home/manager/inventory 파일을 만들고 아래처럼 내용작성
[groupA]
servera.example.com
serverb.example.com
[groupB]
serverc.example.com
8. 그리고 나서 managed nodes 가 문제없는 지 확인
ansbile all -m ping -u devops
9. 간단한 playbook 을 작성해서 /home/devops/test 디렉토리에 저장
파일이름은 마음대로 해도 되지만 확장자는 yml, 또는 yaml 로 저장
playbook을 작성하기전에 편집을 좀 더 쉽고 편리하게
할수 있도록 vim 설장파일 생성
server1 에서 manager 계정으로 자기 홈디렉토리로
이동한다음 .vimrc 를 아래처럼 작성
cat /home/manager/.vimrc
autocmd FileType yaml setlocal ai ts=2 sw=2 et
--> 이렇게 설정을 하면 vim 편집기로 yaml 파일을
작성할때 좀 더 쉽고 편리하게 작성할 수 있다.
- name: check exist user info
hosts: all
tasks:
- name: check user100 info
user:
name: user100
uid: 2000
state: absent
실행: server1 에서 manager 계정으로 /home/manager/test 디렉토리로 이동한다음
ansible-playbook --syntax-check user.yaml(파일명이 user.yaml 이라고 가정) : 문법체크
에러가 없으면 직접 실행 ==> ansible-playbook user.yaml
==> managed nodes 에 계정이 생성되었는 확인.
10 위에서 문제가 없으면 playbook 내용을 아래처럼 추가하여 다시 실행
--- # playbook 시작
- name: check exist user info
hosts: all
tasks:
- name: check user100 info
user:
name: user100
uid: 2000
state: absent
- name: exist user200 info
user:
name: user200
uid: 3000
home: /var/user200
state: present
- name: second play
hosts: servera.example.com
tasks:
- name: second tasks
copy:
src: /etc/issue
dest: /tmp/issue.txt