Cloud Engineering/Ansible

[Ansible] 반복문 (loop문) 사용하기

minjiwoo 2023. 3. 2. 17:11
728x90

반복문 (loop)

Playbook 에서 반복되는 작업을 수행하기 위해서 반복문을 사용할 수 있다. 

반복문은 loop 로 표기한다. 주의할 점은 반복문은 작업의 하위 옵션이 아니라, 작업을 어떻게 제어할지에 대한 설정이므로 실행할 모듈과 같은 라인에 써주어야 한다 !

또한 다른 프로그래밍 언어와 다르게, Playbook 에서 loop 문을 사용할 때 list 를 참조하는 변수 명은 항상 item 으로 고정해서 사용한다.

반복문을 이용하여 간단하게 리스트를 출력해보는 플레이북 정의 파일이다. 

- hosts: ansi-node1
  tasks:
  - debug:
      msg: "{{ item }}"
    loop: ["linux", "ubuntu", "window", "mac"]

 다음과 같이 반복문에 사용할 리스트를 변수명으로 지정해줄 수도 있다. 동일한 결과가 출력된다. 

- hosts: ansi-node1
  vars:
    computer_list:
    - linux
    - ubuntu
    - window
    - mac
  tasks:
  - debug:
      msg: "{{ item }}"
    loop: "{{ computer_list }}"

패키지 모듈 

패키지 모듈의 경우 loop 문 을 사용하는 것 대신 list를 바로 매개 변수로 참조하여 쓸 수 있다. loop 문으로도 실행가능하지만, 매개변수로 바로 참조하여 작업을 수행하는 것이 더 효율적이다. 단 모든 모듈에서 지원하는 것이 아니라, yum, apt 같은 패키지 설치를 도와주는 모듈에서 지원하고 있다. 

- hosts: ansi-node3
  vars:
    package_list:
    - apache2
    - firewalld
    - python-mysqldb
    - mysql-server
  tasks:
  - apt:
      name: "{{ package_list }}"
      state: present
      update_cache: yes

 

728x90