@ -57,37 +57,47 @@ def shell_expand(path, expand_relative_paths=False):
path = os . path . abspath ( path )
return path
def get_config ( p , section , key , env_var , default , boolean= False , integer = False , floating = False , islist = False , isnone = False , ispath = False , ispathlist = False , istmppath = Fals e, expand_relative_paths = False ) :
def get_config ( p , section , key , env_var , default , value_type= Non e, expand_relative_paths = False ) :
''' return a configuration variable with casting '''
value = _get_config ( p , section , key , env_var , default )
if boolean:
if value_type == ' boolean' :
value = mk_boolean ( value )
if value :
if integer :
elif value :
if value_type == ' integer ' :
value = int ( value )
elif floating :
elif value_type == ' float ' :
value = float ( value )
elif islist :
elif value_type == ' list ' :
if isinstance ( value , string_types ) :
value = [ x . strip ( ) for x in value . split ( ' , ' ) ]
elif isnone :
elif value_type == ' none ' :
if value == " None " :
value = None
elif ispath :
elif value_type == ' path ' :
value = shell_expand ( value )
elif istmppath :
elif value_type == ' tmppath ' :
value = shell_expand ( value )
if not os . path . exists ( value ) :
makedirs_safe ( value , 0o700 )
prefix = ' ansible-local- %s ' % os . getpid ( )
value = tempfile . mkdtemp ( prefix = prefix , dir = value )
elif ispathlist :
elif value_type == ' pathlist ' :
if isinstance ( value , string_types ) :
value = [ shell_expand ( x , expand_relative_paths = expand_relative_paths ) \
for x in value . split ( os . pathsep ) ]
elif isinstance ( value , string_types ) :
value = unquote ( value )
return value
return to_text ( value , errors = ' surrogate_or_strict ' , nonstring = ' passthru ' )
def _get_config ( p , section , key , env_var , default ) :
''' helper function for get_config '''
@ -104,6 +114,7 @@ def _get_config(p, section, key, env_var, default):
return default
return default
def load_config_file ( ) :
''' Load Config File order(first found is used): ENV, CWD, HOME, /etc/ansible '''
@ -130,6 +141,7 @@ def load_config_file():
return p , path
return None , ' '
p , CONFIG_FILE = load_config_file ( )
# check all of these extensions when looking for yaml files for things like
@ -148,92 +160,92 @@ DEFAULTS='defaults'
# FIXME: add deprecation warning when these get set
#### DEPRECATED VARS ####
# use more sanely named 'inventory'
DEPRECATED_HOST_LIST = get_config ( p , DEFAULTS , ' hostfile ' , ' ANSIBLE_HOSTS ' , ' /etc/ansible/hosts ' , ispath= True )
DEPRECATED_HOST_LIST = get_config ( p , DEFAULTS , ' hostfile ' , ' ANSIBLE_HOSTS ' , ' /etc/ansible/hosts ' , value_type= ' path ' )
# this is not used since 0.5 but people might still have in config
DEFAULT_PATTERN = get_config ( p , DEFAULTS , ' pattern ' , None , None )
# If --tags or --skip-tags is given multiple times on the CLI and this is
# True, merge the lists of tags together. If False, let the last argument
# overwrite any previous ones. Behaviour is overwrite through 2.2. 2.3
# overwrites but prints deprecation. 2.4 the default is to merge.
MERGE_MULTIPLE_CLI_TAGS = get_config ( p , DEFAULTS , ' merge_multiple_cli_tags ' , ' ANSIBLE_MERGE_MULTIPLE_CLI_TAGS ' , False , boolean= True )
MERGE_MULTIPLE_CLI_TAGS = get_config ( p , DEFAULTS , ' merge_multiple_cli_tags ' , ' ANSIBLE_MERGE_MULTIPLE_CLI_TAGS ' , False , value_type= ' boolean ' )
#### GENERALLY CONFIGURABLE THINGS ####
DEFAULT_DEBUG = get_config ( p , DEFAULTS , ' debug ' , ' ANSIBLE_DEBUG ' , False , boolean= True )
DEFAULT_HOST_LIST = get_config ( p , DEFAULTS , ' inventory ' , ' ANSIBLE_INVENTORY ' , DEPRECATED_HOST_LIST , ispath= True )
DEFAULT_MODULE_PATH = get_config ( p , DEFAULTS , ' library ' , ' ANSIBLE_LIBRARY ' , None , ispathlist= True )
DEFAULT_ROLES_PATH = get_config ( p , DEFAULTS , ' roles_path ' , ' ANSIBLE_ROLES_PATH ' , ' /etc/ansible/roles ' , ispathlist= True , expand_relative_paths = True )
DEFAULT_DEBUG = get_config ( p , DEFAULTS , ' debug ' , ' ANSIBLE_DEBUG ' , False , value_type= ' boolean ' )
DEFAULT_HOST_LIST = get_config ( p , DEFAULTS , ' inventory ' , ' ANSIBLE_INVENTORY ' , DEPRECATED_HOST_LIST , value_type= ' path ' )
DEFAULT_MODULE_PATH = get_config ( p , DEFAULTS , ' library ' , ' ANSIBLE_LIBRARY ' , None , value_type= ' pathlist ' )
DEFAULT_ROLES_PATH = get_config ( p , DEFAULTS , ' roles_path ' , ' ANSIBLE_ROLES_PATH ' , ' /etc/ansible/roles ' , value_type= ' pathlist ' , expand_relative_paths = True )
DEFAULT_REMOTE_TMP = get_config ( p , DEFAULTS , ' remote_tmp ' , ' ANSIBLE_REMOTE_TEMP ' , ' $HOME/.ansible/tmp ' )
DEFAULT_LOCAL_TMP = get_config ( p , DEFAULTS , ' local_tmp ' , ' ANSIBLE_LOCAL_TEMP ' , ' $HOME/.ansible/tmp ' , istmppath= True )
DEFAULT_LOCAL_TMP = get_config ( p , DEFAULTS , ' local_tmp ' , ' ANSIBLE_LOCAL_TEMP ' , ' $HOME/.ansible/tmp ' , value_type= ' tmppath ' )
DEFAULT_MODULE_NAME = get_config ( p , DEFAULTS , ' module_name ' , None , ' command ' )
DEFAULT_FORKS = get_config ( p , DEFAULTS , ' forks ' , ' ANSIBLE_FORKS ' , 5 , integer= True )
DEFAULT_FORKS = get_config ( p , DEFAULTS , ' forks ' , ' ANSIBLE_FORKS ' , 5 , value_type= ' integer ' )
DEFAULT_MODULE_ARGS = get_config ( p , DEFAULTS , ' module_args ' , ' ANSIBLE_MODULE_ARGS ' , ' ' )
DEFAULT_MODULE_LANG = get_config ( p , DEFAULTS , ' module_lang ' , ' ANSIBLE_MODULE_LANG ' , os . getenv ( ' LANG ' , ' en_US.UTF-8 ' ) )
DEFAULT_MODULE_SET_LOCALE = get_config ( p , DEFAULTS , ' module_set_locale ' , ' ANSIBLE_MODULE_SET_LOCALE ' , False , boolean= True )
DEFAULT_MODULE_SET_LOCALE = get_config ( p , DEFAULTS , ' module_set_locale ' , ' ANSIBLE_MODULE_SET_LOCALE ' , False , value_type= ' boolean ' )
DEFAULT_MODULE_COMPRESSION = get_config ( p , DEFAULTS , ' module_compression ' , None , ' ZIP_DEFLATED ' )
DEFAULT_TIMEOUT = get_config ( p , DEFAULTS , ' timeout ' , ' ANSIBLE_TIMEOUT ' , 10 , integer= True )
DEFAULT_POLL_INTERVAL = get_config ( p , DEFAULTS , ' poll_interval ' , ' ANSIBLE_POLL_INTERVAL ' , 15 , integer= True )
DEFAULT_TIMEOUT = get_config ( p , DEFAULTS , ' timeout ' , ' ANSIBLE_TIMEOUT ' , 10 , value_type= ' integer ' )
DEFAULT_POLL_INTERVAL = get_config ( p , DEFAULTS , ' poll_interval ' , ' ANSIBLE_POLL_INTERVAL ' , 15 , value_type= ' integer ' )
DEFAULT_REMOTE_USER = get_config ( p , DEFAULTS , ' remote_user ' , ' ANSIBLE_REMOTE_USER ' , None )
DEFAULT_ASK_PASS = get_config ( p , DEFAULTS , ' ask_pass ' , ' ANSIBLE_ASK_PASS ' , False , boolean= True )
DEFAULT_PRIVATE_KEY_FILE = get_config ( p , DEFAULTS , ' private_key_file ' , ' ANSIBLE_PRIVATE_KEY_FILE ' , None , ispath= True )
DEFAULT_REMOTE_PORT = get_config ( p , DEFAULTS , ' remote_port ' , ' ANSIBLE_REMOTE_PORT ' , None , integer= True )
DEFAULT_ASK_VAULT_PASS = get_config ( p , DEFAULTS , ' ask_vault_pass ' , ' ANSIBLE_ASK_VAULT_PASS ' , False , boolean= True )
DEFAULT_VAULT_PASSWORD_FILE = get_config ( p , DEFAULTS , ' vault_password_file ' , ' ANSIBLE_VAULT_PASSWORD_FILE ' , None , ispath= True )
DEFAULT_ASK_PASS = get_config ( p , DEFAULTS , ' ask_pass ' , ' ANSIBLE_ASK_PASS ' , False , value_type= ' boolean ' )
DEFAULT_PRIVATE_KEY_FILE = get_config ( p , DEFAULTS , ' private_key_file ' , ' ANSIBLE_PRIVATE_KEY_FILE ' , None , value_type= ' path ' )
DEFAULT_REMOTE_PORT = get_config ( p , DEFAULTS , ' remote_port ' , ' ANSIBLE_REMOTE_PORT ' , None , value_type= ' integer ' )
DEFAULT_ASK_VAULT_PASS = get_config ( p , DEFAULTS , ' ask_vault_pass ' , ' ANSIBLE_ASK_VAULT_PASS ' , False , value_type= ' boolean ' )
DEFAULT_VAULT_PASSWORD_FILE = get_config ( p , DEFAULTS , ' vault_password_file ' , ' ANSIBLE_VAULT_PASSWORD_FILE ' , None , value_type= ' path ' )
DEFAULT_TRANSPORT = get_config ( p , DEFAULTS , ' transport ' , ' ANSIBLE_TRANSPORT ' , ' smart ' )
DEFAULT_SCP_IF_SSH = get_config ( p , ' ssh_connection ' , ' scp_if_ssh ' , ' ANSIBLE_SCP_IF_SSH ' , ' smart ' )
DEFAULT_SFTP_BATCH_MODE = get_config ( p , ' ssh_connection ' , ' sftp_batch_mode ' , ' ANSIBLE_SFTP_BATCH_MODE ' , True , boolean= True )
DEFAULT_SFTP_BATCH_MODE = get_config ( p , ' ssh_connection ' , ' sftp_batch_mode ' , ' ANSIBLE_SFTP_BATCH_MODE ' , True , value_type= ' boolean ' )
DEFAULT_MANAGED_STR = get_config ( p , DEFAULTS , ' ansible_managed ' , None , ' Ansible managed: {file} modified on % Y- % m- %d % H: % M: % S by {uid} on {host} ' )
DEFAULT_SYSLOG_FACILITY = get_config ( p , DEFAULTS , ' syslog_facility ' , ' ANSIBLE_SYSLOG_FACILITY ' , ' LOG_USER ' )
DEFAULT_KEEP_REMOTE_FILES = get_config ( p , DEFAULTS , ' keep_remote_files ' , ' ANSIBLE_KEEP_REMOTE_FILES ' , False , boolean= True )
DEFAULT_KEEP_REMOTE_FILES = get_config ( p , DEFAULTS , ' keep_remote_files ' , ' ANSIBLE_KEEP_REMOTE_FILES ' , False , value_type= ' boolean ' )
DEFAULT_HASH_BEHAVIOUR = get_config ( p , DEFAULTS , ' hash_behaviour ' , ' ANSIBLE_HASH_BEHAVIOUR ' , ' replace ' )
DEFAULT_PRIVATE_ROLE_VARS = get_config ( p , DEFAULTS , ' private_role_vars ' , ' ANSIBLE_PRIVATE_ROLE_VARS ' , False , boolean= True )
DEFAULT_PRIVATE_ROLE_VARS = get_config ( p , DEFAULTS , ' private_role_vars ' , ' ANSIBLE_PRIVATE_ROLE_VARS ' , False , value_type= ' boolean ' )
DEFAULT_JINJA2_EXTENSIONS = get_config ( p , DEFAULTS , ' jinja2_extensions ' , ' ANSIBLE_JINJA2_EXTENSIONS ' , None )
DEFAULT_EXECUTABLE = get_config ( p , DEFAULTS , ' executable ' , ' ANSIBLE_EXECUTABLE ' , ' /bin/sh ' )
DEFAULT_GATHERING = get_config ( p , DEFAULTS , ' gathering ' , ' ANSIBLE_GATHERING ' , ' implicit ' ) . lower ( )
DEFAULT_GATHER_SUBSET = get_config ( p , DEFAULTS , ' gather_subset ' , ' ANSIBLE_GATHER_SUBSET ' , ' all ' ) . lower ( )
DEFAULT_GATHER_TIMEOUT = get_config ( p , DEFAULTS , ' gather_timeout ' , ' ANSIBLE_GATHER_TIMEOUT ' , 10 , integer= True )
DEFAULT_LOG_PATH = get_config ( p , DEFAULTS , ' log_path ' , ' ANSIBLE_LOG_PATH ' , ' ' , ispath= True )
DEFAULT_FORCE_HANDLERS = get_config ( p , DEFAULTS , ' force_handlers ' , ' ANSIBLE_FORCE_HANDLERS ' , False , boolean= True )
DEFAULT_INVENTORY_IGNORE = get_config ( p , DEFAULTS , ' inventory_ignore_extensions ' , ' ANSIBLE_INVENTORY_IGNORE ' , [ " ~ " , " .orig " , " .bak " , " .ini " , " .cfg " , " .retry " , " .pyc " , " .pyo " ] , islist= True )
DEFAULT_VAR_COMPRESSION_LEVEL = get_config ( p , DEFAULTS , ' var_compression_level ' , ' ANSIBLE_VAR_COMPRESSION_LEVEL ' , 0 , integer= True )
DEFAULT_INTERNAL_POLL_INTERVAL = get_config ( p , DEFAULTS , ' internal_poll_interval ' , None , 0.001 , floating= True )
DEFAULT_GATHER_TIMEOUT = get_config ( p , DEFAULTS , ' gather_timeout ' , ' ANSIBLE_GATHER_TIMEOUT ' , 10 , value_type= ' integer ' )
DEFAULT_LOG_PATH = get_config ( p , DEFAULTS , ' log_path ' , ' ANSIBLE_LOG_PATH ' , ' ' , value_type= ' path ' )
DEFAULT_FORCE_HANDLERS = get_config ( p , DEFAULTS , ' force_handlers ' , ' ANSIBLE_FORCE_HANDLERS ' , False , value_type= ' boolean ' )
DEFAULT_INVENTORY_IGNORE = get_config ( p , DEFAULTS , ' inventory_ignore_extensions ' , ' ANSIBLE_INVENTORY_IGNORE ' , [ " ~ " , " .orig " , " .bak " , " .ini " , " .cfg " , " .retry " , " .pyc " , " .pyo " ] , value_type= ' list ' )
DEFAULT_VAR_COMPRESSION_LEVEL = get_config ( p , DEFAULTS , ' var_compression_level ' , ' ANSIBLE_VAR_COMPRESSION_LEVEL ' , 0 , value_type= ' integer ' )
DEFAULT_INTERNAL_POLL_INTERVAL = get_config ( p , DEFAULTS , ' internal_poll_interval ' , None , 0.001 , value_type= ' float ' )
# static includes
DEFAULT_TASK_INCLUDES_STATIC = get_config ( p , DEFAULTS , ' task_includes_static ' , ' ANSIBLE_TASK_INCLUDES_STATIC ' , False , boolean= True )
DEFAULT_HANDLER_INCLUDES_STATIC = get_config ( p , DEFAULTS , ' handler_includes_static ' , ' ANSIBLE_HANDLER_INCLUDES_STATIC ' , False , boolean= True )
DEFAULT_TASK_INCLUDES_STATIC = get_config ( p , DEFAULTS , ' task_includes_static ' , ' ANSIBLE_TASK_INCLUDES_STATIC ' , False , value_type= ' boolean ' )
DEFAULT_HANDLER_INCLUDES_STATIC = get_config ( p , DEFAULTS , ' handler_includes_static ' , ' ANSIBLE_HANDLER_INCLUDES_STATIC ' , False , value_type= ' boolean ' )
# disclosure
DEFAULT_NO_LOG = get_config ( p , DEFAULTS , ' no_log ' , ' ANSIBLE_NO_LOG ' , False , boolean= True )
DEFAULT_NO_TARGET_SYSLOG = get_config ( p , DEFAULTS , ' no_target_syslog ' , ' ANSIBLE_NO_TARGET_SYSLOG ' , False , boolean= True )
ALLOW_WORLD_READABLE_TMPFILES = get_config ( p , DEFAULTS , ' allow_world_readable_tmpfiles ' , None , False , boolean= True )
DEFAULT_NO_LOG = get_config ( p , DEFAULTS , ' no_log ' , ' ANSIBLE_NO_LOG ' , False , value_type= ' boolean ' )
DEFAULT_NO_TARGET_SYSLOG = get_config ( p , DEFAULTS , ' no_target_syslog ' , ' ANSIBLE_NO_TARGET_SYSLOG ' , False , value_type= ' boolean ' )
ALLOW_WORLD_READABLE_TMPFILES = get_config ( p , DEFAULTS , ' allow_world_readable_tmpfiles ' , None , False , value_type= ' boolean ' )
# selinux
DEFAULT_SELINUX_SPECIAL_FS = get_config ( p , ' selinux ' , ' special_context_filesystems ' , None , ' fuse, nfs, vboxsf, ramfs ' , islist= True )
DEFAULT_LIBVIRT_LXC_NOSECLABEL = get_config ( p , ' selinux ' , ' libvirt_lxc_noseclabel ' , ' LIBVIRT_LXC_NOSECLABEL ' , False , boolean= True )
DEFAULT_SELINUX_SPECIAL_FS = get_config ( p , ' selinux ' , ' special_context_filesystems ' , None , ' fuse, nfs, vboxsf, ramfs ' , value_type= ' list ' )
DEFAULT_LIBVIRT_LXC_NOSECLABEL = get_config ( p , ' selinux ' , ' libvirt_lxc_noseclabel ' , ' LIBVIRT_LXC_NOSECLABEL ' , False , value_type= ' boolean ' )
### PRIVILEGE ESCALATION ###
# Backwards Compat
DEFAULT_SU = get_config ( p , DEFAULTS , ' su ' , ' ANSIBLE_SU ' , False , boolean= True )
DEFAULT_SU = get_config ( p , DEFAULTS , ' su ' , ' ANSIBLE_SU ' , False , value_type= ' boolean ' )
DEFAULT_SU_USER = get_config ( p , DEFAULTS , ' su_user ' , ' ANSIBLE_SU_USER ' , ' root ' )
DEFAULT_SU_EXE = get_config ( p , DEFAULTS , ' su_exe ' , ' ANSIBLE_SU_EXE ' , None )
DEFAULT_SU_FLAGS = get_config ( p , DEFAULTS , ' su_flags ' , ' ANSIBLE_SU_FLAGS ' , None )
DEFAULT_ASK_SU_PASS = get_config ( p , DEFAULTS , ' ask_su_pass ' , ' ANSIBLE_ASK_SU_PASS ' , False , boolean= True )
DEFAULT_SUDO = get_config ( p , DEFAULTS , ' sudo ' , ' ANSIBLE_SUDO ' , False , boolean= True )
DEFAULT_ASK_SU_PASS = get_config ( p , DEFAULTS , ' ask_su_pass ' , ' ANSIBLE_ASK_SU_PASS ' , False , value_type= ' boolean ' )
DEFAULT_SUDO = get_config ( p , DEFAULTS , ' sudo ' , ' ANSIBLE_SUDO ' , False , value_type= ' boolean ' )
DEFAULT_SUDO_USER = get_config ( p , DEFAULTS , ' sudo_user ' , ' ANSIBLE_SUDO_USER ' , ' root ' )
DEFAULT_SUDO_EXE = get_config ( p , DEFAULTS , ' sudo_exe ' , ' ANSIBLE_SUDO_EXE ' , None )
DEFAULT_SUDO_FLAGS = get_config ( p , DEFAULTS , ' sudo_flags ' , ' ANSIBLE_SUDO_FLAGS ' , ' -H -S -n ' )
DEFAULT_ASK_SUDO_PASS = get_config ( p , DEFAULTS , ' ask_sudo_pass ' , ' ANSIBLE_ASK_SUDO_PASS ' , False , boolean= True )
DEFAULT_ASK_SUDO_PASS = get_config ( p , DEFAULTS , ' ask_sudo_pass ' , ' ANSIBLE_ASK_SUDO_PASS ' , False , value_type= ' boolean ' )
# Become
BECOME_ERROR_STRINGS = { ' sudo ' : ' Sorry, try again. ' , ' su ' : ' Authentication failure ' , ' pbrun ' : ' ' , ' pfexec ' : ' ' , ' doas ' : ' Permission denied ' , ' dzdo ' : ' ' , ' ksu ' : ' Password incorrect ' } #FIXME: deal with i18n
BECOME_MISSING_STRINGS = { ' sudo ' : ' sorry, a password is required to run sudo ' , ' su ' : ' ' , ' pbrun ' : ' ' , ' pfexec ' : ' ' , ' doas ' : ' Authorization required ' , ' dzdo ' : ' ' , ' ksu ' : ' No password given ' } #FIXME: deal with i18n
BECOME_METHODS = [ ' sudo ' , ' su ' , ' pbrun ' , ' pfexec ' , ' doas ' , ' dzdo ' , ' ksu ' ]
BECOME_ALLOW_SAME_USER = get_config ( p , ' privilege_escalation ' , ' become_allow_same_user ' , ' ANSIBLE_BECOME_ALLOW_SAME_USER ' , False , boolean= True )
BECOME_ALLOW_SAME_USER = get_config ( p , ' privilege_escalation ' , ' become_allow_same_user ' , ' ANSIBLE_BECOME_ALLOW_SAME_USER ' , False , value_type= ' boolean ' )
DEFAULT_BECOME_METHOD = get_config ( p , ' privilege_escalation ' , ' become_method ' , ' ANSIBLE_BECOME_METHOD ' , ' sudo ' if DEFAULT_SUDO else ' su ' if DEFAULT_SU else ' sudo ' ) . lower ( )
DEFAULT_BECOME = get_config ( p , ' privilege_escalation ' , ' become ' , ' ANSIBLE_BECOME ' , False , boolean= True )
DEFAULT_BECOME = get_config ( p , ' privilege_escalation ' , ' become ' , ' ANSIBLE_BECOME ' , False , value_type= ' boolean ' )
DEFAULT_BECOME_USER = get_config ( p , ' privilege_escalation ' , ' become_user ' , ' ANSIBLE_BECOME_USER ' , ' root ' )
DEFAULT_BECOME_EXE = get_config ( p , ' privilege_escalation ' , ' become_exe ' , ' ANSIBLE_BECOME_EXE ' , None )
DEFAULT_BECOME_FLAGS = get_config ( p , ' privilege_escalation ' , ' become_flags ' , ' ANSIBLE_BECOME_FLAGS ' , None )
DEFAULT_BECOME_ASK_PASS = get_config ( p , ' privilege_escalation ' , ' become_ask_pass ' , ' ANSIBLE_BECOME_ASK_PASS ' , False , boolean= True )
DEFAULT_BECOME_ASK_PASS = get_config ( p , ' privilege_escalation ' , ' become_ask_pass ' , ' ANSIBLE_BECOME_ASK_PASS ' , False , value_type= ' boolean ' )
# PLUGINS
@ -243,75 +255,74 @@ DEFAULT_BECOME_ASK_PASS = get_config(p, 'privilege_escalation', 'become_ask_pa
# the module takes both, bad things could happen.
# In the future we should probably generalize this even further
# (mapping of param: squash field)
DEFAULT_SQUASH_ACTIONS = get_config ( p , DEFAULTS , ' squash_actions ' , ' ANSIBLE_SQUASH_ACTIONS ' , " apk, apt, dnf, homebrew, package, pacman, pkgng, yum, zypper " , islist= True )
DEFAULT_SQUASH_ACTIONS = get_config ( p , DEFAULTS , ' squash_actions ' , ' ANSIBLE_SQUASH_ACTIONS ' , " apk, apt, dnf, homebrew, package, pacman, pkgng, yum, zypper " , value_type= ' list ' )
# paths
DEFAULT_ACTION_PLUGIN_PATH = get_config ( p , DEFAULTS , ' action_plugins ' , ' ANSIBLE_ACTION_PLUGINS ' , ' ~/.ansible/plugins/action:/usr/share/ansible/plugins/action ' , ispathlist= True )
DEFAULT_CACHE_PLUGIN_PATH = get_config ( p , DEFAULTS , ' cache_plugins ' , ' ANSIBLE_CACHE_PLUGINS ' , ' ~/.ansible/plugins/cache:/usr/share/ansible/plugins/cache ' , ispathlist= True )
DEFAULT_CALLBACK_PLUGIN_PATH = get_config ( p , DEFAULTS , ' callback_plugins ' , ' ANSIBLE_CALLBACK_PLUGINS ' , ' ~/.ansible/plugins/callback:/usr/share/ansible/plugins/callback ' , ispathlist= True )
DEFAULT_CONNECTION_PLUGIN_PATH = get_config ( p , DEFAULTS , ' connection_plugins ' , ' ANSIBLE_CONNECTION_PLUGINS ' , ' ~/.ansible/plugins/connection:/usr/share/ansible/plugins/connection ' , ispathlist= True )
DEFAULT_LOOKUP_PLUGIN_PATH = get_config ( p , DEFAULTS , ' lookup_plugins ' , ' ANSIBLE_LOOKUP_PLUGINS ' , ' ~/.ansible/plugins/lookup:/usr/share/ansible/plugins/lookup ' , ispathlist= True )
DEFAULT_INVENTORY_PLUGIN_PATH = get_config ( p , DEFAULTS , ' inventory_plugins ' , ' ANSIBLE_INVENTORY_PLUGINS ' , ' ~/.ansible/plugins/inventory:/usr/share/ansible/plugins/inventory ' , ispathlist= True )
DEFAULT_VARS_PLUGIN_PATH = get_config ( p , DEFAULTS , ' vars_plugins ' , ' ANSIBLE_VARS_PLUGINS ' , ' ~/.ansible/plugins/vars:/usr/share/ansible/plugins/vars ' , ispathlist= True )
DEFAULT_FILTER_PLUGIN_PATH = get_config ( p , DEFAULTS , ' filter_plugins ' , ' ANSIBLE_FILTER_PLUGINS ' , ' ~/.ansible/plugins/filter:/usr/share/ansible/plugins/filter ' , ispathlist= True )
DEFAULT_TEST_PLUGIN_PATH = get_config ( p , DEFAULTS , ' test_plugins ' , ' ANSIBLE_TEST_PLUGINS ' , ' ~/.ansible/plugins/test:/usr/share/ansible/plugins/test ' , ispathlist= True )
DEFAULT_STRATEGY_PLUGIN_PATH = get_config ( p , DEFAULTS , ' strategy_plugins ' , ' ANSIBLE_STRATEGY_PLUGINS ' , ' ~/.ansible/plugins/strategy:/usr/share/ansible/plugins/strategy ' , ispathlist= True )
DEFAULT_ACTION_PLUGIN_PATH = get_config ( p , DEFAULTS , ' action_plugins ' , ' ANSIBLE_ACTION_PLUGINS ' , ' ~/.ansible/plugins/action:/usr/share/ansible/plugins/action ' , value_type= ' pathlist ' )
DEFAULT_CACHE_PLUGIN_PATH = get_config ( p , DEFAULTS , ' cache_plugins ' , ' ANSIBLE_CACHE_PLUGINS ' , ' ~/.ansible/plugins/cache:/usr/share/ansible/plugins/cache ' , value_type= ' pathlist ' )
DEFAULT_CALLBACK_PLUGIN_PATH = get_config ( p , DEFAULTS , ' callback_plugins ' , ' ANSIBLE_CALLBACK_PLUGINS ' , ' ~/.ansible/plugins/callback:/usr/share/ansible/plugins/callback ' , value_type= ' pathlist ' )
DEFAULT_CONNECTION_PLUGIN_PATH = get_config ( p , DEFAULTS , ' connection_plugins ' , ' ANSIBLE_CONNECTION_PLUGINS ' , ' ~/.ansible/plugins/connection:/usr/share/ansible/plugins/connection ' , value_type= ' pathlist ' )
DEFAULT_LOOKUP_PLUGIN_PATH = get_config ( p , DEFAULTS , ' lookup_plugins ' , ' ANSIBLE_LOOKUP_PLUGINS ' , ' ~/.ansible/plugins/lookup:/usr/share/ansible/plugins/lookup ' , value_type= ' pathlist ' )
DEFAULT_INVENTORY_PLUGIN_PATH = get_config ( p , DEFAULTS , ' inventory_plugins ' , ' ANSIBLE_INVENTORY_PLUGINS ' , ' ~/.ansible/plugins/inventory:/usr/share/ansible/plugins/inventory ' , value_type= ' pathlist ' )
DEFAULT_VARS_PLUGIN_PATH = get_config ( p , DEFAULTS , ' vars_plugins ' , ' ANSIBLE_VARS_PLUGINS ' , ' ~/.ansible/plugins/vars:/usr/share/ansible/plugins/vars ' , value_type= ' pathlist ' )
DEFAULT_FILTER_PLUGIN_PATH = get_config ( p , DEFAULTS , ' filter_plugins ' , ' ANSIBLE_FILTER_PLUGINS ' , ' ~/.ansible/plugins/filter:/usr/share/ansible/plugins/filter ' , value_type= ' pathlist ' )
DEFAULT_TEST_PLUGIN_PATH = get_config ( p , DEFAULTS , ' test_plugins ' , ' ANSIBLE_TEST_PLUGINS ' , ' ~/.ansible/plugins/test:/usr/share/ansible/plugins/test ' , value_type= ' pathlist ' )
DEFAULT_STRATEGY_PLUGIN_PATH = get_config ( p , DEFAULTS , ' strategy_plugins ' , ' ANSIBLE_STRATEGY_PLUGINS ' , ' ~/.ansible/plugins/strategy:/usr/share/ansible/plugins/strategy ' , value_type= ' pathlist ' )
DEFAULT_STDOUT_CALLBACK = get_config ( p , DEFAULTS , ' stdout_callback ' , ' ANSIBLE_STDOUT_CALLBACK ' , ' default ' )
# cache
CACHE_PLUGIN = get_config ( p , DEFAULTS , ' fact_caching ' , ' ANSIBLE_CACHE_PLUGIN ' , ' memory ' )
CACHE_PLUGIN_CONNECTION = get_config ( p , DEFAULTS , ' fact_caching_connection ' , ' ANSIBLE_CACHE_PLUGIN_CONNECTION ' , None )
CACHE_PLUGIN_PREFIX = get_config ( p , DEFAULTS , ' fact_caching_prefix ' , ' ANSIBLE_CACHE_PLUGIN_PREFIX ' , ' ansible_facts ' )
CACHE_PLUGIN_TIMEOUT = get_config ( p , DEFAULTS , ' fact_caching_timeout ' , ' ANSIBLE_CACHE_PLUGIN_TIMEOUT ' , 24 * 60 * 60 , integer= True )
CACHE_PLUGIN_TIMEOUT = get_config ( p , DEFAULTS , ' fact_caching_timeout ' , ' ANSIBLE_CACHE_PLUGIN_TIMEOUT ' , 24 * 60 * 60 , value_type= ' integer ' )
# Display
ANSIBLE_FORCE_COLOR = get_config ( p , DEFAULTS , ' force_color ' , ' ANSIBLE_FORCE_COLOR ' , None , boolean= True )
ANSIBLE_NOCOLOR = get_config ( p , DEFAULTS , ' nocolor ' , ' ANSIBLE_NOCOLOR ' , None , boolean= True )
ANSIBLE_NOCOWS = get_config ( p , DEFAULTS , ' nocows ' , ' ANSIBLE_NOCOWS ' , None , boolean= True )
ANSIBLE_FORCE_COLOR = get_config ( p , DEFAULTS , ' force_color ' , ' ANSIBLE_FORCE_COLOR ' , None , value_type= ' boolean ' )
ANSIBLE_NOCOLOR = get_config ( p , DEFAULTS , ' nocolor ' , ' ANSIBLE_NOCOLOR ' , None , value_type= ' boolean ' )
ANSIBLE_NOCOWS = get_config ( p , DEFAULTS , ' nocows ' , ' ANSIBLE_NOCOWS ' , None , value_type= ' boolean ' )
ANSIBLE_COW_SELECTION = get_config ( p , DEFAULTS , ' cow_selection ' , ' ANSIBLE_COW_SELECTION ' , ' default ' )
ANSIBLE_COW_WHITELIST = get_config ( p , DEFAULTS , ' cow_whitelist ' , ' ANSIBLE_COW_WHITELIST ' , DEFAULT_COW_WHITELIST , islist= True )
DISPLAY_SKIPPED_HOSTS = get_config ( p , DEFAULTS , ' display_skipped_hosts ' , ' DISPLAY_SKIPPED_HOSTS ' , True , boolean= True )
DEFAULT_UNDEFINED_VAR_BEHAVIOR = get_config ( p , DEFAULTS , ' error_on_undefined_vars ' , ' ANSIBLE_ERROR_ON_UNDEFINED_VARS ' , True , boolean= True )
HOST_KEY_CHECKING = get_config ( p , DEFAULTS , ' host_key_checking ' , ' ANSIBLE_HOST_KEY_CHECKING ' , True , boolean= True )
SYSTEM_WARNINGS = get_config ( p , DEFAULTS , ' system_warnings ' , ' ANSIBLE_SYSTEM_WARNINGS ' , True , boolean= True )
DEPRECATION_WARNINGS = get_config ( p , DEFAULTS , ' deprecation_warnings ' , ' ANSIBLE_DEPRECATION_WARNINGS ' , True , boolean= True )
DEFAULT_CALLABLE_WHITELIST = get_config ( p , DEFAULTS , ' callable_whitelist ' , ' ANSIBLE_CALLABLE_WHITELIST ' , [ ] , islist= True )
COMMAND_WARNINGS = get_config ( p , DEFAULTS , ' command_warnings ' , ' ANSIBLE_COMMAND_WARNINGS ' , True , boolean= True )
DEFAULT_LOAD_CALLBACK_PLUGINS = get_config ( p , DEFAULTS , ' bin_ansible_callbacks ' , ' ANSIBLE_LOAD_CALLBACK_PLUGINS ' , False , boolean= True )
DEFAULT_CALLBACK_WHITELIST = get_config ( p , DEFAULTS , ' callback_whitelist ' , ' ANSIBLE_CALLBACK_WHITELIST ' , [ ] , islist= True )
RETRY_FILES_ENABLED = get_config ( p , DEFAULTS , ' retry_files_enabled ' , ' ANSIBLE_RETRY_FILES_ENABLED ' , True , boolean= True )
RETRY_FILES_SAVE_PATH = get_config ( p , DEFAULTS , ' retry_files_save_path ' , ' ANSIBLE_RETRY_FILES_SAVE_PATH ' , None , ispath= True )
DEFAULT_NULL_REPRESENTATION = get_config ( p , DEFAULTS , ' null_representation ' , ' ANSIBLE_NULL_REPRESENTATION ' , None , isnone= True )
DISPLAY_ARGS_TO_STDOUT = get_config ( p , DEFAULTS , ' display_args_to_stdout ' , ' ANSIBLE_DISPLAY_ARGS_TO_STDOUT ' , False , boolean= True )
MAX_FILE_SIZE_FOR_DIFF = get_config ( p , DEFAULTS , ' max_diff_size ' , ' ANSIBLE_MAX_DIFF_SIZE ' , 1024 * 1024 , integer= True )
ANSIBLE_COW_WHITELIST = get_config ( p , DEFAULTS , ' cow_whitelist ' , ' ANSIBLE_COW_WHITELIST ' , DEFAULT_COW_WHITELIST , value_type= ' list ' )
DISPLAY_SKIPPED_HOSTS = get_config ( p , DEFAULTS , ' display_skipped_hosts ' , ' DISPLAY_SKIPPED_HOSTS ' , True , value_type= ' boolean ' )
DEFAULT_UNDEFINED_VAR_BEHAVIOR = get_config ( p , DEFAULTS , ' error_on_undefined_vars ' , ' ANSIBLE_ERROR_ON_UNDEFINED_VARS ' , True , value_type= ' boolean ' )
HOST_KEY_CHECKING = get_config ( p , DEFAULTS , ' host_key_checking ' , ' ANSIBLE_HOST_KEY_CHECKING ' , True , value_type= ' boolean ' )
SYSTEM_WARNINGS = get_config ( p , DEFAULTS , ' system_warnings ' , ' ANSIBLE_SYSTEM_WARNINGS ' , True , value_type= ' boolean ' )
DEPRECATION_WARNINGS = get_config ( p , DEFAULTS , ' deprecation_warnings ' , ' ANSIBLE_DEPRECATION_WARNINGS ' , True , value_type= ' boolean ' )
DEFAULT_CALLABLE_WHITELIST = get_config ( p , DEFAULTS , ' callable_whitelist ' , ' ANSIBLE_CALLABLE_WHITELIST ' , [ ] , value_type= ' list ' )
COMMAND_WARNINGS = get_config ( p , DEFAULTS , ' command_warnings ' , ' ANSIBLE_COMMAND_WARNINGS ' , True , value_type= ' boolean ' )
DEFAULT_LOAD_CALLBACK_PLUGINS = get_config ( p , DEFAULTS , ' bin_ansible_callbacks ' , ' ANSIBLE_LOAD_CALLBACK_PLUGINS ' , False , value_type= ' boolean ' )
DEFAULT_CALLBACK_WHITELIST = get_config ( p , DEFAULTS , ' callback_whitelist ' , ' ANSIBLE_CALLBACK_WHITELIST ' , [ ] , value_type= ' list ' )
RETRY_FILES_ENABLED = get_config ( p , DEFAULTS , ' retry_files_enabled ' , ' ANSIBLE_RETRY_FILES_ENABLED ' , True , value_type= ' boolean ' )
RETRY_FILES_SAVE_PATH = get_config ( p , DEFAULTS , ' retry_files_save_path ' , ' ANSIBLE_RETRY_FILES_SAVE_PATH ' , None , value_type= ' path ' )
DEFAULT_NULL_REPRESENTATION = get_config ( p , DEFAULTS , ' null_representation ' , ' ANSIBLE_NULL_REPRESENTATION ' , None , value_type= ' none ' )
DISPLAY_ARGS_TO_STDOUT = get_config ( p , DEFAULTS , ' display_args_to_stdout ' , ' ANSIBLE_DISPLAY_ARGS_TO_STDOUT ' , False , value_type= ' boolean ' )
MAX_FILE_SIZE_FOR_DIFF = get_config ( p , DEFAULTS , ' max_diff_size ' , ' ANSIBLE_MAX_DIFF_SIZE ' , 1024 * 1024 , value_type= ' integer ' )
# CONNECTION RELATED
ANSIBLE_SSH_ARGS = get_config ( p , ' ssh_connection ' , ' ssh_args ' , ' ANSIBLE_SSH_ARGS ' , ' -C -o ControlMaster=auto -o ControlPersist=60s ' )
ANSIBLE_SSH_CONTROL_PATH = get_config ( p , ' ssh_connection ' , ' control_path ' , ' ANSIBLE_SSH_CONTROL_PATH ' , u " %(directory)s /ansible-ssh- %% h- %% p- %% r " )
ANSIBLE_SSH_PIPELINING = get_config ( p , ' ssh_connection ' , ' pipelining ' , ' ANSIBLE_SSH_PIPELINING ' , False , boolean= True )
ANSIBLE_SSH_RETRIES = get_config ( p , ' ssh_connection ' , ' retries ' , ' ANSIBLE_SSH_RETRIES ' , 0 , integer= True )
ANSIBLE_SSH_PIPELINING = get_config ( p , ' ssh_connection ' , ' pipelining ' , ' ANSIBLE_SSH_PIPELINING ' , False , value_type= ' boolean ' )
ANSIBLE_SSH_RETRIES = get_config ( p , ' ssh_connection ' , ' retries ' , ' ANSIBLE_SSH_RETRIES ' , 0 , value_type= ' integer ' )
ANSIBLE_SSH_EXECUTABLE = get_config ( p , ' ssh_connection ' , ' ssh_executable ' , ' ANSIBLE_SSH_EXECUTABLE ' , ' ssh ' )
PARAMIKO_RECORD_HOST_KEYS = get_config ( p , ' paramiko_connection ' , ' record_host_keys ' , ' ANSIBLE_PARAMIKO_RECORD_HOST_KEYS ' , True , boolean= True )
PARAMIKO_RECORD_HOST_KEYS = get_config ( p , ' paramiko_connection ' , ' record_host_keys ' , ' ANSIBLE_PARAMIKO_RECORD_HOST_KEYS ' , True , value_type= ' boolean ' )
PARAMIKO_PROXY_COMMAND = get_config ( p , ' paramiko_connection ' , ' proxy_command ' , ' ANSIBLE_PARAMIKO_PROXY_COMMAND ' , None )
# obsolete -- will be formally removed
ZEROMQ_PORT = get_config ( p , ' fireball_connection ' , ' zeromq_port ' , ' ANSIBLE_ZEROMQ_PORT ' , 5099 , integer= True )
ACCELERATE_PORT = get_config ( p , ' accelerate ' , ' accelerate_port ' , ' ACCELERATE_PORT ' , 5099 , integer= True )
ACCELERATE_TIMEOUT = get_config ( p , ' accelerate ' , ' accelerate_timeout ' , ' ACCELERATE_TIMEOUT ' , 30 , integer= True )
ACCELERATE_CONNECT_TIMEOUT = get_config ( p , ' accelerate ' , ' accelerate_connect_timeout ' , ' ACCELERATE_CONNECT_TIMEOUT ' , 1.0 , floating= True )
ACCELERATE_DAEMON_TIMEOUT = get_config ( p , ' accelerate ' , ' accelerate_daemon_timeout ' , ' ACCELERATE_DAEMON_TIMEOUT ' , 30 , integer= True )
ZEROMQ_PORT = get_config ( p , ' fireball_connection ' , ' zeromq_port ' , ' ANSIBLE_ZEROMQ_PORT ' , 5099 , value_type= ' integer ' )
ACCELERATE_PORT = get_config ( p , ' accelerate ' , ' accelerate_port ' , ' ACCELERATE_PORT ' , 5099 , value_type= ' integer ' )
ACCELERATE_TIMEOUT = get_config ( p , ' accelerate ' , ' accelerate_timeout ' , ' ACCELERATE_TIMEOUT ' , 30 , value_type= ' integer ' )
ACCELERATE_CONNECT_TIMEOUT = get_config ( p , ' accelerate ' , ' accelerate_connect_timeout ' , ' ACCELERATE_CONNECT_TIMEOUT ' , 1.0 , value_type= ' float ' )
ACCELERATE_DAEMON_TIMEOUT = get_config ( p , ' accelerate ' , ' accelerate_daemon_timeout ' , ' ACCELERATE_DAEMON_TIMEOUT ' , 30 , value_type= ' integer ' )
ACCELERATE_KEYS_DIR = get_config ( p , ' accelerate ' , ' accelerate_keys_dir ' , ' ACCELERATE_KEYS_DIR ' , ' ~/.fireball.keys ' )
ACCELERATE_KEYS_DIR_PERMS = get_config ( p , ' accelerate ' , ' accelerate_keys_dir_perms ' , ' ACCELERATE_KEYS_DIR_PERMS ' , ' 700 ' )
ACCELERATE_KEYS_FILE_PERMS = get_config ( p , ' accelerate ' , ' accelerate_keys_file_perms ' , ' ACCELERATE_KEYS_FILE_PERMS ' , ' 600 ' )
ACCELERATE_MULTI_KEY = get_config ( p , ' accelerate ' , ' accelerate_multi_key ' , ' ACCELERATE_MULTI_KEY ' , False , boolean= True )
PARAMIKO_PTY = get_config ( p , ' paramiko_connection ' , ' pty ' , ' ANSIBLE_PARAMIKO_PTY ' , True , boolean= True )
ACCELERATE_MULTI_KEY = get_config ( p , ' accelerate ' , ' accelerate_multi_key ' , ' ACCELERATE_MULTI_KEY ' , False , value_type= ' boolean ' )
PARAMIKO_PTY = get_config ( p , ' paramiko_connection ' , ' pty ' , ' ANSIBLE_PARAMIKO_PTY ' , True , value_type= ' boolean ' )
# galaxy related
GALAXY_SERVER = get_config ( p , ' galaxy ' , ' server ' , ' ANSIBLE_GALAXY_SERVER ' , ' https://galaxy.ansible.com ' )
GALAXY_IGNORE_CERTS = get_config ( p , ' galaxy ' , ' ignore_certs ' , ' ANSIBLE_GALAXY_IGNORE ' , False , boolean= True )
GALAXY_IGNORE_CERTS = get_config ( p , ' galaxy ' , ' ignore_certs ' , ' ANSIBLE_GALAXY_IGNORE ' , False , value_type= ' boolean ' )
# this can be configured to blacklist SCMS but cannot add new ones unless the code is also updated
GALAXY_SCMS = get_config ( p , ' galaxy ' , ' scms ' , ' ANSIBLE_GALAXY_SCMS ' , ' git, hg ' , islist= True )
GALAXY_SCMS = get_config ( p , ' galaxy ' , ' scms ' , ' ANSIBLE_GALAXY_SCMS ' , ' git, hg ' , value_type= ' list ' )
STRING_TYPE_FILTERS = get_config ( p , ' jinja2 ' , ' dont_type_filters ' , ' ANSIBLE_STRING_TYPE_FILTERS ' , [ ' string ' , ' to_json ' , ' to_nice_json ' , ' to_yaml ' , ' ppretty ' , ' json ' ] , islist= True )
STRING_TYPE_FILTERS = get_config ( p , ' jinja2 ' , ' dont_type_filters ' , ' ANSIBLE_STRING_TYPE_FILTERS ' , [ ' string ' , ' to_json ' , ' to_nice_json ' , ' to_yaml ' , ' ppretty ' , ' json ' ] , value_type= ' list ' )
# colors
COLOR_HIGHLIGHT = get_config ( p , ' colors ' , ' highlight ' , ' ANSIBLE_COLOR_HIGHLIGHT ' , ' white ' )
@ -329,7 +340,7 @@ COLOR_DIFF_REMOVE = get_config(p, 'colors', 'diff_remove', 'ANSIBLE_COLOR_DIFF_R
COLOR_DIFF_LINES = get_config ( p , ' colors ' , ' diff_lines ' , ' ANSIBLE_COLOR_DIFF_LINES ' , ' cyan ' )
# diff
DIFF_CONTEXT = get_config ( p , ' diff ' , ' context ' , ' ANSIBLE_DIFF_CONTEXT ' , 3 , integer= True )
DIFF_CONTEXT = get_config ( p , ' diff ' , ' context ' , ' ANSIBLE_DIFF_CONTEXT ' , 3 , value_type= ' integer ' )
# non-configurable things
MODULE_REQUIRE_ARGS = [ ' command ' , ' win_command ' , ' shell ' , ' win_shell ' , ' raw ' , ' script ' ]