|
|
@ -32,6 +32,7 @@ from ansible.utils.path import makedirs_safe
|
|
|
|
|
|
|
|
|
|
|
|
BOOL_TRUE = frozenset(["true", "t", "y", "1", "yes", "on"])
|
|
|
|
BOOL_TRUE = frozenset(["true", "t", "y", "1", "yes", "on"])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def mk_boolean(value):
|
|
|
|
def mk_boolean(value):
|
|
|
|
ret = value
|
|
|
|
ret = value
|
|
|
|
if not isinstance(value, bool):
|
|
|
|
if not isinstance(value, bool):
|
|
|
@ -40,6 +41,7 @@ def mk_boolean(value):
|
|
|
|
ret = (str(value).lower() in BOOL_TRUE)
|
|
|
|
ret = (str(value).lower() in BOOL_TRUE)
|
|
|
|
return ret
|
|
|
|
return ret
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def shell_expand(path, expand_relative_paths=False):
|
|
|
|
def shell_expand(path, expand_relative_paths=False):
|
|
|
|
'''
|
|
|
|
'''
|
|
|
|
shell_expand is needed as os.path.expanduser does not work
|
|
|
|
shell_expand is needed as os.path.expanduser does not work
|
|
|
@ -55,6 +57,7 @@ def shell_expand(path, expand_relative_paths=False):
|
|
|
|
path = os.path.abspath(path)
|
|
|
|
path = os.path.abspath(path)
|
|
|
|
return path
|
|
|
|
return path
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_config(p, section, key, env_var, default, value_type=None, expand_relative_paths=False):
|
|
|
|
def get_config(p, section, key, env_var, default, value_type=None, expand_relative_paths=False):
|
|
|
|
''' return a configuration variable with casting
|
|
|
|
''' return a configuration variable with casting
|
|
|
|
|
|
|
|
|
|
|
@ -112,8 +115,7 @@ def get_config(p, section, key, env_var, default, value_type=None, expand_relati
|
|
|
|
|
|
|
|
|
|
|
|
elif value_type == 'pathlist':
|
|
|
|
elif value_type == 'pathlist':
|
|
|
|
if isinstance(value, string_types):
|
|
|
|
if isinstance(value, string_types):
|
|
|
|
value = [shell_expand(x, expand_relative_paths=expand_relative_paths) \
|
|
|
|
value = [shell_expand(x, expand_relative_paths=expand_relative_paths) for x in value.split(os.pathsep)]
|
|
|
|
for x in value.split(os.pathsep)]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
elif isinstance(value, string_types):
|
|
|
|
elif isinstance(value, string_types):
|
|
|
|
value = unquote(value)
|
|
|
|
value = unquote(value)
|
|
|
@ -176,23 +178,22 @@ YAML_FILENAME_EXTENSIONS = [ "", ".yml", ".yaml", ".json" ]
|
|
|
|
DEFAULT_COW_WHITELIST = ['bud-frogs', 'bunny', 'cheese', 'daemon', 'default', 'dragon', 'elephant-in-snake', 'elephant',
|
|
|
|
DEFAULT_COW_WHITELIST = ['bud-frogs', 'bunny', 'cheese', 'daemon', 'default', 'dragon', 'elephant-in-snake', 'elephant',
|
|
|
|
'eyes', 'hellokitty', 'kitty', 'luke-koala', 'meow', 'milk', 'moofasa', 'moose', 'ren', 'sheep',
|
|
|
|
'eyes', 'hellokitty', 'kitty', 'luke-koala', 'meow', 'milk', 'moofasa', 'moose', 'ren', 'sheep',
|
|
|
|
'small', 'stegosaurus', 'stimpy', 'supermilker', 'three-eyes', 'turkey', 'turtle', 'tux', 'udder',
|
|
|
|
'small', 'stegosaurus', 'stimpy', 'supermilker', 'three-eyes', 'turkey', 'turtle', 'tux', 'udder',
|
|
|
|
'vader-koala', 'vader', 'www',]
|
|
|
|
'vader-koala', 'vader', 'www']
|
|
|
|
|
|
|
|
|
|
|
|
# sections in config file
|
|
|
|
# sections in config file
|
|
|
|
DEFAULTS = 'defaults'
|
|
|
|
DEFAULTS = 'defaults'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# FIXME: add deprecation warning when these get set
|
|
|
|
# FIXME: add deprecation warning when these get set
|
|
|
|
#### DEPRECATED VARS ####
|
|
|
|
# DEPRECATED VARS
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### If --tags or --skip-tags is given multiple times on the CLI and this is
|
|
|
|
# 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
|
|
|
|
# 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
|
|
|
|
# overwrite any previous ones. Behaviour is overwrite through 2.2. 2.3
|
|
|
|
# overwrites but prints deprecation. 2.4 the default is to merge.
|
|
|
|
# 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', True, value_type='boolean')
|
|
|
|
MERGE_MULTIPLE_CLI_TAGS = get_config(p, DEFAULTS, 'merge_multiple_cli_tags', 'ANSIBLE_MERGE_MULTIPLE_CLI_TAGS', True, value_type='boolean')
|
|
|
|
|
|
|
|
|
|
|
|
#### GENERALLY CONFIGURABLE THINGS ####
|
|
|
|
# GENERALLY CONFIGURABLE THINGS
|
|
|
|
DEFAULT_DEBUG = get_config(p, DEFAULTS, 'debug', 'ANSIBLE_DEBUG', False, value_type='boolean')
|
|
|
|
DEFAULT_DEBUG = get_config(p, DEFAULTS, 'debug', 'ANSIBLE_DEBUG', False, value_type='boolean')
|
|
|
|
DEFAULT_VERBOSITY = get_config(p, DEFAULTS, 'verbosity', 'ANSIBLE_VERBOSITY', 0, value_type='integer')
|
|
|
|
DEFAULT_VERBOSITY = get_config(p, DEFAULTS, 'verbosity', 'ANSIBLE_VERBOSITY', 0, value_type='integer')
|
|
|
|
DEFAULT_HOST_LIST = get_config(p, DEFAULTS, 'inventory', 'ANSIBLE_INVENTORY', '/etc/ansible/hosts', value_type='path')
|
|
|
|
DEFAULT_HOST_LIST = get_config(p, DEFAULTS, 'inventory', 'ANSIBLE_INVENTORY', '/etc/ansible/hosts', value_type='path')
|
|
|
@ -254,7 +255,7 @@ ALLOW_WORLD_READABLE_TMPFILES = get_config(p, DEFAULTS, 'allow_world_readable_tm
|
|
|
|
DEFAULT_SELINUX_SPECIAL_FS = get_config(p, 'selinux', 'special_context_filesystems', None, 'fuse, nfs, vboxsf, ramfs, 9p', value_type='list')
|
|
|
|
DEFAULT_SELINUX_SPECIAL_FS = get_config(p, 'selinux', 'special_context_filesystems', None, 'fuse, nfs, vboxsf, ramfs, 9p', value_type='list')
|
|
|
|
DEFAULT_LIBVIRT_LXC_NOSECLABEL = get_config(p, 'selinux', 'libvirt_lxc_noseclabel', 'LIBVIRT_LXC_NOSECLABEL', False, value_type='boolean')
|
|
|
|
DEFAULT_LIBVIRT_LXC_NOSECLABEL = get_config(p, 'selinux', 'libvirt_lxc_noseclabel', 'LIBVIRT_LXC_NOSECLABEL', False, value_type='boolean')
|
|
|
|
|
|
|
|
|
|
|
|
### PRIVILEGE ESCALATION ###
|
|
|
|
# PRIVILEGE ESCALATION
|
|
|
|
# Backwards Compat
|
|
|
|
# Backwards Compat
|
|
|
|
DEFAULT_SU = get_config(p, DEFAULTS, 'su', 'ANSIBLE_SU', False, value_type='boolean')
|
|
|
|
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_USER = get_config(p, DEFAULTS, 'su_user', 'ANSIBLE_SU_USER', 'root')
|
|
|
@ -363,12 +364,12 @@ RETRY_FILES_ENABLED = get_config(p, DEFAULTS, 'retry_files_enabled',
|
|
|
|
RETRY_FILES_SAVE_PATH = get_config(p, DEFAULTS, 'retry_files_save_path', 'ANSIBLE_RETRY_FILES_SAVE_PATH', None, value_type='path')
|
|
|
|
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')
|
|
|
|
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')
|
|
|
|
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')
|
|
|
|
MAAX_FILE_SIZE_FOR_DIFF = get_config(p, DEFAULTS, 'max_diff_size', 'ANSIBLE_MAX_DIFF_SIZE', 1024 * 1024, value_type='integer')
|
|
|
|
|
|
|
|
|
|
|
|
# CONNECTION RELATED
|
|
|
|
# CONNECTION RELATED
|
|
|
|
USE_PERSISTENT_CONNECTIONS = get_config(p, DEFAULTS, 'use_persistent_connections', 'ANSIBLE_USE_PERSISTENT_CONNECTIONS', False, value_type='boolean')
|
|
|
|
USE_PERSISTENT_CONNECTIONS = get_config(p, DEFAULTS, 'use_persistent_connections', 'ANSIBLE_USE_PERSISTENT_CONNECTIONS', False, value_type='boolean')
|
|
|
|
ANSIBLE_SSH_ARGS = get_config(p, 'ssh_connection', 'ssh_args', 'ANSIBLE_SSH_ARGS', '-C -o ControlMaster=auto -o ControlPersist=60s')
|
|
|
|
ANSIBLE_SSH_ARGS = get_config(p, 'ssh_connection', 'ssh_args', 'ANSIBLE_SSH_ARGS', '-C -o ControlMaster=auto -o ControlPersist=60s')
|
|
|
|
### WARNING: Someone might be tempted to switch this from percent-formatting
|
|
|
|
# WARNING: Someone might be tempted to switch this from percent-formatting
|
|
|
|
# to .format() in the future. be sure to read this:
|
|
|
|
# to .format() in the future. be sure to read this:
|
|
|
|
# http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/ and understand
|
|
|
|
# http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/ and understand
|
|
|
|
# that it may be a security risk to do so.
|
|
|
|
# that it may be a security risk to do so.
|
|
|
@ -445,4 +446,3 @@ BLACKLIST_EXTS = ('.pyc', '.swp', '.bak', '~', '.rpm', '.md', '.txt')
|
|
|
|
IGNORE_FILES = ["COPYING", "CONTRIBUTING", "LICENSE", "README", "VERSION", "GUIDELINES"]
|
|
|
|
IGNORE_FILES = ["COPYING", "CONTRIBUTING", "LICENSE", "README", "VERSION", "GUIDELINES"]
|
|
|
|
INTERNAL_RESULT_KEYS = ['add_host', 'add_group']
|
|
|
|
INTERNAL_RESULT_KEYS = ['add_host', 'add_group']
|
|
|
|
RESTRICTED_RESULT_KEYS = ['ansible_rsync_path', 'ansible_playbook_python']
|
|
|
|
RESTRICTED_RESULT_KEYS = ['ansible_rsync_path', 'ansible_playbook_python']
|
|
|
|
|
|
|
|
|
|
|
|