Ansible

AWX 시작해보기 (Inventory, Credentials, Projects, Templates)

황동리 2024. 5. 14. 17:51
반응형

앞서 AWX 설치는 아래 링크에서 확인하실 수 있습니다.

2024.05.13 - [AWS] - AWX 설치 (k8s 환경)

 

AWX 설치 (k8s 환경)

AWX란?Ansible을 기반으로 그래픽 인터페이스를 통해 Ansible 플레이북, 인벤토리 및 작업 일정을 중앙 집중화하고 제어할 수 있으므로 인프라 전체에서 자동화 작업을 더 쉽게 관리하고 모니터링할

ksh-cloud.tistory.com

 


목표

이번에 해볼 목표는 각 호스트들에 hello.txt 파일을 생성해보겠습니다.


1. Inventory 생성

Inventory는 AWX에서 관리하는 호스트들을 선택해서 넣을 수 있습니다.

 

[Add] - [Add inventory] 새로운 inventory를 생성 해줍니다.

 

Name: 원하는 이름
Organization: 생성해둔 것이 없으면 Default

이대로 생성 해줍니다.

그리고 생성한 inventory에서
[Group] - [Add] 클릭하여 새로운 그룹을 생성해줍니다.

 

 

 

생성한 Group을 클릭하고
[Hosts] - [Add] - [Add new host] 클릭하여 스크립트를 실행 해줄 호스트들을 넣어줍니다.

 

Name: 원하는 호스트 이름
Variables: ansible_host: '호스트의 IP'

위와 같은 방법으로 2개를 더 생성 해줍니다.

 

2. Credentials 생성

Credentials은 앞서 생성 해준 Inventory 안의 호스트들에 접근 할 때, Github 레포에 접근할 때 등등 사용됩니다.

 

왼쪽 메뉴판에서
[Credentials] - [Add] 클릭하여 생성 해줍니다.

 

Name: 원하는 이름
Organization: 생성한 조직 or 없으면 default
Credential Type: Machine
=> 서버에 SSH 붙을 정보를 넣어줄 것이 때문에 Type은 Machine으로 넣어줍니다.

 

그리고 아래에는 SSH 키로 접속한다면 pub.key를 넣어주면 됩니다.

 

저는 비밀번호로 접근합니다.

 

같은 방식으로 나머지 호스트들에 대한 Credentials도 생성 해줍니다.

 

그리고 Github에 yaml을 업로드 하여 사용할 예정이기 때문에, Github token으로 사용될 Credentials도 생성 해줍니다.

 

Github Token 생성하는 방법은 아래 URL의 6번 항목에 있습니다

2024.05.03 - [Git] - GitHup Private Repository에 파일 올리기

 

GitHup Private Repository에 파일 올리기

1. Git Private Repository 생성2. 터미널에서 CLI로 파일 추가파일 올리기 위한 순서는 다음과 같습니다.1. 초기화# git init2. 파일 스테이징# git add . or 원하는 파일만 지정3. 스테이징한 파일 커밋# git commi

ksh-cloud.tistory.com

 

Github Token을 가지고 Credentials 생성하는 방법은 위의 방식에서
Credential Type Source Control으로 해주면 됩니다.

 

3. Project 생성

Project는 Playbook과 Playbook 디렉터리를 AWX 서버의 프로젝트 기본 경로 아래에 수동으로 배치하거나 Playbook을 Git, Subversion, Mercurial 등 AWX에서 지원하는 소스 코드 관리(SCM) 시스템에 배치하여 관리할 수 있습니다.

 

Project는 왼쪽 메뉴에서
[Project] - [Add] 버튼을 눌러 생성할 수 있습니다.

 

Name: 원하는 이름
Source Control Credential Type: Git
=> Git 외에도 수동으로 하거나 다른 소스 코드 관리 시스템을 사용해도 됩니다.

4. Templates 생성

Templates은 Project의 Ansible Playbook과 이를 시작하는 데 필요한 설정들 입니다.

먼저 Template를 생성하기 전에 yml 파일을 Github에 업로드 해줍니다.

hello.yml
---
- hosts: Common # Inventory에서 생성한 Groups
  tasks:
  - name: test
    file:
      path: /tmp/helloworld.txt
      state: touch
      owner: root
      group: root
      mode: 0644

 

Github에 파일 업로드

# git init
# git add hello.yml
# git commit -m "first commit"
# git branch -M main
# git remote add origin <Github 레포 주소>
# git push -u origin main

 

이제 Template을 생성 해보겠습니다.

왼쪽 메뉴에서
[Templates] - [Add] - [Add job template] 버튼을 눌러 생성 할 수 있습니다.

 

Name: 원하는 이름
Job Type: Run
=> playbook 실행 (Run, Check 옵션 두개 있다)
Inventory: 위에서 생성한 인벤토리
Project: 위에서 생성한 프로젝트
Playbook: Github 레포에 있는 yml 파일 선택
Credentials: 위에서 생성한 Credentials 선택

맨 아래 Options의 Privilege Escalation은 playbook을 administrator 권한으로 실행 할 수 있게 해주는 옵션 입니다.

 

이제 생성한 Template을 Launch 해주면 됩니다.

 

호스트에서 txt가 생성되었는지 확인 해줍니다.

 

이상입니다.

반응형