When working with Ansible's apt module, many users encounter this warning:
[WARNING]: The value True (type bool) in a string field was converted to u'True' (type string).
This occurs when passing boolean values directly to parameters that expect string input in the apt module configuration.
The apt module internally treats certain parameters as string fields, while Ansible's YAML parser automatically converts 'yes'/'no' to boolean values. The conversion warning appears when this type mismatch occurs.
Here's how to properly format boolean parameters for the apt module:
- name: Update package cache (correct format)
apt:
update_cache: "yes" # Quoted string
upgrade: "dist" # Another valid string value
For parameters accepting boolean-like values in Ansible:
# Recommended approach:
- apt:
update_cache: "yes" # Always quote string values
autoremove: "no" # Even for negative values
# Problematic format (triggers warning):
- apt:
update_cache: yes # Unquoted becomes boolean
autoremove: no # Same issue here
This pattern applies to several apt module parameters:
- name: Comprehensive apt example
apt:
name: "nginx"
state: "present" # String parameter
install_recommends: "no" # Boolean-like string
autoclean: "yes" # Properly quoted
purge: "no" # Avoids conversion warning
When using variables, ensure proper type handling:
vars:
should_update: "yes" # Define as string
tasks:
- name: Variable example
apt:
update_cache: "{{ should_update }}"
While the conversion warning doesn't break functionality, consistent parameter formatting:
- Prevents unexpected behavior in edge cases
- Makes playbooks more maintainable
- Follows Ansible's best practices
When working with Ansible's apt module, you might encounter this warning:
[WARNING]: The value True (type bool) in a string field was converted to u'True' (type string).
This occurs when Ansible detects a Python boolean value being passed to a parameter that expects a string value. The system automatically converts the boolean to its string representation ('True' or 'False'), but warns you about this implicit conversion.
The apt module's parameters like update_cache
and upgrade
are designed to accept either:
- Standard YAML boolean values (
yes
/no
,true
/false
) - String representations of these values
When you use Python-style booleans (True
/False
), Ansible performs this conversion and issues the warning.
Here are three approaches to resolve this:
1. Use YAML-style boolean values
- name: apt (pre)
apt:
update_cache: yes
upgrade: yes
2. Explicitly quote the values
- name: apt (pre)
apt:
update_cache: "yes"
upgrade: "yes"
3. Use proper boolean values (Python 3 style)
- name: apt (pre)
apt:
update_cache: true
upgrade: true
You can experiment with these variations to see how Ansible handles them:
# Case 1: Python boolean (triggers warning)
- name: Test case 1
apt:
update_cache: True
upgrade: True
# Case 2: YAML boolean (recommended)
- name: Test case 2
apt:
update_cache: yes
upgrade: yes
# Case 3: String literal (no warning)
- name: Test case 3
apt:
update_cache: "yes"
upgrade: "yes"
This warning is generally harmless in the context of the apt module, but there are cases where it matters:
- When strict type checking is required for API compatibility
- When the automatic conversion might affect conditional logic
- When working with custom modules that expect specific types
For most standard Ansible modules like apt, you can safely ignore this warning or use the YAML-style boolean values to suppress it.