feat(ansible): support blockinfile marker bounds
Some checks are pending
CI / test (push) Waiting to run
CI / auto-fix (push) Waiting to run
CI / auto-merge (push) Waiting to run

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Virgil 2026-04-03 15:24:49 +00:00
parent 65917f028c
commit 508248a722

View file

@ -3539,14 +3539,16 @@ func (e *Executor) moduleBlockinfile(ctx context.Context, client sshExecutorClie
block := getStringArg(args, "block", "") block := getStringArg(args, "block", "")
marker := getStringArg(args, "marker", "# {mark} ANSIBLE MANAGED BLOCK") marker := getStringArg(args, "marker", "# {mark} ANSIBLE MANAGED BLOCK")
markerBegin := getStringArg(args, "marker_begin", "BEGIN")
markerEnd := getStringArg(args, "marker_end", "END")
state := getStringArg(args, "state", "present") state := getStringArg(args, "state", "present")
create := getBoolArg(args, "create", false) create := getBoolArg(args, "create", false)
backup := getBoolArg(args, "backup", false) backup := getBoolArg(args, "backup", false)
prependNewline := getBoolArg(args, "prepend_newline", false) prependNewline := getBoolArg(args, "prepend_newline", false)
appendNewline := getBoolArg(args, "append_newline", false) appendNewline := getBoolArg(args, "append_newline", false)
beginMarker := replaceN(marker, "{mark}", "BEGIN", 1) beginMarker := renderBlockinfileMarker(marker, markerBegin)
endMarker := replaceN(marker, "{mark}", "END", 1) endMarker := renderBlockinfileMarker(marker, markerEnd)
var backupPath string var backupPath string
if backup { if backup {
@ -3611,6 +3613,16 @@ BLOCK_EOF
return result, nil return result, nil
} }
func renderBlockinfileMarker(marker, mark string) string {
if marker == "" {
marker = "# {mark} ANSIBLE MANAGED BLOCK"
}
if mark == "" {
mark = "BEGIN"
}
return replaceN(marker, "{mark}", mark, 1)
}
func (e *Executor) moduleIncludeVars(args map[string]any) (*TaskResult, error) { func (e *Executor) moduleIncludeVars(args map[string]any) (*TaskResult, error) {
file := getStringArg(args, "file", "") file := getStringArg(args, "file", "")
if file == "" { if file == "" {