Ao editar arquivos de configuração, como /etc/sysctl.conf
por exemplo, muitas vezes é útil fazer a atualização de forma idempotente, o que significa que se o script for executado várias vezes, você não terá várias entradas para a alteração de configuração feita.
Como uma instância do mundo real onde encontrei isso, preciso editar o arquivo acima no ansible
manual de vários estágios. Mas o problema é que se o estágio posterior falhar, o manual precisará ser executado novamente, o que significa que o comando de atualização poderá ser executado várias vezes, causando duplicação se a atualização não for idempotente.
Então a questão é como você pode atualizar esses arquivos de configuração de forma idempotente?
Um exemplo de atualização não idempotente seria:
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
ou em ansible:
- name: Set swappiness setting
shell: echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
Idealmente, se o valor da variável for inicialmente definido, ele deverá ser substituído por um novo valor.
Em vez de executar comandos shell, use o
sysctl
module .Se possível, evite usar
shell
.Acabei de encontrar outra resposta SO, https://stackoverflow.com/a/31632883/376258 , apontando para http://augeas.net/ graças a uma pesquisa curiosa no Google solicitada por sua pergunta. Veja como fiz funcionar no Ubuntu 20.04:
e verifique: