본문 바로가기
공부/Ansible

25 04 13 공부

by 앙팡공기팡 2025. 4. 15.

 

 

[ 1. Jinja2 Template 활용법 기본]

 

  {1. 기본적 filter 활용}

 

 

# default 

imsi: "{{ imsi | default([]}}"


# length   alist = [ a,b,c]

imsi: "{{ alist | length }}"


# map, select  amap = { "key": value}

imsi: "{{ amap | map(attribute = 'key') | list}}"

 

 

  { 2. if, for 문}

 

 

# if 문


- name: debug
  debug:
    msg: >-
      {% if a >= 90 %}
        A
      {% elif a >= 80 %}
        B
      {% else %}
        C
      {% endif %}

 

  {3. 복잡한 기본 변수  hostvars, groups, inventory_hostname }

 

 

# ex

- name: debug
  debug:
    msg: >-
      {% for ii in hostvars.keys() %}
  		{{ii}}
      {% endfor % }
      

# groups와 hostvars 차이:

  groups: 인벤토리 내에 있는 모든 그룹이 key값 그리고 value는 hostname
  hostvars: 인벤토리 내의 모든 host의 기본적인 vars값 fact 변수

 

 

[2. handler와 when 조건문]

 

  hander: notify에 handler의 name을 적으면 task가 changed 시 handler가 실행되는 형식. 

  listen: 중복 방지를 위해 notify에 handler의 listen을 적으면 여러개 중 하나의 notify에서 trigger 시 딱 한번 실행되는 구조

            ( handler를 묶을 때,  이름을 재사용할 때 유용) 

  when: ansible의 기본적인 조건문, 기본적으로 jinja2 문법을 따라가며, is defined, ==,  in 등의 boolean 구조와

  필터를 활용한 when: inventory_hostname | length >= 10  이런식으로도 활용 가능 

 

[3. Loop문과 다중 Loop, loop control ]

 

  loop:  list 형태로 된 자료구조를 item이라는 변수를 통해서 task를 여러번 진행하는 형태

  loop_control:  loop를 더욱 세밀하게 다루는 구조, 

      - label: loop의 item을 debug할 때 쓰는 parameter

      - index_var:  loop가 돌때, 리스트의 index를 표현하는 구조.

  dict2items : dictionary를  [{"key": [] , "value" :[]}] 형태의 dictionary 형태의 변수값으로 변형

      "{{  imsi_dict | dict2items  }}"

  combine: 두 dictionary를 하나의 dictionary로 합쳐 반환하는 형태, 중복 시 뒤의 dict가 우선시 됨

  with_nested: 이중 루프 구조 이중 리스트 를 값으로 받으며,  item[0], item[1] 형태로 값을 받음

 

[4. copy와 template 모듈 과 그 외]

 

1. copy 모듈:  local에서 원격으로 정적파일을 전송할때 쓰이는 모듈 반대는 fetch

2. template 모듈: local에서 원격으로  동적파일을 전송할때 쓰이는 모듈

  파라미터 

  -  src: local의 경로 (template의 경우에는 j2 확장자 필 기입)

  -  dest: host의 경로

  -  owner: 주인

  -  group:  그룹

  -  mode: '777' 등  실행 읽기 수정 권한 등 부여

3. check_mode:  template 등 수정이 되는 파일일 시 변경 전 변경되는지 사전 파악 모드

4. changed_when :  when: nginx_config is changed 등으로 수동적으로 결과로 변경했는지 확인 가능

5. validate:  복사 전 파일 문법 검사 기능

6. lineinfile, blockinfile:  regex, mode에 따라 이미 있는 파일의 문장을 생성하거나 수정 또는, 파일이 없다면  새로 생성기능

 

 

'공부 > Ansible' 카테고리의 다른 글

25 04 17 공부  (0) 2025.04.17
25 04 10 ansible 학습  (0) 2025.04.10
5. Ansible의 playbook 형식  (0) 2025.03.31
4. Ansible의 기본 명령어  (0) 2025.03.28
3. 에이전트리스 방식이란?  (0) 2025.03.27