Ssoon

[ Part-2 ] 앤서블 기본 사용법 - 변수 본문

Ansible 101 Study

[ Part-2 ] 앤서블 기본 사용법 - 변수

구구달스 2024. 1. 8. 00:34
CloudNet@ 가시다님이 진행하는 Ansible 101 Study
"앤서블로 시작하는 인프라 자동화" (한빛미디어) 로 진행

변수의 종류와 사용법

  • 시스템 작업 시 사용되는 다양한 값을 변수를 사용하여 저장 ▶ 플레이북 재사용

💠 그룹 변수

  • 인벤토리에 정의된 호스트 그룹에 적용하는 변수
  • 인벤토리에 선언
  • 선언하고자 하는 그룹명과 함께 :vard 문자열을 추가

  • all 이라는 그룹에서 user라는 변수 사용
[all:vars]
user=ansible
  • create-user.yml 생성
    • 시스템 사용자 생성 ▶ ansible.builtin.user 모듈 사용
---
- hosts: all
  tasks:
  - name: create user {{ user }}
    ansible.builtin.user:
      name: "{{ user }}"
      state: present
  • tnode1-centos 에 접속 ▶  /home 디렉터리 아래에 ansible 생성 확인

💠 호스트 변수

  • 변수를 해당 호스트에서만 사용

  • db그룹에 user=ansible1 변수 선언
[db]
tnode3-rocky.exp.com user=ansible1
  • cp create-user.yml create-user1.yml  hosts: db로 수정
---
- hosts: db
  tasks:
  - name: create user {{ user }}
    ansible.builtin.user:
      name: "{{ user }}"
      state: present
  • ansible-playbook 실행

  • tnode3-rocky 접속 ▶  /home 디렉터리 아래에 ansible1 생성 확인

💠 플레이 변수

  • 풀레이북 내에서 선언되는 변수

  • cp create-user1.yml create-user3.yml  ▶ hosts 아래에 var 추가
---
- hosts: db
  vars:
    user: ansible2

  tasks:
  - name: create user {{ user }}
    ansible.builtin.user:
      name: "{{ user }}"
      state: present
  • ansible-playbook 실행

  • tnode3-rocky 접속 ▶  /home 디렉터리 아래에 ansible2 생성 확인

  • 플레이 변수를 별도의 파일로 분리
users: ansible4

  • cp create-user3.yml create-user4.yml 
- hosts: all
  vars_files:
    - vars/users.yml

  tasks:
  - name: create user {{ user }}
    ansible.builtin.user:
      name: "{{ user }}"
      state: present
  • ansible-playbook 실행

💠 추가 변수

  • 외부에서 ansible-playbook 실행 할 때 함께 파라미터로 넘겨주는 변수

💠 작업 변수

  • 플레이북의 태스크 수행 결좌를 저장
  • 특정 작업 수행 후 그 결과를 후속 작업에서 사용

  • cp create-user1.yml create-user6.yml 
  • register 선언 ▶ 태스크에서 실행한 결과를 register 다음에 나오는 result 변수에 저장
- hosts: db
  tasks:
  - name: create user {{ user }}
    ansible.builtin.user:
      name: "{{ user }}"
      state: present
    register: result

  - ansible.builtin.debug:
      var: result
  • result 변수에 저장한 결과를 debig 모듈로 출력

Comments