[Bug]: ini_manage writes to the .ini file even if there is no changes to make.

オープン
#70,762 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 3 日以内に返信

@piterpunk がすでに取り組んでいます。

2026年11月9日 から。

  • #70763 @piterpunk による — オープン

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
45/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
python

調査の方向性

The bug is in the ini state module's set_option and remove_option paths, which write the .ini file even when no change is needed. Start by finding the ini execution and state module in the salt source and checking where the file is rewritten without comparing against the current contents. Done means ini.options_present on an already-correct file reports no changes and leaves the file untouched, with a test that repeats the reproduction above.

索引モデルが issue の本文から書いたものです。

説明

bug needs-triage
What happened?

When called, ini.set_option and ini.remove_option always writes to the .ini file, even without anything to do. That makes the state ini.options_present and ini.options_absent to be a possible destructible operation without a state change.

This can be reproductible with this simple state:

file_manage_/tmp/test.ini:
  file.managed:
    - name: /tmp/test.ini
    - contents: |
        [Section A]
        option = something
        
        [Section B]
        option = now
        option = this
        option = is
        option = duplicated

ini_manage_/tmp/test.ini:
  ini.options_present:
    - name: /tmp/test.ini
    - sections:
        Section A: 
          option: something

cat_/tmp/test.ini:
  cmd.run:
    - name: cat /tmp/test.ini

The first step creates a file, the second one ensures that option: something is set inside Section A. As option is already something in `Section A, nothing should be done and the third step should show the same file created at first step. But that is not the result:

local:
----------
          ID: file_manage_/tmp/test.ini
    Function: file.managed
        Name: /tmp/test.ini
      Result: True
     Comment: File /tmp/test.ini updated
     Started: 11:34:54.946503
    Duration: 9.895 ms
     Changes:
              ----------
              diff:
                  New file
----------
          ID: ini_manage_/tmp/test.ini
    Function: ini.options_present
        Name: /tmp/test.ini
      Result: True
     Comment: No anomaly detected
     Started: 11:34:54.960495
    Duration: 2.254 ms
     Changes:
----------
          ID: cat_/tmp/test.ini
    Function: cmd.run
        Name: cat /tmp/test.ini
      Result: True
     Comment: Command "cat /tmp/test.ini" run
     Started: 11:34:54.963978
    Duration: 4.899 ms
     Changes:
              ----------
              pid:
                  3533639
              retcode:
                  0
              stderr:
              stdout:
                  [Section A]
                  option = something

                  [Section B]
                  option = duplicated

Summary for local
------------
Succeeded: 3 (changed=2)
Failed:    0

As you can see, even without any change being registered at second step, the .ini file was changed.

Type of salt install

Official rpm

Major version

3008.x, 3006.x, 3007.x

What supported OS are you seeing the problem on? Can select multiple. (If bug appears on an unsupported OS, please open a GitHub Discussion instead)

oraclelinux-8

salt --versions-report output
Salt Version:
           Salt: 3006.23

Python Version:
         Python: 3.10.19 (main, Feb 17 2026, 23:32:03) [GCC 11.2.0]

Dependency Versions:
           cffi: 2.0.0
       cherrypy: 18.10.0
   cryptography: 46.0.5
       dateutil: 2.8.1
      docker-py: Not Installed
          gitdb: Not Installed
      gitpython: Not Installed
         Jinja2: 3.1.6
        libgit2: Not Installed
   looseversion: 1.0.2
       M2Crypto: Not Installed
           Mako: Not Installed
        msgpack: 1.0.2
   msgpack-pure: Not Installed
   mysql-python: Not Installed
      packaging: 24.0
      pycparser: 2.21
       pycrypto: Not Installed
   pycryptodome: 3.19.1
         pygit2: Not Installed
   python-gnupg: 0.4.8
         PyYAML: 6.0.1
          PyZMQ: 23.2.0
         relenv: 0.22.4
          smmap: Not Installed
        timelib: 0.3.0
        Tornado: 4.5.3
            ZMQ: 4.3.4

Salt Extensions:
 salt-healthone: 1.30.6
       salt-hip: 1.3.1
  salt-services: 1.0.4

System Versions:
           dist: oracle 8.10
         locale: utf-8
        machine: x86_64
        release: 5.4.17-2136.344.4.1.el8uek.x86_64
         system: Linux
        version: Oracle Linux Server 8.10
主要言語
Python
スター
15.8k
フォーク
5.6k
平均マージ
5日 9時間
マージ済み PR(30日)
99

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

saltstack/salt のほかの issue

saltstack/salt の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。