Reputation: 11
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
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