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