Introdução

Introdução

Introdução

Até agora criamos um bloco no /etc/sudoersarquivo 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.runmó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.

informação relacionada