Ansible 프로젝트

김동주·2024년 1월 24일
post-thumbnail

🚩 프로젝트

Ansible 문제풀이

🤼‍프로젝트 사용 기술

OS: Linux centos7
Iac: Ansible

📁 깃허브 주소

https://github.com/dongjucloud/ansible_project

🙇 학습 목표

Ansible 문제 풀이 및 정리를 통해 기본 개념 학습

🌐문제풀이

  1. Ansible 설치 및 구성
  2. Ansible 애드폰(Ad Hoc) 명령 생성 및 실행
  3. 패키지 설치
  4. RHEL 시스템 역할 사용
  5. Ansible Galaxy를 사용하여 역할 설치
  6. Web Server 구성 및 확인
  7. 역할 생성 및 사용
  8. 논리 볼륨 생성 및 사용
  9. 호스트 파일 생성
  10. 파일 콘텐츠 수정
  11. 웹 콘텐츠 디렉토리 생성
  12. 하드웨어 보고서 생성
  13. 암호 자격 증명 모음 생성
  14. 사용자 계정 생성
  15. FTP 서버 구성
  16. 시스템 런레벨(default.target) 변경
  17. 정기적인 잡(Job) 수행
  18. 종합

1.Ansible 설치 및 구성

다음과 같은 제어 노드 ansible.example.com에서 ansible을 설치하고 구성한다. 
□ 필요한 패키지를 설치
□ 다음과 같이 /home/ansible/project/inventory라는 정적 인벤토리를 파일을 생성한다. 
	□ ansible1은 dev 호스트 그룹의 구성원이다. 
	□ ansible2는 test 호스트 그룹의 구성원이다. 
	□ ansible3 및 ansible4는 prod 호스트 그룹의 구성원이다. 
	□ prod 그룹은 webservers 호스트 그룹의 구성원이다. 
□ 다음과 같이 /home/ansible/project/ansible.cfg 라는 구성 파일을 생성한다. 
	□ 호스트 인벤토리 파일은 /home/ansible/project/inventory 이다. 
    □ 플레이북에서 사용되는 역할의 위치에는 다음이 포함된다. * /home/ansible/project/roles

작업

$ mkdir ~/ansible/project && cd ~/ansible/project
$ vi ~/ansible/project/inventory


$ vi ~/ansible/project/ansible.cfg

2. Ansible 애드폰(Ad Hoc) 명령 생성 및 실행

(작업 개요)
시스템 관리자는 관리형 노드에 소프트웨어를 설치해야 한다. 따라서, Ansible 애드혹 명령을 사용하는
/home/ansible/project/adhoc.sh 라는 쉘스크립트를 생성하여 다음과 같이 각각의 관리형 노드에 yum
리포지토리를 생성한다. 
리포지토리 1:
□ 리포지토리의 이름은 MyBase 이다.
□ 설명은 base software 이다.
□ 기본 url은 다음과 같다. 
	http://192.168.10.10/pkg/BaseOS
□ GPG 서명 확인이 비활성화한다. 
□ 리포지토리를 활성화 한다. 
리포지토리 2:
□ 리포지토리의 이름은 MyAppStream 이다. 
□ 설명은 Appstream software 이다.
□ 기본 url은 다음과 같다.
	http://192.168.10.10/pkg/AppStream/ 이다.
□ GPG 서명 확인을 비활성화 한다. 
□ 리포지토리를 활성화 한다.

작업

준비:
1) cd 장착
2) Yum Repository 구성(/var/www/html/pkg/)
$ sudo mkdir –p /var/www/html/pkg
$ sudo cp -a /run/media/ansible/CentOS-Stream-8-BaseOS-x86_64
/
/var/www/html/pkg
$ sudo systemctl enable --now httpd

  • 쉘 스크립트 생성
    $ vi adhoc.sh

    $ chmod 755 *.sh
    $ ./adhoc.sh

3. 패키지 설치

다음과 같이 /home/ansible/project/packages.yml 이라는 플레이북을 생성한다. 
□ dev, test 및 prod 호스트 그룹의 호스트에 php 및 mariadb 패키지를 설치한다. 
□ dev 호스트 그룹의 호스트에 Development Tools 그룹 패키지 그룹을 설치한다. 
□ dev 호스트 그룹의 호스트에서 iotop 패키지를 설치한다.

작업

$ cd project
$ vi packages.yml
$ inventroy check [v]
-> 패키지 1 (php,mariadb) 생성 hosts=dev,test,prod
-> 패키지 2 (@Development Tools, iotop) 생성 hosts =dev
*@Deveploment -> 그룹 패키지기 때문에 앞에 @가 붙음


$ alias anp='ansible-playbook' <- alias 설정
$ anp packages.yml 실행

4. RHEL 시스템 역할 사용

RHEL 시스템 역할 패키지를 설치하고 다음과 같은 /home/ansible/project/time_sync.yml 이라는 플레
이북을 생성한다. 

□ 모든 관리형 노드에서 실행된다.
□ timesync 역할을 사용한다. 
□ 현재 활성 NTP 제공업체를 사용하도록 역할을 구성한다.
□ 시간 서버 time.bora.net를 사용하도록 역할을 구성한다.
□ iburst 매개 변수를 활성화하도록 역할을 구성한다.

작업

0) 패키지 설치
$ mkdir –p roles
$ ansible.cfg 파일에
-> roles_path= /home/ansible/project/roles:/usr/share/ansible/
roles:/etc/ansible/roles 설정
$ sudo yum install rhel-system-roles
$ cd /usr/share/ansible/roles
$ ls

$ cd rhel-system-roles.timesync


$ firefox README.html &


-> Example Playbook 형식을 사용

1) 플레이북 생성

$ cd project
$ vi /time_sync.yml


-> $ ande timezone -> timezone 형식 찾기

2) 확인

$ anp timesync.yml
$ ans all –m shell –a ‘date’

5. Ansible Galaxy를 사용하여 역할 설치

/home/ansible/project/roles/requirements.yml 이라는 요구 사항 파일을 만든다. 이 파일에는 Ansible
Galaxy를 사용하여 역할을 다운로드하고 /home/ansible/project/roles 디렉토리 하위에 설치한다.

작업

  1. roles라는 디렉토리를 만들어준다. -> requirements.yml 파일을 생성
    $ cd project
    $ mkdir roles
    $ vi roles/requirements.yml
  2. https://galaxy.ansible.com 사이트를 사용하여 docker파일 깃허브 사이트를 찾는다.
    Search - docker 입력 -> Type - role역할 선택 -> 검색해서 나온곳으로 이동
  • GitHub Repo 사이트를 이용하여 깃허브 주소 가져오기
  • 주소복사
  • requirements.yml 파일에 주소 입력
  • ansible-galaxy install –r roles/requirements.yml

    p roles 명령어를 통해 설치 완료

6. Web Server 구성 및 확인

다음 요구 사항이 있는 /home/ansible/project/webservers.yml 이라는 플레이북을 생성한다. 
□ 플레이북에는 webservers 호스트 그룹의 호스트에서 실행되어야 한다.
□ httpd/firewalld 패키지 설치, httpd/firewalld 서비스 기동, firewall에 http/https
 서비스 포트가 등록된 상태이어야 한다. 
□ URL/hello.html가 있는 webservers 호스트 그룹에서 호스트를 찾으면 다음 출력이 생성
 된다. FQDN이 호스트의 정규화된 도메인 이름이다. Hello World from FQDN
□ 예를 들어 http://ansible3.example.com/hello.html를 찾으면 다음 출력이 생성된다.
 Hello World from ansible3.example.com
□ 이와 유사하게 http://ansible4.example.com/hello.html를 찾으면 다음 출력이 생성된다.
  Hello World from ansible4.example.com

작업

  1. 미리 templates 파일에 hello.html파일을 생성
  2. httd, firewalld 패키지를 설치 한다. # hosts -> webservers 설정
    $ gather_facts: true로 설정
    $ yum 명령어를 통한 구현
  3. 아까 만든 tamplate/hello.html 파일을
    /var/www/html/hello.html에 서비스 설정한다.
  4. http,firewalld 서비스를 service 명령어를 통해 기동한다.
  5. http,https를 firewalld 명령어를 이용하여 방화벽 서비스 포트에 등록한다.
  6. anp webservers.yml 플레이북 실행
  7. 확인
    $ curl http://ansible3.example.com/hello.html
    $ curl http://ansible4.example.com/hello.html

7. 역할 생성 및 사용

다음 요구 사항으로 /home/ansible/project/roles에서 apache라는 역할을 생성한다. 
□ httpd/firewalld 패키지가 설치되고, httpd/firewalld 현재 뿐만 아니라 부팅 시에도 활성
 화되고, http/https 서비스 포트가 방화벽에 등록되고 시작된다. 
□ 방화벽이 활성화되며 해당 웹 서버에 대한 엑세스를 허용하는 규칙으로 실행된다.
□ 템플릿 파일 index.html.j2가 존재하며 다음 출력이 있는 /var/www/html/index.html 파일
 을 생성하는데 사용된다.
 HOSTNAME이 관리형 노드의 정규화된 도메인 이름이며, IPADDRESS가 관리형 노드의 IP주소
 이다. Welcome to HOSTNAME to IPADDRESS.
 
다음과 같이 이 역할을 사용하는 /home/ansible/project/newrole.yml이라는 플레이북을 생성한다. 
□ 플레이북은 webservers 호스트 그룹에 있는 호스트에서 실행된다.

작업

  1. galaxy init을 통해 roles에 apache설정
    $ cd ~/project
    $ ansible-galaxy init roles/apache
    $ tree roles/apache
  2. 6번과 같이 tasks/main.yml 파일 생성
    $ vi roles/apache/tasks/main.yml
  3. templates/index.html.j2에 Welcome to HOSTNAME to IPADDRESS
    형식과 같이 입력
    $ ansible localhost -m setup –a 'filter=ansible_hostname’
    $ ansible localhost -m setup -a 'filter=ansible_default_ipv4'

    $ vi roles/apache/templates/index.html.j2
  4. newrole.yml
    $ vi newrole.yml 파일 설정
  5. 확인 작업
    $ curl ansible3.example.com
    $ curl ansible4.example.com

8. 논리 볼륨 생성 및 사용

(선수작업)
* ansible3/ansible4 서버에 1G 용량의 디스크를 1장 추가한다.
(작업 개요)
다음을 수행하는 webservers 그룹이름을 가진 관리형 노드에서 실행되는
/home/ansible/project/lv.yml이라는 플레이북을 생성한다. 
□ 이러한 요구 사항으로 논리 볼륨을 생성한다. 
	□ 논리 볼륨은 research 볼륨 그룹에 생성된다.
	□ 논리 볼륨 이름은 data 이다. 
	□ 논리 볼륨의 크기는 500 Mib 이다. 
□ ext4 파일시스템으로 논리 볼륨을 포맷한다. 
□ 논리 볼륨을 /mnt/research 마운트한다. 반드시 부팅시에도 마운트는 되어야 한다.

작업

  1. ansible3/ansibe4 서버에 1g용량의 디스크 1장씩 추가한다. 2. lv.yml 파일 생성
    $ vi lv.yml
    $ ansible localhost -m setup –a 'filter=ansible_devices’
    $ ansible ansible3 -m setup –a 'filter=ansible_lvm’
    -> 통해 when절 설정 찾기
    $ ande parted, lvg, lvol, filesystem, mount
    -> 명령어 형식 찾기

  • 파티션 생성 - /dev/sb1 [lvm]
    $ ansible-playbook lv.yml
    (ansible3)$ lsblk
  • PV 생성
  • VG 생성 - /dev/research
  • LV 생성 - /dev/research/data
    $ lvcreate research -n date –L 500Mib
    (ansible3)$ sudo pvs, vgs, lvs
  • 파일 시스템 생성 - ext4
    $ mkfs -t ext4 /etv/research/data
    (ansible3)lsblk —fs
  • 마운트 - /mnt/research
    $ mount -t ext4 -o OPTIONS /dev/research/data /mnt/research
  • vi /etc/fstab
    $ /dev/research/data /mnt/research exr4 defaults 1 2

9. 호스트 파일 생성

□ 다음과 같은 hosts.j2 파일을 /home/ansible/project 디렉토리에 생성하고 초기 템플릿 파일로 사용
한다. /home/ansible/project/inventory 파일안에 있는 내용을 다음과 같이 변경한다.

□ /etc/hosts와 동일한 형식으로 각 인벤토리 호스트에 대한 줄이 포함된 파일을 생성하는 데 사
용할 수 있도록 템플릿을 작성한다.(ex: hosts.j2)
□ dev 호스트 그룹의 호스트에서 파일 /etc/myhosts를 생성하도록 이 템플릿을 사용하는
/home/ansible/project/hosts.yml 이라는 플레이북을 생성한다.
□ /etc/myhosts 파일의 소유자는 root 이고, 그룹은 root, 그리고 퍼미션은 rw-r--r-- 설정
되어 있어야 한다.

플레이북이 실행되면 dev 호스트 그룹의 호스트에 파일 /etc/myhosts에 각 관리형 호스트에 대한 줄이
있어야 한다.
[참고] 인벤토리 호스트 이름이 표시되는 순서는 중요하지 않다.

작업

1)inventory 변경

2) hosts.j2 형식의 반복문 생성
$ vi /project/template/hosts.j2

3) 설정 확인
$ ansible localhost -m debug -a 'var=groups["all"]'
$ ansible localhost -m debug –a 'var=hostvars["ansible1"]’
$ ans all -m debug –a 'var=hostvars["ansible1"]["ansible_ssh_host"]’

$ ansible all -m debug –a 'var=hostvars["ansible1"]'["ansible_ssh_host]“

4) playbook 파일 생성
$ vi hosts.yml
$ 퍼미션은 rw-r—r -> ‘0644’

5.확인 작업
$ ansible-playbook hosts.yml
$ ssh ansible1 cat /etc/myhosts

10. 파일 콘텐츠 수정

다음과 같이 /home/ansible/project/issue.yml 이라는 플레이북을 생성한다.
□ 플레이북은 모든 인벤토리 호스트에서 실행된다. 
□ 플레이북은 /etc/issue의 콘텐츠를 다음과 같은 한줄의 텍스트로 대체한다. 
	□ dev 호스트 그룹의 호스트에서 이 줄은 다음과 같다. Development
	□ test 호스트 그룹의 호스트에서 이 줄은 다음과 같다. Test
	□ prod 호스트 그룹의 호스트에서 이 줄은 다음과 같다. Production

작업

  1. 변수를 위해 group_vars 파일 생성
    $ mkdir –p group_vars
    $ vi group_vars/dev

    $ vi group_vars/test

    $ vi group_vars/prod

2.issue.j2 파일 생성
$ vi /templates/issue.j2

  1. issue.yml 파일 생성
    $ vi issue.yml

  2. 확인 작업
    $ anp issue.yml
    $ ans all -m shell -a 'cat /etc/issue’

11. 웹 콘텐츠 디렉토리 생성

(작업개요)
다음과 같이 /home/ansible/project/webcontent.yml 이라는 플레이북을 생성한다. 
□ 플레이북은 webservers 호스트 그룹에 있는 관리형 노드에서 실행한다.
□ 다음 요구 사항으로 디렉토리 /webdev를 만든다. 
	□ apache 그룹에서 소유하고 있다. 
	□ 일반 권한이 있다. 소유자=읽기+쓰기+실행, 그룹=읽기+쓰기+실행, 기타=읽기+실행
	□ 특수 권한이 있다. 그룹ID는 apache로 설정
□ /var/www/html/webdev를 /webdev에 심볼릭링크로 연결한다. 
□ WEBSERVERS라는 한 줄의 텍스트가 표시된 파일 /webdev/index.html을 생성한다.
□ Dev 호스트 그룹(예: http://ansible3.example.com/webdev/)의 호스트에서 이 디렉
 토리를 찾으면 다음 출력이 생성된다. 
 WEBSERVERS

작업

  1. 플레이북 생성
    $ vi /project/webcontent.yml

  2. /webdev 디렉토리 생성 – apache:apache, mode:2775(SetGID)

$ anp webcontent.yml
$ ssh ansible3 ;; ls –ld /webdev <- 디렉토리 생성 확인

  1. SELinx 설정 – httpd_sys_content_t

$ anp webcontent.yml
$ ssh ansible3 ;; ls –ldZ /webdev <- httpd_sys_content_t
생성 확인

  1. 링크 생성 -/var/www/html/webdev —symlink --> /webdev

    $ cd /etc/selinux/targetd/contexts/files
    $ cd/var/www/html -> ll -> 심볼릭 링크설정 확인

5.index.html 파일 생성 - /webdev/index.html

$ cd /etc/selinux/targetd/contexts/files
$ cd/var/www/html/webdev -> ls –lZ ->index.html 파일 확인

  1. 확인 작업
    $ curl http://ansible3/webdev/
    $ WEBSERVERS\n 텍스트 문구 확인

12. 하드웨어 보고서 생성

(작업 개요)
다음 정보를 사용하여 모든 관리형 노드에서 /root/hwreport.txt 라는 출력 파일을 생성하는
/home/ansible/project/hwreport.yml 이라는 플레이북을 생성한다. 

□ 인벤토리 호스트 이름
□ 총 메모리(MB)
□ BIOS 버전
□ 디스크 장치 sda의 크기
□ 디스크 장치 sdb의 크기
□ 출력 파일의 각 행에는 단일 행에는 key=value 쌍이 포함되어 있다. 

플레이북에서는 다음을 수행한다. 
□ hwreport.empty을 사용하여 /root/hwreport.txt으로 저장한다.
□ 올바른 값으로 /root/hwreport.txt를 수정한다. 
□ 디스크 하드웨어 항목이 없는 경우 연결된 값이 NONE으로 설정되어야 한다.

hwreport.empty 파일의 내용(다음 내용은 그대로 복사하여 사용한다.) 
------------------------------------------------------- 
HOST=inventory hostname
BIOS=bios version
MEMORY=toal memory in mb
SDA_DISK_SIZE=disk size
SDB_DISK_SIZE=disk size
SDC_DISK_SIZE=disk size
-------------------------------------------------------

작업

1.vi hwreport.empty 파일 생성

  1. 서비스 기동 및 방화벽 등록
    $ sudo yum -y install httpd mod_ssl
    $ sudo systemctl enable --now httpd
    $ sudo cp hwreport.empty /var/www/html

$ sudo firewall-cmd --permanent --add-service={http,https}
$ sudo firewall-cmd —reload

  1. vi hwreport.yml 파일 생성
    $ vi hwreport.yml

a) hwreport.empty을 사용하여 /root/hwreport.txt으로 저장하기

b)인벤토리 호스트 이름 설정하기
$ ans localhost –m setup –a ‘filter=ansible_hostname’

$ HOST=inventory hostname 바꾸기

c)BIOS 버전 설정하기
$ ans localhost –m setup –a ‘filter=ansible_bios_version’

$ BIOS=bios version 바꾸기

d) 총 메모리(MB) 설정하기
$ ans localhost –m setup –a ‘filter=ansilbe*’ | greb mb
-> ans localhost –m setup –a ‘filter=ansilbe_memtotal_mb’

$ MEMORY=toal memory in mb 바꾸기

e)sda,sdb,sdc 디스크 크기 설정하기
$ ans localhost –m setup –a ‘filter=ansible_devices’

$ SDA_DISK_SIZE=disk size
$ SDB_DISK_SIZE=disk size
$ SDC_DISK_SIZE=disk size 바꾸기

f) hwreport 저장 파일 만들기

$ mkdir -p hwreport

g) 확인 및 테스트
설정: ansible 1에 용량 4g의 하드디스크를 추가하고 플레이북 실행
(ansible)
$ anp hwreport.yml
$ tree hwreport

$ cd /project/hwreport/ansible1.example.com/root
$ cat hwreport.txt

-> ansible1에서의 정보를 잘 출력 (성공)

13. 암호 자격 증명 모음 생성

(작업 개요)
ansible 자격 증명 모음을 생성하여 다음과 같이 사용자 암호를 저장한다.
□ 자격 증명 모음의 이름은 /home/ansible/project/pw.yml 이다. 
□ 자격 증명 모음에는 이름이 있는 두개의 변수가 포함된다. 
	□ pw_developer 변수의 값이 Imadev 이다. 
	□ pw_manager 변수의 값이 Imamgr 이다. 
□ 자격 증명 모음을 암호화하고 해독하는 암호는 haveagoodtime 이다. 
□ pw.yml 플레이북을 실행할 때 암호가 필요하면 이 암호는 secret.txt 파일에 저장한다.

작업

$ cd ~/project
$ echo 'haveagoodtime' > secret.txt
$ chmod 600 secret.txt

$ mkdir –p vars
$ ansible-vault create pw.yml

$ ansible-vault create —vault-password-file=secret.txt vars/pw.yml

$ ansible-vault view vars/pw.yml
-> haveagoodtime

14. 사용자 계정 생성

□ /home/ansible/project/userlist.yml에 생성하는 사용자 목록을 만든다. 
사용자 목록은 다음과 같은 내용을 담는다.(다음 내용은 변경하지 않고, 복사해서 사용한다.)
> ---
users:
 - username: developer
 groups: daemon
 - username: manager
 groups: adm
□ 이전 문제에서 생성된 암호 자격 증명 모음 /home/ansible/project/pw.yml을 사
 용하여 다음과 같이 사용자 계정을 생성하는 /home/ansible/project/users.yml이라는
 플레이북을 생성한다. 
	□ developer의 작업 설명이 있는 사용자는 다음과 같다. 
    	□ dev 및 test 호스트 그룹의 관리형 노드에서 생성됨
		□ pw_developer 변수에서 암호 할당함
		□ 보조 그룹 daemon의 구성원
	□ manager의 작업 설명이 있는 사용자는 다음과 같다. 
    	□ prod 호스트 그룹의 관리형 노드에서 생성됨
		□ pw_manager 변수에서 암호 할당함
		□ 보조 그룹 adm의 구성원
□ 암호는 SHA512 해시 형식을 사용해야 한다. 
□ 플레이북은 /home/ansible/project/secret.txt 자격 증명 모음 암호 파일을 사용하여 실행
 된다.

작업

  • userlist.yml 파일 변수 설정

  • vi /project/userlist.yml 파일 생성
    a) developer 사용자 생성

    b) manager 사용자 생성

  • 확인 작업
    $ ssh developer@ansible1
    -> imadev
    $ ssh manager@ansible3
    -> imamg

15. FTP 서버 구성

□ FTP 서버를 구성하는 /home/ansible/project/ftp.yml 파일을 생성한다. 
□ 플레이북으로 FTP 서버 구성시 조건은 다음과 같다. 
	□ test 관리 노드에서만 실행된다. 
	□ Anonymous FTP 서비스는 비활성화 한다. 
	□ vsftpd 패키지를 사용하여 설치하고, 서비스는 부팅시도 기동된다. 
	□ root 사용자는 원격에서 접근이 가능해야 한다. 
	□ 방화벽에 포트가 영구적으로 등록되어 있어야 한다.

[참고] 다음과 같은 연계 프로젝트를 진행한다. 
* DNS 서버
* MAIL 서버
* WEB 서버
* 공유스토리지 서버
* 이중화

작업

$ sudo yum -y install vsftpd ftp

  1. 패키지 설치

2.서비스 설정
a) vsftpd.conf.j2 파일 생성(anoymous 사용자 설정)
$ sudo cat /etc/vsftpd/vsftpd.conf | egrep –v ^|#’ > vsftpd.conf.j2
-> {{anonymous_enable}} 변수 설정

b)root사용자 제거 -> 파일 만들기
$ sudo cp /etc/vsftpd/ftpusers
$ sudo cp /etc/vsftpd/user_list

$ sudo vi ftpusers -> root 라인 제거
$ sudo vi user_list -> root 라인 제거

  • 허가 설정

  • 소유자 그룹 설정
    $ sudo chown ansible:ansible *

    $ anp ftp.yml
    $ cd /etc/vsftpd
    $ sudo cat ftpusers <- 파일이 잘 형성되었다.
    $ sudo cat user_list <- 파일이 잘 형성되었다.

c) 서비스 기동 & 방화벽 서비스 등록

d) 확인 작업
$ anp ftp.yml
$ ftp ansible2


-> root 사용자는 접속 가능
->annoymous 사용자는 접속 불가능

16. 시스템 런레벨(default.target) 변경

□ 다음과 같은 조건을 갖는 target.yml 파일을 작성한다. 
	- 모든 노드는 multi-user.target를 사용하도록 설정한다.
    
[참고] multi-user.target, graphical.target
/usr/lib/systemd <-> /etc/systemd
* /usr/lib/systemd/system/multi-user.target
* /etc/systemd/system/default.target

(현재) # systemctl isolate graphical.target
(부팅) # systemctl set-default graphical.target

작업

  1. 작동 원리 알기
    $ ssh ansible2
    $ systemctl set-default graphical.target

    -> 심볼릭 링크 원리

  2. 플레이북 파일 설정
    $ vi /project/target.yml

$ vi target.yml -> TUI 전환 확인

17. 정기적인 잡(Job) 수행

□ 다음과 같은 조건을 갖는 /home/ansible/project/cronjob.yml 파일을 생성한다.
	* 다음 작업은 test 그룹에서만 실행된다. 
	* ansible 사용자의 잡 설정으로 한다.
	* 잡 이름은 datejob으로 한다.
	* 매시간 2번(0분, 30분)씩 평일(월~금)에만 date 명령의 출력 결과를
	 /home/ansible/datefile 저장한다.
		 * /home/ansible/datefile에는 date 명령의 출력 결과가 지속적으로 남겨져 있어야 한다.

작업

분 시 일 월 요일 CMD
0,30 * * * 1-5 date >> /root/datefile

  • 플레이북 생성
    $ vi /project/conjob.yml

사용자가 ansilbe 사용자로 설정(다른 사용자 x)
-> remote_user: ansible로 설정한다.

$ anp cornjob.yml
$ ssh ansible2
$ crontab –l

18. 종합

□ 현재 구성된 여러개의 서비스 구성에 대한 종합 플레이북 playbook.yml을 만든다. 
□ 다음은 total.yml 파일에 구성되어야 하는 내용들이다. 
	
    * /home/ansible/project/packages.yml 실행되어야 한다. 
	* /home/ansible/project/time_sync.yml 실행되어야 한다. 
	* /home/ansible/project/webservers.yml 실행되어야 한다.

작업

  • vi playbook.yml 파일 만들기
    import_playbook을 이용하여 만든다.
profile
더욱 더 발전된 엔지니어가 되기 위한 개인 공부 블로그(DevOps/Cloud)

0개의 댓글