옵션이 지정되지 않은 경우 Ansible ini_file 모듈이 섹션을 생성하지 않습니다.

옵션이 지정되지 않은 경우 Ansible ini_file 모듈이 섹션을 생성하지 않습니다.

저는 Ansible을 사용하여 ini 형식의 구성 파일을 빌드합니다. 옵션과 값 쌍이 포함된 모듈을 사용하면 ini_file예상대로 작동합니다. 예를 들면 다음과 같습니다.

- name: Create configuration file
  ini_file:
    path: /tmp/test.conf
    state: present
    section: lol
    option: foo
    value: bar

결과는 다음과 같습니다.

[lol]
foo = bar

그러나 다음과 같이 옵션 없이 특정 섹션이 존재하기를 원합니다.

- name: Create configuration file
  ini_file:
    path: /tmp/test.conf
    state: present
    section: lol

하지만 그것이 하는 일은 ok작업에 대해 보고하고 다음 작업으로 넘어가는 것뿐입니다.

상세 모드를 사용하면 다음을 볼 수 있습니다.ok: [localhost] => {"changed": false, "msg": "OK", "path": "/tmp/test.conf", "state": "absent"}

옵션이 없는 섹션을 생성하려면 모듈을 어떻게 사용합니까?

답변1

ini는 비공식 표준이지만 제가 이해한 바로는 옵션이 없는 섹션에는 별 의미가 없습니다. 이것이 Ansible에서 구현되지 않은 이유에 대한 첫 번째 추측입니다.

ini-Module을 사용하는 대신lineinfile 모듈ini 파일에 섹션이 있는지 확인합니다.

답변2

템플릿과 함께 구성 파일을 작성하는 것이 적절한 방법입니다. ini_file파일 편집에만 모듈을 사용하십시오 . lineinfile 모듈을 피하고 최후의 수단으로 사용하십시오.

규칙 0)가능하다면 대신 템플릿 모듈을 사용하세요. 그러면 완전한 제어와 검증이 가능해집니다. Brian Coca(Red Hat, Ansible 수석 소프트웨어 엔지니어)

답변3

해결 방법은 옵션에 공백/주석 처리된 코드를 사용하여 값을 허용하지 않는 것입니다.

- ini_file:
    dest: '/tmp/telegraf.conf'
    section: '[inputs.interrupts]'
    option: '  ## no configuration'
    allow_no_value: yes

state: absent그러나 섹션에 이미 값이 있는 경우 옵션 및 값이 없는 섹션을 원하면 해당 값을 제거해야 합니다 . 그런 다음 추가하십시오. 미안하지만 나도 진짜 답을 찾지 못했어요.

관련 정보