Ansible role?
Ansible role은 개발로 치면 일종의 FrameWork이라고도 볼 수 있겠다.
관리해야 할 서버가 많아지고, 해야 할 작업들이 많이지게 되면 playbook들도 많아 지게 될거고, 유지보수가 쉬우려고 사용한 Ansible을 유지보수 하느라 시간낭비를 할 수 도 있게 되는 상황이 올텐데
디렉토리 구조를 지정해 줌으로 써 이러한 상황들을 방지하는 역할이다.
https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse_roles.html
Roles — Ansible Documentation
The classic (original) way to use roles is with the roles option for a given play: When you use the roles option at the play level, Ansible treats the roles as static imports and processes them during playbook parsing. Ansible executes each play in this or
docs.ansible.com
이를 효과적으로 이용하기 위하여 ansible-galaxy를 이용한다.
https://galaxy.ansible.com/docs/
Galaxy Documentation — Ansible Documentation
<!-- Banner ads <a class="DocSiteBanner-imgWrapper" href="https://www.ansible.com/docs-top?utm_source=docs"> <a class="DocSiteBanner-imgWrapper" href="https://www.ansible.com/docs-top?utm_source=docs"> --> Last updated on Mar 27, 2023. Copyright © 2018 Re
galaxy.ansible.com
저번에 설치한 방식으로 ansible을 설치했다면, /etc/ansible/roles 가 이미 존재하고
없다면 roles를 만들어 주자.
Roles생성 및 구조 설명
/ect/ansible/roles로 이동했다면, 기본적인 role을 생성해 보자.
ansible-galaxy init [role-name]
성공적으로 생성 되었으면 아래와 같은 문구가 뜬다.
Permission 관련 오류가 나오면 sudo를 사용해보자.
- Role [role-name] created successfully
role-name 은 arkinfo-deploy라고 명칭했다.
생성된 role의 구조를 확인해보면 다음과 같다.
.
├── README.md
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
구성 요소
https://gruuuuu.github.io/ansible/ansible-role/
[Ansible] Roles
Overview 이번 포스팅에서는 Ansible의 Roles에 대해서 알아보겠습니다. Roles? 예를들어서 프로젝트를 진행한다고 했을 때 마구잡이로 프로그래밍을 하게되면 유지보수하기도, 미래에 재사용하기도
gruuuuu.github.io
위 링크를 참조해보자..
간략하게 당장 필요한 것들만 설명하면
defaults - 각 task 에서 사용할 기본 값을 설정
files - 정적 파일을 두는 곳. (nginx 설정 값 이라던가, laravel의 경우에는 env값이 변경 된다던가 한다면 이곳에 두고 한번만 수정하여서 배포시 한번에 처리 되게끔 하는 방식이 있을 것 이다.)
vars - role에서 사용할 변수들 지정 목록 (동적 변수를 지정하고, 정적 변수는 defaults 에 지정한다)
추가적인 자세한 설명은 첫 번째 링크인 공식문서를 확인하는 편이 좋을 것 같다.
일단은 Role를 구성해 두기만 하고 다음에는 playbook을 설정하여 git 자동배포를 진행해보자.
'DevOps' 카테고리의 다른 글
TypeScript에 jest를 적용해보자 (0) | 2023.05.08 |
---|---|
[Ansible] Ansible + git Action + EC2 자동배포 + IAM 보안 설정 (0) | 2023.04.27 |
[gitAction] Ansible + gitAction을 이용한 EC2 자동배포 (0) | 2023.04.26 |
[Ansible] Ansible role을 이용한 github 배포 (0) | 2023.04.26 |
[Ansible] Ansible install + EC2 ping test (0) | 2023.04.25 |