본문 바로가기
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

'IT study > Linux' 카테고리의 다른 글

05. ansible addhook  (0) 2022.12.10
05. ansible vault  (0) 2022.12.10
04. ansible 실습  (0) 2022.12.10
03.yaml syntax 설정  (0) 2022.12.10
02. yaml 파일 설정  (0) 2022.12.10