루프 변수를 Ansible 역할에 전달

루프 변수를 Ansible 역할에 전달

값 목록을 /vars/main.yml 파일에 전달하여 이러한 변수를 처리 작업에 전달할 수 있는 방법이 있습니까?

여기서 목적은 작업을 N 번 실행하는 대신 한 번 실행하는 것입니다.

내 현재/vars/main.yml

---
srv:
   httpd
   nginx

TASK [app : Install the httpd nginx server package] ************ yum 모듈이 좋아하지 않는 것으로 해결됩니다 .

---
    - name: Install the {{ srv }} server package
      yum:
        name: "{{ srv }}"
        state: present
    - name: Check for the installed package
      yum:
        list: "{{ srv }}"
      register: yumout
    - debug:
       var: yumout

답변1

스크립트는 다음과 같습니다. 아직 코드를 테스트해본 적은 없고 즉흥적으로 만든 것뿐입니다...

---
- hosts: all
  tasks:
  - name: Install the {{ srv }} server package
    yum:
      name: "{{ item }}"
      state: present
    loop: "{{ srv }"
  - name: Check for the installed package
    yum:
      list: "{{ srv }}"
    loop: "{{ srv }"
    register: yumout
  - debug:
    msg: yumout

답변2

이 예를 봐yum 모듈에 대한 문서:

- name: ensure a list of packages installed
  yum:
    name: "{{ packages }}"
  vars:
    packages:
    - httpd
    - httpd-tools

목록을 변경하면 됩니다 /vars/main.yml.

---
srv:
  - httpd
  - nginx

관련 정보