# Ansible Playbook 사용하기
- Ansible Playbook은 사용자가 원하는 내용을 미리 작성해 놓는 파일이라고 볼 수 있다.
이전에는 1개의 명령어를 각각 실행하는 구조 였다면, play 북은 미리 작성해 놓고 사용한다는 의미로 생각하면 된다.
- Playbool.yml 파일을 활용하여 새로운 hosts를 추가해보자. hosts의 ip는 172.17.0.5 이다.
파일명 : first-playbook.yml
파일의 내용
---
- name: Add an ansible hosts
hosts: localhost
tasks:
- name: Add a ansible hosts
blockinfile:
path: /etc/ansible/hosts
block: |
[mygroup]
172.17.0.5
- 실행 명령어
ansible-playbook first-playbook.yml
[root@ansible-server /]# ansible-playbook first-playbook.yml
PLAY [Add an ansible hosts] ****************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************
ok: [localhost]
TASK [Add a ansible hosts] *****************************************************************************************************************
changed: [localhost]
PLAY RECAP *********************************************************************************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- 정상적으로 추가가 되었는지 hosts 파일을 확인하면 아래와 같다.
기존에 존재하지 않았던 # BEGIN ANSIBLE MANAGED BLOCK 의 내용으 추가된것을 확인 할 수 있다.
[devops]
172.17.0.3
172.17.0.4
# BEGIN ANSIBLE MANAGED BLOCK
[mygroup]
172.17.0.5
# END ANSIBLE MANAGED BLOCK
# Ansible playbook을 활용한 파일 복사
일단 파일명은 playbook-sample.yml 파일로 지정한다.
그리고 아래와 같이 내용을입력한다. 그리고 playbook-sample.yml 파일이 있는 경로에 sample.txt파일이 존재하지 않으면 vi명령어를 활용하여 새로 생성한다.
- name: Ansible Copy Example Local to Remtoe
hosts: devops
tasks:
- name: copying file with playbook
copy:
src: ./sample.txt
dest: /tmp
owner: root
mode: 0644
- 그리고 실행한다. 결과는 아래와 같다.
[root@ansible-server /]# ansible-playbook playbook-sample.yml
PLAY [Ansible Copy Example Local to Remtoe] ************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************
ok: [172.17.0.3]
ok: [172.17.0.4]
TASK [copying file with playbook] **********************************************************************************************************
changed: [172.17.0.4]
changed: [172.17.0.3]
PLAY RECAP *********************************************************************************************************************************
172.17.0.3 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.17.0.4 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- 172.17.0.4번 서버에 가서 /tmp 폴더를 확인해보면 아래와 같이 sample.txt 파일이 존재하는것을 확인 할 수 있다.
[root@docker-server tmp]# ls -l
total 20
-rwx------ 1 root root 701 Sep 15 2021 ks-script-4luisyla
-rwx------ 1 root root 671 Sep 15 2021 ks-script-o23i7rc2
-rwx------ 1 root root 291 Sep 15 2021 ks-script-x6ei4wuu
-rw-r--r-- 1 root root 25 May 9 06:56 sample.txt
-rw-r--r-- 1 root root 16 May 9 05:44 test
[root@docker-server tmp]# hostname -i
172.18.0.1 172.17.0.4
- 파일 다운로드 후 복사하는 예제 수행하기
파일을 생성한다. playbook-sample-download.yml
파일의 내용은 아래와 같다. 몇가지 에러를 수정한 코드는 아래와 같다. 마지막의 tomcat url은 변경이 잘 되므로
---
- name: Download Tomcat9 from tomcat.apache.org
hosts: all
tasks:
- name: Create a Directory /opt/tomcat-9
file:
path: /opt/tomcat-9
state: directory
mode: 0755
- name: Download the Tomcat checksum
get_url:
url: https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.74/bin/apache-tomcat-9.0.74.tar.gz.sha512
dest: /opt/tomcat-9/apache-tomcat-9.0.74.tar.gz.sha512
- name: Register the checksum value
shell: cat /opt/tomcat-9/apache-tomcat-9.0.74.tar.gz.sha512 | grep apache-tomcat-9.0.74.tar.gz | awk '{ print $1 }'
register: tomcat_checksum_value
- name: Download Tomcat using get_url
get_url:
url: https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.74/bin/apache-tomcat-9.0.74.tar.gz
dest: /opt/tomcat-9
mode: 0755
checksum: sha512:{{ tomcat_checksum_value.stdout }}"
- 파일 실행
실행 명령어 : ansible-playbook playbook-sample-download.yml
- 실행 결과
[root@ansible-server /]# ansible-playbook playbook-sample-download.yml
PLAY [Download Tomcat9 from tomcat.apache.org] **************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************
ok: [172.17.0.4]
ok: [172.17.0.3]
TASK [Create a Directory /opt/tomcat-9] *********************************************************************************************************************
changed: [172.17.0.4]
changed: [172.17.0.3]
TASK [Download the Tomcat checksum] *************************************************************************************************************************
changed: [172.17.0.4]
changed: [172.17.0.3]
TASK [Register the checksum value] **************************************************************************************************************************
changed: [172.17.0.3]
changed: [172.17.0.4]
TASK [Download Tomcat using get_url] ************************************************************************************************************************
changed: [172.17.0.4]
changed: [172.17.0.3]
PLAY RECAP **************************************************************************************************************************************************
172.17.0.3 : ok=5 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.17.0.4 : ok=5 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- 대상 서버인 172.17.0.4에 들어가서 cd /opt/tomcat9 으로 이동하면 아래와 같이 정상적으로 파일이 존재하는것을 확인 할 수 있다.
[root@docker-server tomcat9]# ls -l
total 4
-rw-r--r-- 1 root root 156 May 9 07:40 apache-tomcat-9.0.8.tar.gz.sha512
- 다운로드 받은 작업 및 압축 해제 tomcat 설치 등 여러가지 작업을 ansible을 활용하여 진행 할 수 있다.
- 끝 -
'로컬 환경 구성 > 로컬 개발환경 구성' 카테고리의 다른 글
9. Ansible을 이용한 Docker 이미지 관리 with Jenkins (0) | 2023.05.11 |
---|---|
8. Jenkins과 Ansible 연동 및 Ansible Playbook 사용하기 (0) | 2023.05.10 |
6. Ansible Module (0) | 2023.05.09 |
5. Ansible 구성 (0) | 2023.05.09 |
4. 현재까지의 구성 살펴보기 (0) | 2023.05.09 |