나이는 지구가 태양을 도는 횟수일 뿐이다.
AWX로 앤서블 사용하기 본문
앤서블이 필요하다...
- 업무중에 건물 정전예정으로 df, fstab 등등 백업해두어야한다고한다.
- 일단 해야하니까 수동으로 다해버렸다...
- 후에 조금이라도 편하게하기위해서 앤서블로 처리해보려고 준비하였다.
- 지난번 AWX를 설치해둔것으로 활용해보려고한다.
- 물론 앤서블 사용해본적은 없지만 문서를 찾아보고 나름대로의 방식대로 사용했다.
- 플레이북은 빌트인 모드만 사용해서 공식문서에 예시가 잘되있었다.
시작
- AWX를 들어가보니 템플릿, 인증정보 , 프로젝트 , 인벤토리, 호스트 등이 있다.
- 템플릿은 실제 플레이북을 실행하기위한 오브젝트이다.
- 인증 정보는 각 오브젝트에서 필요한 인증정보를 모아놓은 곳이다. [토큰, 암호 등등]
- 프로젝트는 소스를 가져올 저장소를 지정하는곳이다.
- 호스트에는 호스트 주소가 들어가고 호스트를 모아놓은곳이 인벤토리이다.
1. 인증정보 넣기
- 팀원들과 플레이북을 공유하고 사용하기위해서 깃랩으로 저장소를 정했고 AWX에서 깃랩 저장소를 사용해야하기때문에 개인엑세스 토큰을 발급하고 인증 정보를 생성하였다.
- 서버에 접속할 유저id와 암호를 추가해주었다. [여러개 있어서 여러개 만들었다... 고통 조금만 참자]
- 앤서블용 계정만들것이기 때문에 미리 추가해두었다.
2. 프로젝트 생성하기
- 프로젝트 생성하기를 누르고 소스 제어를 깃으로 선택하고 내용을 채워주었다.
[ 옵션은 물음표에 마우스를 올리니 설명을 해준다.]
- 프로젝트를 생성하고 동기화를 해주었다. [ 좌측 작업을 눌러보면 진행중인 사항을 볼수있다.]
3. 호스트 와 인벤토리 추가
- 이제 노가다의 시작이다. 서버들을 추가해줘야한다.
하지만 앞서서 유저와 암호가 여러개이기 때문에 인벤토리를 먼저 유저와 암호별로 생성해주었다.[1과 2 는 예시이다]
- 인벤토리를 만들었으니 이제 호스트를 생성하여 인벤토리에 넣어버리자!
- 호스트탭에서 추가를 누르고 변수에 ip를 적어주고 암호기반으로 만든 인벤토리를 선택해버렸다.
---
ansible_host: my.ip.addr.0
- 그룹으로 인벤토리를 나누었는데.. 한번에 처리할 인벤토리가 없었다..
이후에 인벤토리를 더추가하려했지만 호스트에서 변경이 불가능해서 찾아보던와중에 스마트 인벤토리가 눈에들어왔다. - 스마트 인벤토리를 생성하고 필터에서 활성화 됨으로 변경해서 모든 호스트 인벤토리를 만들어버렸다.
[활성화됨으로 필터링을 누르면 true와 false를 선택할수있다.]
- 이제 템플릿에서 사용할 플레이북들을 만들고 깃으로 푸시하자.
---adduser.yaml---
- hosts: all
tasks:
- name: add ansible user
ansible.builtin.user:
name: ansible
comment: ansible
expires: -1
shell: /bin/bash
password: "{{ 'mypasswd' | password_hash('sha512') }}"
state: present
- name: edit sudoers for ansible user
community.general.sudoers:
name: ansible
state: present
user: ansible
nopassword: true
commands: ALL
---
---getcfg.yaml---
- hosts: all
tasks:
- name: disk print
shell: df -Th
register: disk
- name: fstab
shell: cat /etc/fstab
register: mount
- name: Print Facts
debug:
msg:
- ===========================================================================================
- Default Hostname is {{ ansible_hostname }}
- Default IPV4 of {{ ansible_fqdn }} is {{ ansible_default_ipv4.address }}
- disk print ---------------------------------------------------
- "{{ disk.stdout_lines }}"
- fstab print --------------------------------------------------
- "{{ mount.stdout_lines }}"
- ===========================================================================================
---
- 깃의 내용이 변경되었으니 AWX에서 프로젝트를 동기화 해주자!
- AWX 좌측 템플릿탭에서 플레이북을 사용해보자! 이름을 기입하고 프로젝트와 플레이북을 선택하면된다.
상세정보는 -vvv 같은거라고한다. [시작시 프롬프트를 선택하면 작업을 시작할때 원하는 아이템을 선택할수있다.]
- 시작시 프롬프트를 사용했으니 유저와 암호가 쪼개진 두개의 인벤토리에 앤서블유저를 만들어주자.
- 예시는 1개의 서버로 진행했다.[템플릿에서 제한 옵션을 사용하면된다]
- 이제 df ,fstab 등을 가져오는 플레이북을 앤서블유저로 실행시키는 템플릿을 만들어야겠다.
- 실행 시키고 결과를 받아보자. [빨간색을 누르면 결과를 텍스트 문서로 받을수있다.] 예시는 1개의서버이다.
- 결과 받아서 나중에 diff 돌리면 될것같다.
- 후기 : 앤서블 깃옵스 같다.
끝
'IT' 카테고리의 다른 글
[Helm]Subchart에 오픈소스 chart 추가하기 (0) | 2023.03.22 |
---|---|
GKE에서 ECR 이미지 사용하기 (0) | 2023.02.16 |
K8s 모니터링 하기 [prometheus,grafana] (0) | 2023.01.16 |
ArgoCD 설치 (4) | 2023.01.16 |
AWX 설치하기 (0) | 2022.12.14 |