Eu uso o Ansible para criar arquivos de configuração no formato ini. Quando utilizo o ini_file
módulo com par de opção e valor ele funciona conforme o esperado, por exemplo:
- name: Create configuration file
ini_file:
path: /tmp/test.conf
state: present
section: lol
option: foo
value: bar
Resultaria com:
[lol]
foo = bar
No entanto, quero que exista uma seção específica sem opções, assim:
- name: Create configuration file
ini_file:
path: /tmp/test.conf
state: present
section: lol
Mas tudo o que faz é relatar ok
a tarefa e passar para a próxima.
Quando uso o modo detalhado, posso ver:ok: [localhost] => {"changed": false, "msg": "OK", "path": "/tmp/test.conf", "state": "absent"}
Como posso usar o módulo para criar seções sem opções?
Responder1
ini é um padrão informal, mas pelo que entendi não faz muito sentido uma seção sem opção. Esse seria meu primeiro palpite sobre por que isso não está implementado no Ansible.
Em vez de usar o ini
-Module, sugiro usar omódulo lineinfilepara garantir que uma seção esteja presente em um arquivo ini.
Responder2
Para construir arquivos de configuração, vá com modelos, é uma maneira adequada. Use ini_file
o módulo apenas para editar arquivos. Tente evitar o módulo lineinfile, use-o como último recurso.
regra 0)Se possível, use o módulo de modelo, pois ele oferece controle e verificação total. Brian Coca (engenheiro de software sênior, Ansible, Red Hat.)
Responder3
A solução alternativa é não permitir nenhum valor, com código em branco/comentado na opção.
- ini_file:
dest: '/tmp/telegraf.conf'
section: '[inputs.interrupts]'
option: ' ## no configuration'
allow_no_value: yes
Mas se já houver valor em sua seção, você deverá removê-lo state: absent
se quiser uma seção sem opções e valor. então adicione. Desculpe, mas também não encontrei uma resposta real.