使用ansible编写toml部分

mad*_*low 6 ansible

我有一个针对“Gitlab Runners”的 Ansible 设置。这些用作toml配置格式

[[runners]]
  name = "gitlab-runner-1"
  url = "https://example.com"
  token = "x"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
  [runners.docker]
    tls_verify = false
    image = "ubuntu:bionic"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
Run Code Online (Sandbox Code Playgroud)

目前我们使用“ini_file”向其添加自定义配置。例如

- name: set listen_address to activate debug for container
  ini_file:
    section: session_server
    path: /srv/gitlab-runner/config/config.toml
    option: listen_address
    value: '"0.0.0.0:8093"'
Run Code Online (Sandbox Code Playgroud)

我了解这个简单用例的工作原理。

现在我想插入/替换更复杂的东西:

[[runners]]
  [runners.cache]
    Type = "s3"
    [runners.cache.s3]
    ServerAddress = "s3.example.com"
      AccessKey = "access-key"
      SecretKey = "secret-key"
      BucketName = "runner"
      Insecure = false
Run Code Online (Sandbox Code Playgroud)

这可以通过 ini_file 模块实现吗?

我尝试使用https://docs.ansible.com/ansible/latest/collections/ansible/builtin/blockinfile_module.html模块但失败了。这使得它很难理解并且可能很不稳定。或者是否有一种经过验证的方法可以使用“blockinfile”模块来实现此目的?