Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

나이는 지구가 태양을 도는 횟수일 뿐이다.

AWX로 앤서블 사용하기 본문

IT

AWX로 앤서블 사용하기

카락스의 포톤캐논 2023. 1. 30. 19:00

앤서블이 필요하다...

  • 업무중에 건물 정전예정으로 df, fstab 등등 백업해두어야한다고한다.
  • 일단 해야하니까 수동으로 다해버렸다...
  • 후에 조금이라도 편하게하기위해서 앤서블로 처리해보려고 준비하였다.
  • 지난번 AWX를 설치해둔것으로 활용해보려고한다.
  • 물론 앤서블 사용해본적은 없지만 문서를 찾아보고 나름대로의  방식대로 사용했다.
  • 플레이북은 빌트인 모드만 사용해서 공식문서에 예시가 잘되있었다.

시작

  • AWX를 들어가보니 템플릿, 인증정보 , 프로젝트 , 인벤토리, 호스트 등이 있다.
  • 템플릿은 실제 플레이북을 실행하기위한 오브젝트이다.
  • 인증 정보는 각 오브젝트에서 필요한 인증정보를 모아놓은 곳이다. [토큰, 암호 등등]
  • 프로젝트는 소스를 가져올 저장소를 지정하는곳이다.
  • 호스트에는 호스트 주소가 들어가고 호스트를 모아놓은곳이 인벤토리이다.

1. 인증정보 넣기

  • 팀원들과 플레이북을 공유하고 사용하기위해서 깃랩으로 저장소를 정했고 AWX에서 깃랩 저장소를 사용해야하기때문에 개인엑세스 토큰을 발급하고 인증 정보를 생성하였다.

  • 서버에 접속할 유저id와 암호를 추가해주었다. [여러개 있어서 여러개 만들었다... 고통 조금만 참자]

  • 앤서블용 계정만들것이기 때문에 미리 추가해두었다.

2. 프로젝트 생성하기

  • 프로젝트 생성하기를 누르고 소스 제어를 깃으로 선택하고 내용을 채워주었다.
    [ 옵션은 물음표에 마우스를 올리니 설명을 해준다.]

  • 프로젝트를 생성하고 동기화를 해주었다. [ 좌측 작업을 눌러보면 진행중인 사항을 볼수있다.]

3. 호스트 와 인벤토리 추가

  • 이제 노가다의 시작이다. 서버들을 추가해줘야한다.
    하지만 앞서서 유저와 암호가 여러개이기 때문에 인벤토리를 먼저 유저와 암호별로 생성해주었다.[1과 2 는 예시이다]

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