Ansible runner란

Sbae·2024년 6월 24일
0
post-thumbnail

현재 kubernetes 자동화 설치 툴을 개발 중입니다.

시작 전

최근 자동화 설치 툴을 지속해서 유지보수하고 새로운 기능들을 개발하면서
진작에 느끼고 있던 스파게티 코드 Refactoring을 하자는 계획이 세워졌다.

미룬다

공통화를 문서로 정의하고 코드의 양을 최대한으로 줄이고 task를 불러오는 식으로 Refactoring 계획 수립 후
이를 해결할 방법을 찾는 도중에 Ansible runner라는 툴을 발견했다.

늘 그렇듯이 왠지 모를 자신감만 생기지

자신감

Ansible runner란

자 그래서 Ansible runner란 무엇이냐

공식문서에 의하면
Ansible Runner는 Ansible과 직접 또는 다른 시스템의 일부로 인터페이스할 때 도움이 되는 도구 및 파이썬 라이브러리입니다.
뭐 암튼 개쩌는 도움이 된다는건가?

  • 당장 생각나는 것
    • 작업 환경의 관리
    • 로그를 보기가 쉬움
    • Rest API 등과 같은 다른 시스템과의 통합

디렉토리 구조

.
├── env
│   ├── envvars
│   ├── extravars
│   ├── passwords
│   ├── cmdline
│   ├── settings
│   └── ssh_key
├── inventory
│   └── hosts
└── project
    ├── test.yml
    └── roles
        └── testrole
            ├── defaults
            ├── handlers
            ├── meta
            ├── README.md
            ├── tasks
            ├── tests
            └── vars

Ansible runner는 위의 기본적인 디렉토리 구조를 가지는데 하나씩 알아보도록하자

env/envvars

  • json, yaml과 같은 형식 사용가능
  • Ansible이 실행되는 동안 환경 전체에 영향을 미치는 변수들을 정의

env/extravars

  • json, yaml과 같은 형식 사용가능
  • Ansible playbook에서 사용할 추가 변수를 정의합니다.
    • ex) data_dir="/data", isolated=true

env/passwords

  • Ansible playbook 실행 시 사용할 비밀번호를 정의합니다.

  • ssh 접속 암호, become user 암호 같은 것

    ---
    "^SSH password:\\s*?$": "some_password"
    "^BECOME password.*:\\s*?$": "become_password"

env/cmdline

  • 문자열로 제공되는 명령줄 옵션을 수집하여 Ansible Process 자체에 제공합니다.
  • Ansibel runner에서 제공한 것보다 우선 순위가 낮음
  • ex) --tags one,two --skip-tags three -u ansible --become

env/settings

  • 설정파일은 Ansible runner의 실행 자체에 관여하는 파일입니다.

env/ssh_key

  • Ansible이 SSH를 통해 원격 서버에 접속할 때 사용할 SSH 개인 키를 저장합니다
  • 멀티 ssh key를 사용할 수 있도록 변경 예정

inventory, project

  • 기존 Ansible과 동일

정말 스파게티 코드는.. 참...ㅋㅋ;;;

profile
끄적이는 일반인

0개의 댓글