구성 파일의 멱등적 편집

구성 파일의 멱등적 편집

예를 들어 구성 파일을 편집할 때 /etc/sysctl.conf멱등적 방식으로 업데이트하는 것이 유용한 경우가 많습니다. 즉, 스크립트를 여러 번 실행하면 구성 변경 사항에 대한 항목이 여러 개 표시되지 않습니다.

실제로 이런 상황이 발생했을 때 ansible다단계 플레이북에서 위 파일을 편집해야 했습니다. 하지만 문제는 나중에 실패하면 플레이북을 다시 실행해야 한다는 것입니다. 즉, 업데이트 명령이 여러 번 실행될 수 있으며 업데이트가 멱등성이 아닌 경우 중복이 발생할 수 있습니다.

그렇다면 문제는 이러한 구성 파일을 멱등적인 방식으로 업데이트하는 방법입니다.

한 가지 예아니요-중요한 업데이트는 다음과 같습니다.

echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf

또는 앤서블에서:

  - name: Set swappiness setting
    shell: echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf

이상적으로는 변수 값이 원래 설정된 경우 새 값으로 바꿔야 합니다.

답변1

쉘 명령을 실행하는 대신 다음을 사용하십시오.sysctl기준 치수.

가능하다면 사용을 피하세요 shell.

- ansible.posix.sysctl:
    name: vm.swappiness
    value: '10'
    state: present

답변2

방금 또 다른 답을 찾았습니다.https://stackoverflow.com/a/31632883/376258, 방향http://augeas.net/귀하의 질문으로 호기심 많은 Google 검색을 촉발해 주셔서 감사합니다. 우분투 20.04에서 작동시키는 방법은 다음과 같습니다.

sudo apt install libaugeas-dev
virtualenv -p /usr/bin/python3.10 venv; . venv/bin/activate.fish
pip install git+https://github.com/hercules-team/python-augeas
sudo venv/bin/python3 -c """
import augeas
aug = augeas.Augeas()
aug.set('/files/etc/sysctl.conf/fs.inotify.max_inotify_watches', '44194306')
aug.set('/files/etc/sysctl.conf/fs.inotify.max_user_watches', '44194306')
aug.save()
"""

그리고 다음을 확인하세요:

cat /etc/sysctl.conf | grep inotify

관련 정보