Inwoo
Inwoo

Reputation: 11

How can i change YAML format to INI format?

I want to change from YAML format to INI format like this

How can I change?

    tomcat_users:
      - username: "admin"
        password: "admin"
        roles: "tomcat,admin,manager,manager-gui"

I try like this

[example]
127.0.0.1

[example:vars]
tomcat_user="{'username':'admin', 'password':'admin', 'roles':'tomcat, admin, manager, manager-gui'}"

Upvotes: 1

Views: 775

Answers (1)

Vladimir Botka
Vladimir Botka

Reputation: 68024

See Templating. For example, create the template

shell> cat tomcat_users.ini.j2
[example]
127.0.0.1

[example:vars]
{% for user in tomcat_users %}
tomcat_user='{{ user|to_json }}'
{% endfor %}

and the task

    - template:
        src: tomcat_users.ini.j2
        dest: /tmp/tomcat_users.ini

will create the file

shell> cat /tmp/tomcat_users.ini 
[example]
127.0.0.1

[example:vars]
tomcat_user='{"username": "admin", "password": "admin", "roles": "tomcat,admin,manager,manager-gui"}'

Example of a complete playbook for testing

shell> cat pb.yml
- hosts: localhost

  vars:

    tomcat_users:
      - username: "admin"
        password: "admin"
        roles: "tomcat,admin,manager,manager-gui"

  tasks:

    - template:
        src: tomcat_users.ini.j2
        dest: /tmp/tomcat_users.ini

The created file is a valid Ansible inventory file

shell> ansible-inventory -i /tmp/tomcat_users.ini --list --yaml
all:
  children:
    example:
      hosts:
        127.0.0.1:
          tomcat_user: '{"username": "admin", "password": "admin", "roles": "tomcat,admin,manager,manager-gui"}'
    ungrouped: {}

The playbook below

shell> cat pb2.yml
- hosts: example
  gather_facts: false
  tasks:
    - debug:
        var: tomcat_user

gives

shell> ansible-playbook -i /tmp/tomcat_users.ini pb2.yml 

PLAY [example] *******************************************************************************

TASK [debug] *********************************************************************************
ok: [127.0.0.1] => 
  tomcat_user:
    password: admin
    roles: tomcat,admin,manager,manager-gui
    username: admin

PLAY RECAP ***********************************************************************************
127.0.0.1: ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Upvotes: 1

Related Questions