ansible- 2

박형준·2024년 3월 28일

VScode 접속하는 방법

  • 이전에 했던 내용과 함께 vim-enhanced와 tar 설치후 접속 완료

****Quzi****

  1. work PC 홈디렉터리아래 2day 디렉터리 생성 후 진행

  2. 2day 디렉터리 아래, inventory생성, ansible.cfg 생성

  3. serverc.test.com 에다 패키지 설치 ( dnf )
    httpd / php / php-mysqlnd / mariadb-server / vsftpd

  4. httpd, mariadb,vsftpd 데몬(systemctl)을 시작.(상시 허용)

  5. 방화벽에는 http프로토콜 추가

  6. index.php 파일을 생성하고 serverc에 업로드

  1. 윈도우에서 접속해보기
    *파일내용 메모장에 복사 / 접속화면 캡쳐 해서 메일로 piterpen@naver.com _이름도 꼭

*yaml 파일명은 자유. pkg 라는 이름을 만들고 그 아래 설치하려는 목록을 나열해주면됨.


serverc.test.com 에다 패키지 설치 ( dnf )

*yaml 파일명은 자유.

  • dnf를 통해 여러개 패키지를 한번에 설치
  • anp -C apm.yaml
    • anp apm.yaml

*serverc 에 접속 하지 않고도 설치 확인

  • [root@work 2day]# ansible serverc.test.com -m shell -a 'rpm -qa | grep php' ⇒ vsftpd
    • SSH password:
      BECOME password[defaults to SSH password]:
    • -a 옵션: argument
  • 패키지 설치 된 것을 확인

*문제 4~7번까지 내용 ⇒ 반복문을 이용해서 간소화

-#vi test.php

  • #anp -C apm.yaml
    #anp apm.yaml
  • apm 설치하는 것을 vi로 간략하게 적는 방법, 시스템 동작 후 영구 동작
  • 방화벽 허용과 web page 연동
  • 홈페이지 내용 입력(php)
  • web site를 코드로 체크하는 방법(uri)
  • 2.yaml 플레이북 가상 실행
  • 2.yaml 플레이북 실행

*변수 사용

  • 2day 에서
  • 2day 디렉토리에 createuser.yaml 파일 생성 해서 user.yaml 파일을 동작 시켜 보기
    #vi createuser.yaml

  • [root@work 2day]# anp -C createuser.yaml
    • [root@work 2day]# anp createuser.yaml
      SSH password:
      BECOME password[defaults to SSH password]:

*centos 사용자 생성된것 확인 servera, serverb, serverc, serverd 모두
[root@work 2day]# ansible serverb.test.com -m shell -a 'tail /etc/passwd'

  • vars폴더 아래 user.yaml파일 만들어서 vi로 열기
  • 사용자 정보 입력
  • 사용자 생성 파일을 vi로 생성한다.
  • 사용자 생성 파일의 내용을 입력한다.(all: 전부, wheel: 비어놓는다는 뜻)
  • 플레이북 가상 실행
  • 플레이북 실행
  • 명령어를 입력하여 사용자가 생성되었는지 확인(tail)
  • -a 옵션: 명령어 입력

사용자 정보를 new fact를 통해 저장 - #vi new_facts.yaml

  • old_facts를 서버 A에 적용 시키기
  • new-facts.yaml 파일 열기
  • vi로 서버 A에 ansible_facts 실행을 작성
  • 플레이 북으로 new_facts.yaml 파일을 서버 A에 실행

*유저 정보 입력해서 사용자 생성

  • 유저 정보 입력하기

cat new_facts.yaml -> 확인

  • user.yaml 파일 작성, 사용자 정보 입력
  • user.yaml 파일 작성, 더 자세한 정보 입력
  • user.yaml 파일 작성, old 파일과 new 파일 매칭
  • new_facts.yaml 실행 후에
  • 적용 되었는지 확인해보지만 안되었다(버젼 이슈)

실행 결과를 메시지로 표현(msg)

  • lunch.yaml을 vi로 작성
  • 기호에 따라서 실행했을 때 메세지가 어떻게 표현되는지 확인
  • 줄 바꿈 표시가 바뀐다()
  • showtest.yaml 파일을 열기
  • showtest.yaml 파일 작성 위에서와 마찬가지로 기호 (>, |, 아무것도 없이)에 따라서 결과값 확인
  • 가상 실행 결과 >(꺽새)는 줄 바꿈 표시가 \ 로 표시되고
  • |(파이프)는 \n 표시되며
  • 아무 것도 없는 것은 표시가 없이 줄을 바꿔준다.

*변수 - 그룹변수, 호스트 변수, 플레이 변수, 추가변수

  • 그룹변수 - 그룹에 적용되는 변수 [web]a,b [db]c [time]d
  • 호스트 변수 - 호스트에만 적용 : servera.test.com
  • 플레이 변수 - 플레이북 내에서만 선언
  • 추가변수 - 파라미터 값도 함께 넘겨주는거.
    • 우선순위는 추가변수 > 플레이변수 > 호스트 변수 > 그룹변수 순서로 추가변수가 가장 높음.
    • 기타 변수[작업변수] - 결과값을 저장

*3day 디렉토리 생성 과 함께 inventory , ansible.cfg 파일을 복사 해서 넣기

  • 3day 폴더 생성 후 inventory 파일에 진입
  • 사용자 생성 그룹을 등록(vars: 변수, user: 사용자)

*그룹 변수

  • inventory 파일 맨 아래 추가

    • [webndb:children]
      web
      db

    • [all:vars]
      user=ansible

#vi create-user.yaml

*실행 후 확인 해 보면 모든 서버에 ansible 사용자 생성

  • [root@work 3day]# ssh root@servera.test.com
    • root@servera.test.com's password:
  • create-user.yaml 파일 생성
  • vi로 모든 서버에게 사용자를 만드는 내용 입력(그룹 변수)
  • 플레이 북 실행 완료
  • 서버 A 접속 해서 사용자 생성된 것 확인

*인벤토리를 수정해서 호스트변수 실행

  • vi inventory 에서 호스트 관련 변수 선언
    • [db]
      serverc.test.com user=ansible01

*호스트 변수 실습

  • [root@work 3day]# cp create-user.yaml create-user01.yaml
    • create-user01.yaml에서

*실행 후 db 그룹에 등록된 serverc 에 ansible01 사용자 생성 확인(ls /home)

*인벤토리에서 web 서버에 등록된 두대 중 한대만 변수 지정 후 실행 하고 생성 확인 ( ansible01 )

  • 변수 지정이 된 호스트에는 생성 , 지정 안된 호스트는 생성되지 않음.
  • inventory에서 db 그룹 내용 수정, 사용자 등록
  • create-user.yaml을 복사해서 create-user01.yaml파일 생성
  • db 그룹의 사용자만 생성하는 내용 입력(호스트 변수)
  • 서버 C 에서만 사용자가 생성된 것 확인
  • create-user.yaml 복사해서 create-user02.yaml 파일 생성
  • 사용자 ansible02를 생성하는 내용 입력
  • 플레이북 가상 실행
  • 실행 완료
  • 사용자 생성 확인

*플레이 변수 실습 ⇒ 야물파일에 변수를 지정해서 실행 시키면 inventor 보다 우선순위를 가짐

  • [root@work 3day]# cp create-user.yaml create-user02.yaml

*실행 후 서버에서 사용자 ansible2 생성 확인

*파일을 외부에 두고 실행 .

  • [root@work 3day]# mkdir vars
    • [root@work 3day]# vi vars/users.yaml
    • user: ansible3
    • :wq
  • [root@work 3day]# cp create-user02.yaml create-user03.yaml 복사 후 수정

*저장 / 실행 하고 / ansible3 사용자 생성 확인

  • vars 폴더 생성
  • vars 폴더 아래 ansible03 사용자를 생성하는 내용 입력
  • create-user03.yaml 파일 생성
  • 사용자 만드는 파일의 경로 지정(플레이 변수 설정)
  • 실행 완료
  • 서버 C에 접속해서 확인

*추가 변수 실습 == 파일을 수정하지 않고 명령어를 통해서 파일의 내용을 지정 해주는 법

  • -create-user03.yaml 파일에 기록된 사용자를 ansible4로 변경해서 명령어 실행 ..
    • [root@work 3day]# anp -e user=ansible4 create-user03.yaml

*실행 / 사용자 생성 확인

  • -e 옵션: 편집하는 것
  • ansible을 통해 create-user03.yaml으로 사용자 ansible04 복사(추가 변수)
  • 서버 B에 접속해서 확인

*작업변수 실습 = 플레이북 실행 결과를 저장 .

  • [root@work 3day]# cp create-user01.yaml create-user04.yaml

    • [root@work 3day]# vi create-user04.yaml
  • 맨 아래 쪽에 내용 입력

*저장 / 실행 하는 데 그냥실행하면 사용자 중복되어 추가 변수와 함께 실행 해보기 사용자를 ansible5로 생성

  • [root@work 3day]# anp -e user=ansible5 create-user04.yaml ⇒ 작업 결과를 모니터에 보여줌.
    • [root@work 3day]# anp -e user=ansible5 create-user04.yaml > test.txt ⇒ test.txt 파일에 결과를 저장
  • [root@work 3day]# vi create-user04.yaml 파일 열기
  • 결과를 저장하는 내용 입력(작업 변수)
  • 실행 결과, 결과가 저장 된다.
  • 서버 A에 접속해서 확인했으며 사용자 생성 완료

*팩트 - 자동예약 변수[ 관리 호스트에서 자동으로 검색한 변수 ]

-호스트 이름, 커널, OS, 메모리, CPU, 디스크 용량 등………………………

#vi facts.yaml 열기

    • *저장 후 실행 하면 호스트에 대한 많은 양의 정보가 보여짐.
  • [root@work 3day]# vi facts.yaml파일 열기
  • db 그룹에 ansible_facts를 실행하는 내용 입력
  • 가상 실행 완료(

*ip 관련 메세지 출력

  • [root@work 3day]# cp facts.yaml facts01.yaml
  • [root@work 3day]# vi facts01.yaml
  • ⇒실행해보면 IP관련 정보만 출력됨.
  • facts.yaml 파일을 facts01.yaml 파일에 복사해서 열기
  • db 그룹에게 IP를 프린트하는 내용을 입력
  • 실행 결과 메세지로 아이피 출력

#vi disk.yaml ⇒ 디스크 사용량만 확인 해보기

  • *실행 해보면 디스크 사용량 정보 확인
  • [root@work 3day]# vi disk.yaml 파일 열기
  • 디스크 용량 확인하는 내용 입력(aaa는 의미 없음)
  • 실행 결과 디스크 용량 확인

*호스트에 대해서 조건이 맞으면 메시지 출력

  • 현재 시스템과 조건이 맞으면 This system is 64bit system
    • 틀리면 system is different
  • [root@work 3day]# vi test1.yaml
  • ⇒ 저장 / 실행 하고 결과 확인
  • [root@work 3day]# vi test1.yaml 파일 열기
  • 조건문: 조건이 맞을 때 메세지 출력 i386일 땐 조건이 안맞아서 아래 메세지 출력
  • 실행 결과 아래 메시지 출력 완료
  • x86_64일 땐 조건이 맞아서 위의 메세지 출력
  • 실행 결과 위 메시지 출력 완료

문제 :

  • serverd.test.com 시스템이 사용가능한 메모리가 300M 이상이 되었을때

    • This system is Memory has big 메시지가 출력 되도록 ..
  • #vi test2.yaml

  • *실행 후 결과 확인 하면 메시지가 출력 됨 This system is Memory has big
    메모리 용량을 4000 으로 변경 후
    실행 하면 메시지 출력안됨.
  • [root@work 3day]# vi test2.yaml 파일 열기
  • 조건문이며 사용 가능한 메모리가 300M 이상이 될 때 메세지 출력
  • 조건이 맞아서 메세지 This system is Memory has big을 출력한다.

0개의 댓글