Introdução
Até agora criamos um bloco no /etc/sudoers
arquivo com N entradas.
Esta não é uma boa solução, pois às vezes queremos apenas atualizar um sistema e fornecer dados explícitos sobre os pilares. Então pillar.systems
é uma lista com apenas uma entrada.
Código Antigo
etc_sudoers:
file.blockreplace:
- name: /etc/sudoers
- marker_start: "# START managed zone etc_sudoers -DO-NOT-EDIT-"
- marker_end: "# END managed zone etc_sudoers --"
- content: |
{% for system_name in pillar.systems %}
{{system_name}} ALL = NOPASSWD: /bin/systemctl restart apache2*
{% endfor %}
- append_if_not_found: True
- backup: '.bak'
- show_changes: True
Novo Código
{% for system_name in pillar.systems %}
etc_sudoers_{{system_name}}:
file.blockreplace:
- name: /etc/sudoers
- marker_start: "# START managed zone etc_sudoers_{{system_name}} -DO-NOT-EDIT-"
- marker_end: "# END managed zone etc_sudoers_{{system_name}} --"
- content: |
{{system_name}} ALL = NOPASSWD: /bin/systemctl restart apache2*
- append_if_not_found: True
- backup: '.bak'
- show_changes: True
{% endfor %}
Pergunta
Como deletar o bloco antigo que ainda está nos servidores?
Responder1
Eu resolveria isso configurando um estado como este:
etc_sudoers:
file.blockreplace:
- name: /etc/sudoers
- marker_start: "# START managed zone etc_sudoers -DO-NOT-EDIT-"
- marker_end: "# END managed zone etc_sudoers --"
- content: '#'
- append_if_not_found: False
- backup: '.bak'
- show_changes: True
Depois eu removeria as três linhas de comentários usando o cmd.run
módulo junto com, por exemplosed.
Você pode querer usar a abordagem sed diretamente, o que torna o estado temporário desnecessário - mas isso depende de suas necessidades - se você remover o estilo antigo de uma vez em todos os lugares, a segunda abordagem poderá ser mais fácil. Se você migrar caixas uma após a outra durante meses, a definição do estado será mais clara.